System and method for protecting communication devices from denial of service attacks

A system for preventing successful denial of service attacks comprises a first communication device, a second communication device, and a network. The first and second communication devices establish a communication session via the network. Based on various information, such as a pre-shared secret, one of the communication devices determines a network access filter value and compares this value to at least one data frame in order to authenticate such data frame without committing significant computing resource and any memory space. By updating the network access filter over time, an unauthorized user who discovers the outdated network access filter values is prevented from successfully launching a denial of service attack.

RELATED ART

A denial of service (DoS) attack is a well-known problem for networks and can significantly disrupt the operation and performance of network resources. In a denial of service attack, a malicious user of the network sends a large number of message frames to a network device within a short period of time. Servicing the large number of message frames usurps a significant amount of the device's processing resources and capabilities thereby preventing the device from servicing message frames from legitimate users for at least a finite period of time. Indeed, in some circumstances, denial of service attacks have been known to cause a network device to temporarily “crash” such that it is incapable of servicing any message frames from legitimate users for a significant period of time.

Denial of service attacks can be quite costly, especially for network devices that sell products or otherwise generate revenue during operation. In this regard, even if a denial of service causes a network device to crash for only a small amount of time, the lost revenue resulting from the period of inoperativeness can be quite extensive. Thus, techniques have been developed for protecting against denial of service attacks. However, many of the conventional techniques used to protect against denial of service attacks have vulnerabilities that malicious users can exploit in order to successfully launch a denial of service attack.

For example, some network devices maintain a list of authorized users. In such an example, a network device stores a user identifier (ID) unique to each authorized user. As an example, a user's internet protocol (IP) address or password may be stored as a user ID. Before servicing a message frame, the device finds the user ID within the frame and compares it to the list of stored user IDs. If there is a match, the device authenticates the message (i.e., validates the message as being from an authorized user) and processes the message frame. If there is not a match, the device discards the message frame without processing it further. Thus, the device does not significantly process a message frame unless it has been authenticated.

The foregoing techniques have been successful in reducing the number and frequency of successful denial of service attacks. However, it is possible for a malicious user to discover a valid user ID and to thereafter use the misappropriated user ID to successfully launch an attack against a network device. In this regard, using the misappropriated user ID, it is possible for the malicious user to spoof the device such that it authenticates the message frames sent by the malicious user. In such a situation, the malicious user may successfully launch a spoofed attack even if the network device utilizes user ID checking to protect against unauthorized access.

Of course, encrypting the user ID can help to prevent malicious users from discovering it. However, decryption of the user ID of a message frame would likely require the network device to save a state of the message frame and to perform various processing to recover the user ID. Thus, the device would still be susceptible to denial of service attacks. In this regard, it would be possible for a malicious user to transmit, to the network device, a sufficient number of message frames such that the device remains busy trying to decrypt the user IDs of the message frames regardless of whether the user IDs are valid. Thus, while it is decrypting the user IDs of such messages, the network device may be unable to receive and process message frames from authorized users. As a result, user IDs that are used to protect against denial of service attacks are normally unencrypted thereby making it easier for a malicious user to discover valid user IDs.

Moreover, better techniques are needed for protecting network resources against denial of service attacks.

DETAILED DESCRIPTION

The present disclosure generally pertains to systems and methods for protecting network resources from denial of service attacks. In one exemplary embodiment, a network device, referred to herein as a “responder,” stores a parameter, referred to herein as an “access filter value,” that is used to determine whether an incoming message frame has been transmitted from an authorized user. In this regard, another network device, referred to herein as a “user communication device,” includes logic for determining the access filter value stored at the responder and includes the access filter value in a message frame transmitted from the user communication device to the responder. The responder first compares the received access filter value to the stored access filter value. If such values match or otherwise correspond, the responder authenticates the message frame and further processes the message frame. However, if such values do not match or otherwise correspond, the responder discards the message frame. Thus, the responder processes authenticated message frames and discards unauthenticated message frames thereby preventing denial of service attacks from malicious users. Exemplary techniques for authenticating message frames are described in U.S. patent application Ser. No. 10/956,568, entitled “System and Method for Protecting Network Resources from Denial of Service Attacks,” and filed on Oct. 1, 2004, which is incorporated herein by reference.

Moreover, the comparison of the access filter values can be performed in a relatively short period of time, and it is unnecessary for the responder to save a state of the message frame before deciding whether the message frame should be discarded. In this regard, it is possible for the responder to accept or reject a current message frame before the next message frame is to be evaluated by the responder. Thus, even if a malicious user transmits a large number of frame messages in a short period of time, the responder should be able to reject such message frames without preventing the responder from processing other message frames from authorized users. Accordingly, the attempted denial of service attack can be prevented.

In one embodiment, the stored access filter value is updated from time-to-time (e.g., each time the responder receives a message frame from or transmits a message frame to the authorized user), and the logic at the user communication device is provided with sufficient information for determining the updated access filter value. Thus, even if a malicious user intercepts or otherwise discovers a previously-used access filter value, the malicious user will be unable to utilize this value to spoof the responder and thereby launch a successful denial of service attack. In this regard, the responder preferably does not authenticate message frames from the malicious user since the previously-used access filter value contained in such message frames does not match or otherwise correspond to the updated access filter value stored at the responder. Further, similar techniques may be employed to protect the user communication device12from a denial of service attack.

FIG. 1depicts a network communication system10in accordance with one exemplary embodiment of the present disclosure. As shown byFIG. 1, the system10comprises a user communication device12, such as a computer, coupled to a network15, such as the Internet, for example. As shown byFIG. 1, a responder18is remotely located from the device12and is also coupled to the network15. As used herein, a “responder” refers to any network resource (e.g., a server, gateway, firewall, virtual private network (VPN), etc.) that responds to message frames. User communication logic21within the device12is configured to communicate with responder logic25within the responder18.

In particular, message frames transmitted by the user communication logic21include a destination identifier, such as an Internet Protocol (IP) address, that identifies the responder18. Based on this destination identifier, the network15routes the foregoing message frames to the responder18, and the responder logic25receives and processes the message frames, as will be described in more detail hereafter. Similarly, message frames transmitted by the responder logic25include a destination identifier, such as an IP address, that identifies the user communication device12. Based on this destination identifier, the network15routes the foregoing message frames to the user communication device12, and the logic21receives and processes the message frames, as will be described in more detail hereafter.

FIG. 2depicts a more detailed view of the user communication device12. In the exemplary embodiment shown byFIG. 2, the user communication logic21is implemented in software and stored within memory31of the device12. However, in other embodiments, the user communication logic21may be implemented in hardware, software, or a combination thereof.

The exemplary embodiment of the user communication device12depicted byFIG. 2comprises one or more conventional processing elements33, such as a digital signal processor (DSP) or a central processing unit (CPU), that communicate to and drive the other elements within the device12via a local interface36, which can include one or more buses. When the user communication logic21is implemented in software, as shown byFIG. 2, the processing element33can be configured to execute instructions of the logic21. Furthermore, an input device38, for example, a keyboard or a mouse, can be used to input data from a user of the device12, and an output device42, for example, a printer or a monitor, can be used to output data to the user.

A network interface45, such as a modem, is coupled to the network15(FIG. 1) and enables the device12to communicate with the network15. Note that the network interface45may be coupled to the network15via one or more wireless or non-wireless channels. Further, clock49tracks time and provides time data indicative of the current time. As an example, the clock49may be configured to provide a set of time data, sometimes referred to as a “time stamp,” that is indicative of the current time when the time stamp is generated.

FIG. 3depicts a more detailed view of the responder18. In the exemplary embodiment shown byFIG. 3, the responder logic25is implemented in software and stored within memory51of the responder18. However, in other embodiments, the responder logic25may be implemented in hardware, software, or a combination thereof.

The exemplary embodiment of the responder18depicted byFIG. 3comprises one or more conventional processing elements53, such as a digital signal processor (DSP) or a central processing unit (CPU), that communicate to and drive the other elements within the responder18via a local interface56, which can include one or more buses. When the responder logic25is implemented in software, as shown byFIG. 3, the processing element53can be configured to execute instructions of the responder logic25. Furthermore, an input device58, for example, a keyboard or a mouse, can be used to input data from a user of the responder18, and an output device62, for example, a printer or a monitor, can be used to output data to the user.

A network interface65is coupled to the network15(FIG. 1) and enables the responder18to communicate with the network15. Note that the network interface65may be coupled to the network15via one or more wireless or non-wireless channels. Further, clock69tracks time and provides time data indicative of the current time. As an example, the clock69may be configured to provide a set of time data, sometimes referred to as a “time stamp,” that is indicative of the current time when the time stamp is generated.

Note that the user communication logic21and/or the responder logic25, when implemented in software, can be stored and transported on any computer-readable medium for use by or in connection with an instruction execution system or device, such as a computer-based system, processor-containing system, or other system that can fetch and execute instructions. In the context of this document, a “computer-readable medium” can be any medium that can contain, store, communicate, propagate, or transport a program for use by or in connection with an instruction execution system or device. Note that the computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via for instance optical scanning of the paper, then compiled, interpreted or otherwise processed in a suitable manner if necessary, and then stored in a computer memory.

The responder logic25is configured to maintain a table72of access filter values. The table72comprises an access filter value for each user that is authorized to access the responder18. In one embodiment, the table72comprises n number of entries, where n is any positive integer. As shown byFIG. 4, each entry has a user ID, such as an IP address, that identifies an authorized user, as well as the access filter value associated with such user. The entries may include other information as well.

Moreover, before a user is allowed to communicate with the responder18, the user ID and access filter value associated with the user are defined and stored in the table72. Further, the user is provided with information, referred to hereafter as “pre-shared secret,” that is to be used to determine the access filter value for authenticating the user. The secret is “pre-shared” in the sense that it is shared before establishment of the communication session between the responder18and the device12in which the access filter value is to be used to authenticate messages, as further described hereinbelow. In this regard, when the user utilizes the device12to transmit a message frame to the responder18, the user communication logic21is configured to include, in the message frame, the user ID and access filter value associated with the user. Although portions of the message frame may be encrypted, the user ID and access filter value are preferably unencrypted so that the responder18may quickly authenticate the message frame based on such parameters, as will be described in more detail below.

Instead of being pre-shared, the foregoing secret can be transmitted to the user communication device12over the network15at the beginning of the communication session between the device12and responder18. For example, the responder logic25may be configured to encrypt the pre-shared secret and transmit such information in a message frame over network15to the user communication device12. However, at this point, the user communication logic21does not have sufficient information to authenticate such message frame according to the techniques described herein. Thus, the user communication device12may be vulnerable to a denial of service attack assuming that the user communication logic21does not have an alternative way of authenticating the message frame containing the secret. In this regard, since the user communication logic21, in the instant example, must decrypt the message frame in order to discover the secret, the user communication logic21would presumably decrypt message frames sent by malicious users prior to receiving the secret and using this information to determine the initial filter value to be used for authentication of messages as described herein. Decryption of message frames from malicious users would require the user communication logic21to save a state of the message and utilize resources for the decryption process. Thus, if a denial of service attack is launched by a malicious user prior to the user communication logic21receiving the secret, the user communication logic21would likely be vulnerable to such attack.

To avoid the foregoing vulnerability at the user communication device12, the secret could be transmitted over the network15unencrypted. However, not encrypting the secret makes it easier for a malicious user to discover such information, thereby possibly compromising the security of the system10. In this regard, a malicious user may try to use the secret to determine a valid access filter value that is used to authenticate messages according to the techniques described herein.

To alleviate some of the foregoing concerns, the secret is preferably pre-shared. In this regard, rather than transmitting the secret over the network15during the communication session between the user communication device12and the responder18in either encrypted or unencrypted form, the secret is instead secretly provided to the user of the device12prior to the communication session. For example, the pre-shared secret may be mailed to the user of the device12via U.S. mail or some other form of parcel or letter delivery. In another example, the user of the device12is called via telephone and is verbally told, either by another person or via an electronically generated message, the pre-shared secret. In yet another example, the pre-shared secret is electronically transmitted to the user communication device12and/or responder via a secure communication channel. Any known or future-developed technique for establishing a pre-shared secret may be used, and it is possible for the user and/or user communication device12to generate at least a portion of the pre-shared secret and provide it to the operator and/or responder18.

In one exemplary embodiment, the user of device12completes a registration process before communication between the responder18and device12is allowed. For example, the user may personally contact an operator of the responder18via telephone or some other form of communication or meet the operator in person. As used herein, an “operator” can be any person that has authorized access to the responder18. The user may provide the operator with various information such as his or her name, address, telephone number, etc. Further, the operator provides the user with the pre-shared secret. For example, if the pre-shared secret comprises a randomly generated number, the operator may convey verbally or otherwise the randomly generated number to the user.

After exchanging information, the operator enters the pre-shared secret via input device58, if such information is not already available to the responder18. For example, the operator may type such information using a keyboard. Once the pre-shared secret is available to the responder18, the responder logic25uses the pre-shared secret to calculate the access filter value to be used to authenticate messages from the user. The responder logic25also correlates this access filter value with the user ID and stores this information in the table72so that the calculated access filter value may be used to authenticate at least one message from the user communication device21according to the techniques described herein.

In addition, the user enters the pre-shared secret via input device38. For example, the user may type the pre-filer information using a keyboard. Based on the pre-shared secret, the user communication logic21calculates the access filter value that is to be sent to the responder18to enable it to authenticate at least one message from the user communication device12according to the techniques described herein.

Moreover, using a pre-shared secret to calculate the access filter value helps to protect against denial of service attacks targeting the user communication device12. In this regard, since it is unnecessary for the user communication logic21to decrypt messages from the network15in order to discover the pre-shared secret, the user communication logic21can be configured to reject messages from the network15prior to calculating access filter values that can be used to authenticate messages between the user communication device12and responder18. Thus, if a malicious user tried to launch a denial of service attack by transmitting a large number of encrypted messages to the user communication device12prior to the calculation of an access filter value by the logic21, the user communication logic21can reject such messages without decrypting them. Therefore, such a denial of service attack should be thwarted.

Once the user communication logic21has access to the pre-shared secret and has determined the access filter value for authenticating the user, the user communication logic21uses the access filter value to communicate with the responder18. In this regard, when the user utilizes the device12to transmit a message frame to the responder18, the user communication logic21is configured to include, in the message frame, the user ID and access filter value associated with the user. For each message frame transmitted to the responder18, the responder logic25uses the user ID included in the message frame to retrieve, from the table72, the access filter value associated with the user that transmitted the message frame. In the instant example, the responder logic25searches the table72for the entry having the user ID, and retrieves the access filter value included in this entry. The responder logic25then compares the retrieved access filter value with the access filter value from the message frame.

If there is a correspondence between the compared values (e.g., if the compared values match), then the responder logic25authenticates the message frame as coming from an authorized user. In such an example, the responder logic25saves a state of the message frame to memory51and further processes the message frame. As an example, if a portion of the message frame is encrypted, the responder logic25may decrypt such portion. If the message frame includes a request for data, the responder logic25may be configured to transmit the requested data via one or more message frames to the user communication device12. Various other techniques for processing the authenticated message frame are possible in other examples.

However, if there is no correspondence between the compared access filter values (e.g., if the access filter value received from the user communication device12does not match the access filter value retrieved from the table72), then the responder logic25discards the message frame. In this regard, the message frame is preferably discarded before the responder logic25stores any state of the message frame to memory51or performs any significant processing of the message frame. Thus, if a malicious user transmits a message frame that does not include an access filter value associated with an authorized user, the responder logic25quickly discards the message frame once it arrives at the responder18. Moreover, even if a malicious user launches a denial of service attack by transmitting, to the responder18, a large number of message frames in a short amount of time, the responder18should be able to quickly discard such message frames without disrupting its operation in servicing other message frames from authorized users. In other words, the responder18should be able to successfully defend against the denial of service attack.

In one embodiment, the responder logic25updates an access filter value stored in the table72after using such value to authenticate an incoming message. In this regard, once a message frame from a user is authenticated, the responder logic25calculates a new access filter value for the user based on a predetermined algorithm that utilizes a dynamically generated value, such as a randomly generated number or a time stamp value from the clock69. The responder logic25then replaces the user's access filter value currently stored in the table72with the new access filter value. Thus, for the next message frame transmitted by the user, the responder logic25preferably uses the new access filter value to authenticate the message frame. Therefore, even if a malicious user discovers the previously-used access filter value, the malicious user should be prevented from using such value to launch a successful denial of service attack against the responder18.

However, for the user's next message frame to be authenticated by the responder18, the message frame should include the new access filter value that is used to replace the previously-used access filter value. Thus, once the responder logic25calculates the new access filter value, the logic25transmits, to the device12, sufficient information for enabling the user communication logic21to also calculate the new access filter value. For example, if a dynamically generated value is used by the responder logic25to calculate the new access filter value, as described above, the responder logic25may transmit the dynamically generated value to the user communication logic21. Note that the dynamically generated value may be encrypted according to any known or future-developed encryption scheme.

After receiving the dynamically generated value, the user communication logic21is configured to use this value to calculate the new access filter value. In this regard, the user communication logic21may be aware of the same algorithm used by the responder logic25to calculate the new access filter value and utilize this algorithm, in conjunction with the dynamically generated value, to also calculate the new access filter value. The user communication logic21then stores the new access filter value so that it is available for the next message frame to be transmitted to the responder18.

In this regard, when a new message frame is to be transmitted to the responder18, the user communication logic21retrieves the new access filter value and includes this value in the new message frame. Thus, when the responder18receives the new message frame, the responder logic25authenticates the new message frame based on the new access filter value. Accordingly, the aforedescribed update to the access filter value stored in table72may prevent an unauthorized user who discovers the previously-used access filter value from successfully launching a denial of service attack without preventing the authorized user from accessing the responder18.

Further, the user communication logic21and the responder logic25may be configured to employ similar techniques to authenticate messages transmitted from the responder18to the user communication device12. Since it is unnecessary for the user communication logic21or the responder logic25to decrypt messages during the communication session in order to authenticate the incoming packet, it is unnecessary for either the user communication logic21or the responder logic25to accept any encrypted messages that do not have a valid access filter value. Thus, both the user communication device12and responder18should be able to thwart a denial of service attack at any point during the communication session.

An exemplary operation of the responder logic25and user communication logic21will now be described with particular reference toFIGS. 5 and 6. In the example described hereafter, the responder logic25will be described as having an access filter value, referred to as “responder filter value” for authenticating messages received by the responder18, and the user communication logic21will be described as having a separate access filter value, referred to as “user filter value” for authenticating messages received by the user communication device12. In other embodiments, the same access filter value may be used by both the responder logic25and the user communication logic21, if desired.

Initially, a non-secure communication channel, referred to as “established channel,” is established between the user communication device12and the responder18via network15, as shown by block118ofFIG. 5and block215ofFIG. 6. Using the established channel, the user communication logic21and the responder logic25exchange various information, referred to as “exchanged information,” such as addresses, keys for encryption/decryption, and/or values that can be used in calculating initial access filter values. In addition, a pre-shared secret that, when combined with the exchanged information, is sufficient for enabling the user communication logic21to calculate an initial responder filter value, FR(0), is conveyed to the device12via some technique other than using the established communication channel. For example, the pre-shared secret may be verbally or otherwise conveyed from an operator of the transponder18to a user of the device12who then enters the information via input device58. In another example, the pre-shared secret may be electronically communicated to the device12via a channel other than the established channel. Preferably, such other channel is a secure channel in an effort to protect the pre-shared secret from unauthorized users. Any technique for establishing a pre-shared secret may be used.

The pre-shared secret may include a time stamp value or a randomly generated value and is available to the responder18. For example, in block118ofFIG. 5, the responder logic25may receive a time stamp from clock69(FIG. 3) and/or generate a random number via some random number generating algorithm. Alternatively, an operator of the responder18may obtain at least some of the pre-shared secret from another source and enter the pre-shared secret into the responder18via input device58(FIG. 3). If portions of the pre-shared secret are generated by the responder18and if the operator is to convey any of such information to the user, then the responder18may be configured to output (e.g., display) such portions to the operator via output device62or otherwise. Thus, both the responder18and the operator may have access to the pre-shared secret.

The pre-shared secret is ultimately received by the user communication logic21, as shown by block210ofFIG. 6. For example, if the operator of the responder18conveys the pre-shared secret to the user of device12, the user may interface such information with the communication device12, using input device38(FIG. 2) or otherwise. After receiving the pre-shared secret, the user communication logic21uses such information to calculate the initial responder filter value, FR(0), and then stores FR(0)in memory31, as shown by block221ofFIG. 6. Based on the pre-shared secret, the responder logic25also calculates FR(0)and then stores FR(0)in memory51, as shown by block121ofFIG. 5. In storing FR(0), the responder logic25correlates FR(0)with the user ID identifying the user of the device12. As an example, the responder logic25may store FR(0)and the user ID in the same entry of the table72.

After performance of blocks121and221, both the user communication logic21and the responder logic25have access to FR(0). The responder18and user communication device21then communicate using calculated access filter values for authentication. In the current example, which will be described in more detail hereafter, an access filter value is updated each time it is used to authenticate a message. In other examples, an access filter value may be updated at a different frequency and/or based on other factors, such as time, for example.

When the user communication logic21determines that a message frame should be transmitted to the responder18, the user communication logic21retrieves the responder filter value, FR(0), and the user ID associated with the user of the device12, as shown by blocks244and248ofFIG. 6. The user communication logic21also obtains at least one dynamically generated value, such as a time stamp or a random number, as shown by block249ofFIG. 6. Then, the user communication logic21calculates and stores a user filter value, FU(0), for authenticating the next message from the responder18, as shown by block252. The user communication logic21then transmits a message frame to the responder18, as shown by block254. In defining the message frame, the user communication logic21inserts the responder filter value, FR(0), retrieved in block248and the dynamically generated value used to calculate the new user filter value, FU(0), in block252. Any data in the message and/or the dynamically generated value may be encrypted, but FR(0)is preferably not encrypted.

When the message frame is received at the responder18, the responder logic25makes a “yes” determination in block126ofFIG. 5and proceeds to block129. In particular, the responder logic25retrieves, from the responder table72, the access filter value (i.e., FR(0)) that is correlated with the user ID of the message frame. The responder logic25then compares the retrieved value to the responder filter value included in the received message frame. In the instant example, the compared values match since the message frame has been transmitted from an authorized user, and the responder logic25makes a “yes” determination in block133. Thus, the responder logic25authenticates the message frame in block135. After authenticating the message frame, the responder logic25saves the message frame to memory51and processes the message frame in block136. For example, if a portion of the message frame is encrypted, the responder logic25may decrypt the encrypted portion or instruct another component (not specifically shown) of the responder18to decrypt the encrypted portion or otherwise process the message frame.

Note that, if the received message frame was transmitted by an unauthorized user instead of the authorized user of the device12, then such unauthorized user would be unable to include FR(0)in the message. Thus, in such an example, the responder logic25would discard the message frame in block139without saving and processing the message frame in block136.

In addition, as shown by block141ofFIG. 5, the responder logic25uses the dynamically generated value included in the received message frame by the user communication logic21, to calculate the new user filter value, FU(0), to be used to authenticate the next message from the responder18.

In block144, the responder logic25determines whether to transmit a message frame to the user communication device12. When the responder logic25determines that a new frame is to be transmitted, the responder logic25makes a “yes” determination in block144after performing block136. Thus, responder logic25retrieves the current user filter value, FU(0), as shown by block148ofFIG. 5. The responder logic25also obtains a dynamically generated value, such as a time stamp or randomly generated value, as shown by block149ofFIG. 5. Then, the user communication logic21calculates and stores a new responder filter value, FR(1), as shown by block152. The responder logic25replaces the previous responder filter value, FR(0), stored in the table72with the new access filter value, FR(1). In block154, the responder logic25transmits a message frame that includes the retrieved user filter value, FU(0), and the dynamically generated value used in block152to calculate FR(1). Any data and/or the dynamically generated value may be encrypted, but FU(0)is preferably not encrypted.

Based on the dynamically generated value included in the message frame, the user communication logic21is able to calculate the new responder filter value, FR(1), in block252ofFIG. 6and to include FR(1)in the next message frame transmitted from the user communication device12to the responder18. Therefore, when the responder18receives such a message frame, the responder logic25will make a “yes” determination in block133and authenticate the message frame in block135.

However, if the responder18receives a message frame from an unauthorized user who has discovered FR(0)and inserted FR(0)in the message frame, the responder logic25will make a “no” determination in block133upon receipt of such a message frame and discard the message frame in block139without authenticating it. Thus, even if an unauthorized user discovers FR(0)by, for example, analyzing one of the message frames communicated between the responder18and user communication device12, the unauthorized user will be prevented from using FR(0)to launch a successful denial of service attack.

When the user communication logic21receives the message frame containing FU(0), which includes the dynamically generated value used by the responder18to calculate the new access control value, FR(1), the user communication logic21retrieves the user filter value, FU(0), previously calculated in block252ofFIG. 6and compares the retrieved value to the user filter value included in the received message frame. In the instant example, the compared values match since the message frame has been transmitted from the responder18, and the user communication logic21makes a “yes” determination in block233. Thus, the user communication logic21authenticates the message frame in block235. After authenticating the message frame, the user communication logic21saves the message frame to memory31and processes the message frame in block236. For example, if a portion of the message frame is encrypted, the user communication logic21may decrypt the encrypted portion or instruct another component (not specifically shown) of the device12to decrypt the encrypted portion or otherwise process the message frame.

Note that, if the received message frame was transmitted by an unauthorized user instead of the responder18, then such unauthorized user would be unable to include FU(0)in the message. Thus, in such an example, the user communication logic21would discard the message frame in block239without saving and processing the message frame in block136.

In addition, as shown by block241, the user communication logic21uses the dynamically generated value included in the received message frame by the responder logic25, to calculate the new responder filter value, FR(1), to be used to authenticate the next message frame transmitted to the responder18by the device12.

Moreover, the responder18and the user communication device12continue transmitting messages and updating access filter values until the session between the responder18and the device12is terminated.

It should be noted that the use of a user ID, as described above, is unnecessary. For example, the responder logic25can be configured to store different access filter values for different users without correlating such access filter values with user IDs. In such an example, the responder logic25may be configured to search the stored access filter values for a value that matches an access filter value from a received message frame. If such a stored access filter value is found, the responder logic25may be configured to authenticate the message frame. However, if no such stored access filter value is found, the responder logic25may be configured to discard the message frame without authenticating it. In one exemplary embodiment, the responder logic25locates the appropriate access filter value based on pseudo IDs, which are described in U.S. Provisional Patent Application Ser. No. 60/799,606. For example, as described in U.S. Provisional Patent Application Ser. No. 60/799,606, pseudo ID is a scheme that allows the verification of IPACF/Identity-Based Dynamic Access Control Filter (IDF) filter values to become a quick process. The filter value is tabulated as a function of pseudo ID so that the filter value verification process is simply a memory read of an element in a filter value table72using the given pseudo ID and a comparison using a conditional lump. In one implementation, the following pseudo code may be used to store and update both the pseudo ID and filter value table72on the responder18:

To further illustrate various aspects of the system10, an exemplary embodiment will be described hereafter in which both the user communication device12and the responder18protect against denial of service attacks.

In this regard, a private key, KU, associated with the user of the device12, a private key, KR, associated with the responder18, and a random number, Ni, are exchanged between the user communication device12and responder18. The values KU, KR, and Nimay be pre-shared secrets. Thus, a secure connection may be used to exchange such information, or other techniques for securely delivering the information to the user communication device12and responder18may be employed. Although other values of the private keys are possible in other embodiments, KUand KRare defined by the following equations in the instant example:
KU=h(Nui)[Uid∥Pu∥Tu∥Nui]  (1)
KR=h(NRi)[Rid∥PR∥TR∥NRi]  (2)
where Uidis a user identifier (i.e., a value that uniquely identifies the user communication device12or a user of the user communication device12), Puis a password provided by the user of the user communication device12, Tuis a time stamp from clock49, Nuiis a nonce value known only by the user communication device12, Ridis a responder identifier (i.e., a value that uniquely identifies the responder18or a user of the responder18), PRis a password of the responder18, TRis a time stamp from clock69, NRiis a nonce value known only by the responder18, h(Nui) and h(NRi) are both HMAC functions using key Nuiand NRi, respectively.

In addition to the foregoing values, the responder logic25and the user communication logic21preferably have access to various pre-shared secrets. The pre-shared secrets may be shared via a secured channel separate from the non-secured channel to be used to communicate between the communication logic21and the responder logic25. In the instant example, such pre-shared secrets comprise a nonce value, NINI, and a time stamp value, TINI. NINImay be any randomly generated value, and TINImay be generated by the clock69at the responder18. However, in other embodiments, other types of information may be used as pre-shared secrets.

After KU, KR, and Niare defined, the responder logic25calculates an access filter value correlated with the user of the device12and stores this value in the responder table72. To calculate the access filter value, the responder logic25first calculates a value, referred to hereafter as seed value, SRi, using the following equation:
h(Ni61 KR)[Ni∥NINI∥TINI]≡SRi(3)
In one exemplary embodiment, SRiis a 512-bit value, although such a value may comprise other numbers of bits in other embodiments.

After determining SRi, the responder logic25calculates a keyed hash value, MACR(0), which in the instant example is a 512-bit value, although such value may comprise other numbers of bits in other embodiments. In this regard, the responder logic25calculates MACR(0)using the following equation:
h(SRi)Ni⊕NINI[Uid∥KU∥Ni∥NINI∥TINI]≡MACR(0)(4)
Note that Ni⊕NINIis the number of rounds used to conduct the hash function. From a performance standpoint, it may be desirable that the number be truncated to a certain number of bits, such as 10 (i.e., 0 to 1023 rounds). In the instant embodiment, MACR(0)is truncated in three parts, which include the 128 most significant bits, fR(t), and the 128 least significant bits, SR(t), as shown inFIG. 7. The parameter, t, is the index of a time-dependent function, and t=0 is the first seed used to generate the initial access filter value.

fR(0)is the seed used to generate the initial access filter value, FR(0), according to the following equation:
h(SRi)[KU∥Ni∥MACR(0)∥TINI∥fR(0)]≡FR(0)(5)
In one exemplary embodiment, FR(0)is a 160-bit value, although such a value may comprise a different number of bits in other embodiments. After calculating the initial access filter value, FR(0), the responder logic25stores FR(0)in the responder table72. As described herein, the next message frame received from the user communication device12should include FR(0)in order for the responder logic25to authenticate the message frame.

After KU, KR, and Niare defined, the user communication logic21uses these values to calculate FR(0)according to the same algorithm used by the responder logic25to calculate FR(0)at the responder18. The user communication logic21then stores FR(0)in memory31so that this value may later be used to transmit a message frame to the responder18, as will be described in more detail hereafter.

The user communication logic21also calculates an access filter value, FU(0), to be used for authenticating the responder18, as will be described in more detail hereafter. In this regard, the user communication logic21calculates FU(0)according the same algorithm used to calculate FR(0)except that the user communication logic21uses different values. In particular, the user communication logic21obtains a time stamp, TNU, from clock49and generates a random number, NU, using any known or future-developed random number generation algorithm. Then, the user communication logic21calculates a value, referred to hereafter as seed value, SUi, using the following equation:
h(KU⊕Ni)[Ni∥NINI∥NU∥TNU]≡SUi(6)
In one exemplary embodiment, SUiis a 512-bit value, although such a value may comprise other numbers of bits in other embodiments.

After determining SUi, the user communication logic21calculates a keyed hash value, MACU(0), which in the instant example is a 512-bit value, although such value may comprise other numbers of bits in other embodiments. In this regard, the user communication logic21calculates MACU(0)using the following equation:
hSUi)Ni⊕NU[Uid∥KU∥Ni∥NININU∥TNU]≡MACU(0)(7)
Note that Ni⊕NUis the number of rounds used to conduct the hash function. From a performance standpoint, it may be desirable that the number be truncated to a certain number of bits, such as 10 (i.e., 0 to 1023 rounds). In the instant embodiment, MACU(0)is truncated in three parts, which include the 128 most significant bits, fU(t), and the 128 least significant bits SU(t), as shown inFIG. 8. The parameter, t, is the index of a time-dependent function, and t=0 is the first seed used to generate the initial user access filter value, FU(0).

FU(0)is the seed used to generate the initial access filter value, FU(0), according to the following equation:
h(SUi)[KU∥NU∥MACU(0)∥TNU∥TINI∥fU(0)]≡FU(0)(8)
In one exemplary embodiment, FU(0)is a 160-bit value, although such a value may comprise a different number of bits in other embodiments. After calculating the initial access filter value, FU(0), the responder logic25stores FU(0)in a user table181(FIG. 2). As described herein, the next message frame received from the responder18should include FU(0)in order for the user communication logic21to authenticate the message frame.

At some point, the user of the device12initiates a transmission from the user communication device12to the responder18. As an example, assume that the user of user communication device12submits a request to retrieve data stored at the responder18. Thus, the user communication logic21transmits to the responder18a message frame, referred to herein as “Frame 1,” including data that defines the user's request. To enable the responder18to authenticate the message frame, the user communication logic21retrieves FR(0), and inserts this value into the message frame. To enable the responder18to calculate FU(0), the user communication logic21also inserts TNUand NUinto the message frame. If the responder logic25is configured to access the responder table72based on Uid, the user communication logic21also inserts Uidinto the message frame.

To provide a more secure environment, the user communication logic21may encrypt the data defining the request, as well as NUand TNUusing any known or future-developed encryption technique. As an example, the user communication logic21may encrypt NUand TNUvia AES encryption using KUas an encryption key.

Accordingly, referring toFIG. 10, the user communication logic21transmits Frame1, which is represented as reference arrow401. In the nomenclature used inFIG. 10, the expression E[ ] represents encrypted terms. Thus, “E[NU, TNU]” for Frame1indicates that Nuand TNUare included in Frame1and are encrypted. On the other hand, “FR(0)” for Frame1indicates that FR(0)is included in Frame1in unencrypted form.

Upon receiving Frame1, the responder logic25compares the access filter value (i.e., FR(0)) within the message frame to the access filter value (i.e., FR(0)) correlated with the user by the responder table72. In the instant example, the compared values match, and the responder logic25therefore authenticates Frame1. Thus, the responder logic25stores a state of the message frame and further processes the message frame.

As an example, the responder logic25may decrypt the request for data, as well as NUand TNU, included in the message frame. Based on NUand TNU, the responder logic25calculates FU(0)according to the same algorithm used by the user communication logic21to calculate FU(0)at the user communication device12. The responder logic25then stores FU(0)in memory51so that this value may later be used to transmit a message frame to the user communication device12, as will be described in more detail hereafter.

The responder logic25is also configured to obtain a new time stamp, TRF(1), and to calculate a new access filter value, FR(1), based on TRF(1). In particular, to calculate FR(1), the responder logic25uses equations 1 and 3-5 described above except that the responder logic25uses TRF(1)in place of TNR. In the responder table72, the responder logic25then overwrites FR(0)with FR(1). Thus, for the next message frame received from user communication device12, FR(1)instead of FR(0)will be used to authenticate the message frame.

In processing Frame1received from user communication device12, the responder logic25retrieves the data requested by the user. The responder logic25then transmits a message frame, referred to herein as “Frame 2,” including this data to the user communication device12. To enable the user communication logic21to authenticate the message frame according to techniques described herein, the responder logic25includes FU(0)in the message frame. Further, to enable the user communication logic21to calculate the new access filter value, FR(1), to be used in the next message frame transmitted from the user communication device12to the responder18, the responder logic25also inserts TRF(1)in Frame2. Thus, upon receiving the message frame from the responder18, the user communication logic21is able to validate the message frame based on FU(0)and to calculate FR(1).

Further, in one embodiment, the private keys KUand KRare updated every session. Thus, upon receiving Frame1, the responder logic25generates a new value for KR, referred to hereafter as KR(next), which will be used as KRin the next session between the responder18and the user communication device12. The responder logic25encrypts KR(next)and transmits KR(next)in encrypted form in Frame2, which is represented as arrow402inFIG. 10.

Upon receiving Frame2, the user communication logic21compares the access filter value (i.e., FU(0)) within the message frame to the access filter value (i.e., FU(0)) stored at the device12. In the instant example, the compared values match, and the user communication logic21therefore authenticates Frame2. Thus, the user communication logic21stores a state of the message frame and further processes the message frame.

As an example, the user communication logic21may decrypt the data, as well as TRF(1)and KR(next), included in the message frame. Based on TRF(1), the user communication logic21calculates FR(1)according to the same algorithm used by the responder logic25to calculate FR(1). The user communication logic21then stores FR(1)in memory31so that this value may later be used to transmit a message frame to the responder18, as will be described in more detail hereafter.

The user communication logic21is also configured to obtain a new time stamp, TUF(1), and to calculate a new access filter value, FU(1), based on TUF(1). The user communication logic21then overwrites FU(0)with FU(1). Thus, for the next message frame received from responder18, FU(1)instead of FU(0)will be used to authenticate the message frame.

In transmitting the next frame, referred to as “Frame 3,” the user communication logic21includes FR(1)to enable the responder logic25to authenticate the message frame according to techniques described herein. Further, to enable the responder logic25to calculate the new access filter value, FU(1), to be used in the next message frame transmitted from the responder18to the user communication device12, the user communication logic21also inserts TUF(1)in Frame3. Thus, upon receiving the message frame from the device12, the responder logic25is able to validate the message frame based on FR(1)and to calculate FU(1).

Further, the user communication logic21generates a new value for KU, referred to hereafter as KU(next), which will be used as KUin the next session between the responder18and the user communication device12. The user communication logic21encrypts KU(next)and transmits KU(next)in encrypted form in Frame3, which is represented as arrow403inFIG. 10.

Moreover, the access filter values may continually be updated and used, as described above, to authenticate the message frames being communicated between the responder18and user communication device12. For example, as shown byFIG. 10, the responder logic25includes an updated filter value for the user (i.e., FU(1)) in frame4, which is represented as arrow404, and the user communication logic21includes an updated filter value for the responder (i.e., FR(2)) in frame5, which is represented as arrow405.

Note that, to provide a more secure environment, the key KU, as well as Nuiand TU, may be updated each time a user initiates a new session. In this regard, a session refers to the time period between the times that the user of the device12logs-in and logs-off the device12. When the user logs in, the user communication logic21may be configured to generate a new KU, Nui, and TU. During the session, such values may be communicated to the responder18via one or more message frames. Thus, for the next session initiated by the user, the new values of KU, Nui, and TUmay be used in lieu of the previous values of KU, Nui, and TUto calculate the access filter values as described herein.

If desired, the user communication logic21and/or the responder logic25can be segmented into separate components that run independently of each other in an effort to enhance performance. For example,FIG. 9depicts an exemplary embodiment of the user communication device12. As shown byFIG. 9, the user communication logic21is segmented into two sets of logic, authentication logic303and frame processing logic305. In the example shown byFIG. 9, the authentication logic303and the frame processing logic305are implemented in software and stored in memory31, but the authentication logic303and/or the frame processing logic305may be implemented in hardware or a combination of hardware and software in other embodiments.

The authentication logic303runs on a first processing element33and the frame processing logic305separately runs on a second processing element333.

Further, the authentication logic303performs authentication of message frames received from network15according to the techniques described herein, and the processing element333further processes authenticated message frames. In this regard, when a message frame is received from the network15, the authentication logic303determines whether the message frame is from an authorized user according to the techniques described herein. If not, the authentication logic303discards the message frame, and the frame processing logic305is not burdened with the task of processing the message frame. However, if the message frame is authenticated by logic303, the logic303stores the message frame to a location in memory31and passes a pointer to such location to the frame processing logic305. The frame processing logic305then uses the pointer to access and further process the message frame. Since the frame processing logic305runs on a separate processing element333, the authentication tasks performed by the authentication logic303do not burden the processing element333that executes the frame processing logic305. Thus, authentication tasks should not have a significant impact, if any, to the performance of the frame processing logic305and the memory space of frame storage.

In other examples other numbers of processing elements may be employed, and the user communication logic21may be segmented into a different number of components. Also, tasks may be allocated to the various components of the logic21in a different manner than that described above. In addition, having the different components of the logic21run on separate hardware resources is not necessary to achieve some of the performance benefits described above. For example, it is possible for the processing element33to be multi-threaded and for one component of the logic21to run on one thread while another component runs on another thread. Further, multi-core processors are now being developed and are available. It is possible to have one core of a processor to execute one component of the logic21and for another core of the same processor to run another component of the logic21. Moreover, various modifications to the embodiments described herein would be readily apparent to one of ordinary skill in the art.

In addition, the responder logic25may be segmented into multiple components, as described above for the user communication logic21, in an attempt to enhance the performance of the responder logic25via similar techniques.