Patent Publication Number: US-7716726-B2

Title: System and method for protecting a computing device from computer exploits delivered over a networked environment in a secured communication

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
   This application claims the benefit of U.S. Provisional Application No. 60/544,772, filed Feb. 13, 2004. 

   FIELD OF THE INVENTION 
   The present invention relates to a system and method for protecting a computing device from computer exploits delivered over a networked environment in a secured communication. 
   BACKGROUND OF THE INVENTION 
   As more and more computers, and other computing devices, are inter-connected through various networks, such as the Internet, computer security has become increasingly more important, particularly from invasions or attacks delivered over a network or over an information stream. As those skilled in the art will recognize, these attacks come in many different forms, including, but certainly not limited to, computer viruses, computer worms, system component replacements, denial of service attacks, even misuse/abuse of legitimate computer system features, all of which exploit one or more computer system vulnerabilities for illegitimate purposes. While those skilled in the art will realize that the various computer attacks are technically distinct from one another, for purposes of the present invention and for simplicity in description, all of these attacks will be generally referred to hereafter as computer exploits, or more simply, exploits. 
   When a computer system is attacked or “infected” by a computer exploit, the adverse results are varied, including disabling system devices; erasing or corrupting firmware, applications, or data files; transmitting potentially sensitive data to another location on the network; shutting down the computer system; or causing the computer system to crash. Yet another pernicious aspect of many, though not all, computer exploits is that an infected computer system is used to infect other computers. 
     FIG. 1  is a pictorial diagram illustrating an exemplary networked environment  100  over which a computer exploit is commonly distributed. As shown in  FIG. 1 , the typical exemplary networked environment  100  includes a plurality of computers  102 - 108  all inter-connected via a communication network  110 , such as an intranet or via a larger communication network including the global TCP/IP network commonly referred to as the Internet. For whatever reason, a malicious party on a computer connected to the network  110 , such as computer  102 , develops a computer exploit  112  and releases it on the network. The released computer exploit  112  is received by, and infects, one or more computers, such as computer  104 , as indicated by arrow  114 . As is typical with many computer exploits, once infected, computer  104  is used to infect other computers, such as computer  106  as indicated by arrow  116 , which in turn infects yet other computers, such as computer  108  as indicated by arrow  118 . Clearly, due to the speed and reach of the modern computer networks, a computer exploit  112  can “grow” at an exponential rate, and quickly become a local epidemic that quickly escalates into a global computer pandemic. 
   A traditional defense against computer exploits, and particularly computer viruses and worms, is anti-virus software. Generally, anti-virus software scans incoming data, arriving over a network, looking for identifiable patterns associated with known computer exploits. Upon detecting a pattern associated with a known computer exploit, the anti-virus software may respond by removing the computer virus from the infected data, quarantining the data, or deleting the “infected” incoming data. Unfortunately, anti-virus software typically works with “known,” identifiable computer exploits. Frequently, this is done by matching patterns within the data to what is referred to as a “signature” of the exploit. One of the core deficiencies in this exploit detection model is that an unknown computer exploit may propagate unchecked in a network until a computer&#39;s anti-virus software is updated to identify and respond to the new computer exploit. 
   As anti-virus software has become more sophisticated and efficient at recognizing thousands of known computer exploits, so too have the computer exploits become more sophisticated. For example, many recent computer exploits are now polymorphic, or in other words, have no identifiable pattern or “signature” by which they can be recognized by anti-virus software in transit. These polymorphic exploits are frequently unrecognizable by anti-virus software because they modify themselves before propagating to another computer system. 
   Another defense that is common today in protecting against computer exploits is a hardware or software network firewall. As those skilled in the art will recognize, a firewall is a security system that protects an internal network from unauthorized access originating from external networks by controlling the flow of information between the internal network and the external networks. All communications originating outside of the firewall are first sent to a proxy that examines the communication, and determines whether it is safe or permissible to forward the communication to the intended target. Unfortunately, properly configuring a firewall so that permissible network activities are uninhibited and that impermissible network activities are denied is a sophisticated and complicated task. In addition to being technically complex, a firewall configuration is difficult to manage. When firewalls are improperly configured, permissible network traffic may be inadvertently shut down and impermissible network traffic may be allowed through, compromising the internal network. For this reason, changes to firewalls are generally made infrequently, and only by those well versed in the subject of technical network design. 
   As yet a further limitation of firewalls, while a firewall protects an internal network, it does not provide any protection for specific computers. In other words, a firewall does not adapt itself to a specific computer&#39;s needs. Instead, even if a firewall is used to protect a single computer, it still protects that computer according to the firewall&#39;s configuration, not according to the single computer&#39;s configuration. 
   Yet another issue related to firewalls is that they do not provide protection from computer exploits originating within the borders established by a firewall. In other words, once an exploit is able to penetrate the network protected by a firewall, the exploit is uninhibited by the firewall. This situation frequently arises when an employee takes a portable computer home (i.e., outside of the corporate firewall protection) and uses it at home in a less secured environment. Unknown to the employee, the portable computer is then infected. When the portable computer is reconnected to the corporate network within the protection of the firewall, the exploit is often free to infect other computers unchecked by the firewall. 
   As mentioned above, computer exploits now also leverage legitimate computer system features in an attack. Thus, many parties other than firewall and anti-virus software providers must now join in defending computers from these computer exploits. For example, operating system providers must now, for economic and contractual reasons, continually analyze their operating system functions to identify weaknesses or vulnerabilities that may be used by a computer exploit. For purposes of the present discussion, any avenue by which a computer exploit may attack a computer system will be generally referred to as a computer system vulnerability, or simply a vulnerability. 
   As vulnerabilities are identified and addressed in an operating system, or other computer system components, drivers, applications, the provider will typically release a software update to remedy the vulnerability. These updates, frequently referred to as patches, should be installed on a computer system in order to secure the computer system from the identified vulnerabilities. However, these updates are, in essence, code changes to components of the operating system, device drivers, or software applications. As such, they cannot be released as rapidly and freely as anti-virus updates from anti-virus software providers. Because these updates are code changes, the software updates require substantial in-house testing prior to being released to the public. Unfortunately, even with in-house testing, a software update may cause one or more other computer system features to break or malfunction. Thus, software updates create a huge dilemma to parties that rely upon the computer systems. More specifically, does a party update their computer systems to protect them from the vulnerability and risk disrupting their computer systems&#39; operations, or does the party refrain from updating their computer systems and run the risk that their computer systems may be infected? 
   Under the present system, there is a period of time, referred to hereafter as a vulnerability window, that exists between when a new computer exploit is released on the network  110  and when a computer system is updated to protect it from the computer exploit. As the name suggests, it is during this vulnerability window that a computer system is vulnerable, or exposed, to the new computer exploit.  FIGS. 2A-2B  are block diagrams of exemplary timelines illustrating this vulnerability window. In regard to the following discussions regarding timelines, significant times or events will be identified and referred to as events in regard to a timeline. 
     FIG. 2A  illustrates a vulnerability window of computer systems with regard to one of the more recent, sophisticated class of computer exploits that are now being released on public networks. As will be described below, this new class of computer exploits take advantage of a system provider&#39;s proactive security measures to identify computer system vulnerabilities, and subsequently, create and deliver a computer exploit. 
   With reference to  FIG. 2A , at event  202 , an operating system provider identifies the presence of a vulnerability in the released operating system. For example, in one scenario, the operating system provider, performing its own internal analysis of a released operating system, uncovers a previously unknown vulnerability that could be used to attack a computer system. In an alternative scenario, the previously unknown vulnerability is discovered by third parties, including organizations that perform system security analyses on computer systems, and relays information regarding the vulnerability to the operating system provider. 
   Once the operating system provider is aware of the presence of the security vulnerability, the operating system provider addresses the vulnerability which, at event  204 , leads to the creation and release of a patch to secure any computer systems running the operating system. Typically, an operating system provider will make some type of announcement that there is a system patch available, along with a recommendation to all operating system users to install the patch. The patch is usually placed in a known location on the network  110  for downloading and installation onto affected computer systems. 
   Unfortunately, as happens all too often, after the operating system provider releases the patch, at event  206 , a malicious party downloads the patch and, using some reverse engineering as well as any information made public by the operating system or others, identifies the specifics regarding the “fixed” vulnerability in the operating system. Using this information, the malicious party creates a computer exploit to attack the underlying vulnerability. At event  208 , the malicious party releases the computer exploit onto the network  110 . While the goal of issuing a software patch, also known as a “fix,” is to correct an underlying vulnerability, the “fix” is often a complex piece of software code which itself, unfortunately, may create or contain a new vulnerability that could be attacked by a computer exploit created by a malicious party. Thus, in addition to evaluating what the “fix” corrects, the “fix” is also evaluated for potential vulnerabilities. 
   While a “fix” is available, the malicious party realizes that, for various reasons including those described above, not every vulnerable computer system will be immediately upgraded. Thus, at event  208 , the malicious party releases the computer exploit  112  onto the network  110 . The release of the computer exploit  112  opens a vulnerability window  212 , as described above, in which the vulnerable computer systems are susceptible to this computer exploit. Only when the patch is finally installed on a computer system, at event  210 , is the vulnerability window  212  closed for that computer system. 
   While many computer exploits released today are based on known vulnerabilities, such as in the scenario described in regard to  FIG. 2A , occasionally, a computer exploit is released on the network  110  that takes advantage of a previously unknown vulnerability.  FIG. 2B  illustrates a vulnerability window  230  with regard to a timeline  220  under this scenario. Thus, as shown on timeline  220 , at event  222 , a malicious party releases a new computer exploit. As this is a new computer exploit, there is neither an operating system patch nor an anti-virus update available to protect vulnerable computer systems from the attack. Correspondingly, the vulnerability window  230  is opened. 
   At some point after the new computer exploit is circulating on the network  110 , the operating system provider and/or the anti-virus software provider detects the new computer exploit, as indicated by event  224 . As those skilled in the art will appreciate, typically, the presence of the new computer exploit is detected within a matter of hours by both the operating system provider and the anti-virus software provider. 
   Once the computer exploit is detected, the anti-virus software provider can begin its process to identify a pattern, or “signature,” by which the anti-virus software may recognize the computer exploit. Similarly, the operating system provider begins its process to analyze the computer exploit to determine whether the operating system must be patched to protect it from the computer exploit. As a result of these parallel efforts, at event  226 , the operating system provider and/or the anti-virus software provider releases an update, i.e., a software patch to the operating system or an anti-virus update, which addresses the computer exploit. Subsequently, at event  228 , the update is installed on a user&#39;s computer system, thereby protecting the computer system and bringing the vulnerability window  230  to a close. 
   As can be seen from the examples above, which are only representative of all of the possible scenarios in which computer exploits pose security threats to a computer system, a vulnerability window exists between the times that a computer exploit  112  is released on a network  110 , and when a corresponding update is installed on a user&#39;s computer system to close the vulnerability window. Sadly, whether the vulnerability window is large or small, an infected computer costs the computer&#39;s owner substantial amounts of money to “disinfect” and repair, if it is at all possible. This cost can be enormous when dealing with large corporations or entities that may have thousands or hundreds of thousands of devices attached to a network  110 . Such a cost is further amplified by the possibility that such an exploit tamper or destroys customer data, all of which may be extremely difficult or impossible to trace and remedy. What is needed is a system and method for securing a computer system against computer exploits in a responsive manner and according to the individual computer system&#39;s needs, even before a protective update is available and/or installed on the computer system. These, and other issues found in the prior art, are addressed by the present invention. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein: 
       FIG. 1  is a pictorial diagram illustrating an exemplary network environment, as found in the prior art, over which a computer exploit is commonly distributed; 
       FIGS. 2A and 2B  are block diagrams illustrating exemplary timelines demonstrating different vulnerability windows of computer systems with regard to computer exploits released on a network; 
       FIGS. 3A and 3B  are pictorial diagrams illustrating exemplary networked environments suitable for implementing aspects of the present invention; 
       FIGS. 4A and 4B  are pictorial diagrams of exemplary timelines for demonstrating how the present invention minimizes the vulnerability window associated with computer exploits; 
       FIG. 5  is a flow diagram of an exemplary routine for dynamically controlling a computer system&#39;s network access according to published security information, in accordance with the present invention; 
       FIG. 6  is a flow diagram illustrating an exemplary routine implemented by a security service for publishing the security information for network security modules in the exemplary networked environment, in accordance with the present invention; 
       FIG. 7  is a flow diagram illustrating an exemplary routine implemented by a security service to receive and respond to a request for security information from a network security module; 
       FIG. 8  is a flow diagram illustrating an exemplary method implemented by a network security module, for controlling the flow of network traffic between a computer and the network according to security measures obtained from the security service; 
       FIG. 9  is a pictorial diagram illustrating an exemplary network security module implemented as a hardware device external to the computer; 
       FIG. 10  is a block diagram illustrating logical components of a network security module, formed in accordance with the present invention; 
       FIG. 11  is a block diagram illustrating how computer exploits may be delivered to a computing device using secured communications; 
       FIG. 12  is a block diagram illustrating how a network security module, adapted according to aspects of the present invention, is able to protect a computing device from a computer exploit delivered to the computing device using secured communications; and 
       FIGS. 13A and 13B  illustrate a block diagram of an exemplary routine for detecting secured communications and processing secured communications in accordance with aspects of the present invention. 
   

   SUMMARY OF THE INVENTION 
   In accordance with aspects of the present invention, a network security module interposed between a computing device and a network, for protecting the computing device from an identified security threat over the network is presented. The network security module is positioned such that all network activities between the computing device and the network pass through the network security module. The network security module includes a computing device connection. The computing device connection connects the network security module to the computing device. The network security module also includes a network connection that connects the network security module to the network. It is through the computing device connection and network connection that network activities pass through the network security module. The network security module also includes a decoder module. The decoder module temporarily decrypts secured communications using an obtained decryption key. The network security module further includes a security enforcement module that controls the network activities between the computing device and the network. The security enforcement module implements obtained security measures, thereby protecting the computing device from an identified security threat on the network. 
   In accordance with further aspects of the present invention, a method, implemented on a network security module interposed between a computing device and a network such that all network activities between the computing device and the network must pass through the network security module, for protecting the computing device from an identified security threat, is presented. Protective security measures are obtained. The protective security measures, when enforced, protect the computing device from an identified security threat. A secured communication directed to the computing device is detected. The secured communication is then temporarily decrypted. Thereafter, the protective security measures are implemented on the temporarily decrypted secure communication. 
   DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     FIG. 3A  is a pictorial diagram illustrating an exemplary networked environment  300  suitable for implementing aspects of the present invention. The exemplary networked environment  300  includes a computer  302  connected to a network  110 . It should be noted that while the present invention is generally described in terms of operating in conjunction with a personal computer, such as computer  302 , it is for illustration purposes only, and should not be construed as limiting upon the present invention. Those skilled in the art will readily recognize that almost any networked computing device may be attacked by a computer exploit. Accordingly, the present invention may be advantageously implemented to protect numerous types of computers, computing devices, or computing systems including, but not limited to, personal computers, tablet computers, notebook computers, personal digital assistants (PDAs), mini- and mainframe computers, wireless phones (frequently referred to as cell phones), hybrid computing devices such as wireless phone/PDA combinations, and the like. The present invention may also be advantageously implemented to protect hardware devices, peripheral devices, software applications, device drivers, operating systems, and the like. 
   It should be appreciated that the network  110  may include any number of actual communication networks. These actual communication networks include, but are not limited to, the Internet, wide and local area networks, intranets, cellular networks, IEEE 802.11 and Bluetooth wireless networks, and the like. Accordingly, while the present invention is discussed in terms of a computer network, and in particular the Internet, it is for illustration purposes only, and should not be construed as limiting upon the present invention. 
   The exemplary networked environment  300  also includes a network security module  304  and a security service  306 . The network security module  304  is interposed between a computer, such as computer  302 , and the network  110 . The network security module  304  may be interposed between the computer  302  and the network  110  either physically or logically. Communications between the computer  302  and the network  110  flow through the network security module  304 . According to the present invention, the network security module  304  selectively controls the network activities between the computer  302  and the network  110  according to security information corresponding to the computer&#39;s specific configuration, including, but not limited to, the particular operating system revision installed on the computer  302 , anti-virus information, including revision information for both the anti-virus software and corresponding signature data files, installed applications, device drivers, and the like, all of which may be a potential target of a computer exploit to take advantage of a computer system vulnerability. 
   According to one embodiment of the present invention, in order to periodically obtain security information from the security service  306 , the network security module  304  periodically issues a security information request to the security service  306  for security information corresponding to the particular, specific configuration of the computer  302 . The network security module  304  may be configured to periodically obtain the security information from the security service  306 . For example, the network security module  304  may be configured to obtain security information from the security service  306  every minute. Alternatively, the network security module  304  may be configured to obtain security information from the security service  306  according to a user specified period of time. 
   Obtaining security information corresponding to a computer&#39;s particular, specific configuration is important as many users must delay updating their computer systems for a myriad of reasons. For example, a delay in updating an operating system or anti-virus software may occur because a computer has been inactive for a while. Thus, while the most recent revision of operating system and/or anti-virus software may provide adequate protection from a newly discovered computer exploit, a computer may not be “up to date”, and thus, susceptible to the computer exploit and must implement security measures that corresponds with the computer&#39;s particular configuration. Accordingly, the security information request may include, but is not limited to, information identifying the computer&#39;s operating system revision, including installed patches; the particular anti-virus software and revision used by the computer, as well as software and data file updates; and network-enabled application information, such as e-mail or browser identifiers, revisions, firmware providers and versions, and other security settings. 
   According to aspects of the present invention, the network security module  304  obtains the computer&#39;s particular configuration information as one of the acts of updating a computer system component. For example, when a user installs an operating system patch on the computer  302 , as one of the acts of installing the operating system patch, the network security module  304  is notified of the now current revision of the operating system. Similarly, other computer system features, such as a network-enabled application or anti-virus software, notify the network security module  304  as they are updated, all so that the network security module may obtain the most accurate and sufficient security information to protect the computer  302  according to the computer&#39;s specific current configuration. 
   Based on the computer&#39;s particular configuration information in the security information request, the security service  306  identifies relevant security information to protect the computer from known or perceived computer system vulnerabilities. Identifying relevant security information is described in greater detail below. The security information includes protective security measures, to be implemented by the network security module  304 , that enable the network security module to insulate the computer  302  from computer exploits of known vulnerabilities. Protective security measures may include any number of network activity controls, or combinations thereof, including, but not limited to: blocking all network activities between the computer  302  and the network  110 , except communications between certain known, secure network locations, such as the security service  306  or the anti-virus software service  308  for installing patches or updates; blocking network traffic on specific communication ports and addresses; blocking communications to and/or from certain network-related applications, such as an e-mail or Web browser application; and blocking access to particular hardware or software components on the computer  302 . Thus, upon receiving the security response, the network security module implements the security measures. 
   As mentioned above, the network security module  304  is interposed between the computer  302  and the network  110  and, as such, all network activities between the computer and the network must flow through the network security module. As network traffic flows through the network security module  304 , the network security module monitors the network traffic and implements the protective security measures received from the security service  306 , such as blocking all network access except communications between known, secure locations, and the like. 
   According to further aspects of the present invention, a security response may also include a designated security level, such as levels red, yellow, and green. The security levels represent information that identifies, to the computer&#39;s  302  user, a representative level of protective measures implemented by the network security module  304 . For example, a security level of red may indicate that the network security module  304  is currently blocking all network activities between the computer  302  and the network  110  except access to and from known, secure locations. Alternatively, a security level of yellow may indicate that the network security module  304  is currently implementing some protective security measures, yet the computer  302  may still otherwise communicate with the network  110 . Still further, a security level of green may indicate that the network security module  304  is not implementing any protective security measures, and communications between the computer  302  and the network  110  are unrestricted. In accordance with the above described security levels, and for description purposes, a security level of red may also be referred to as full lock-down, a security level of yellow may also be referred to as partial lock-down, and a security level of green may also be referred to as free network access. While the above description identifies three security levels and a schema of red, yellow, and green, they are illustrative, and should not be construed as limiting upon the present invention. Those skilled in the art will readily recognize that any number of security levels may be implemented with alternative schemas for their representation to a user. 
   As the network security module  304  operates in an autonomic manner, i.e., requiring no user intervention, the above-identified security levels, as well as any corresponding visual representations of the security levels, are for user information purposes only. They may be used to provide the user with an indication of the level of restrictions that are implemented by the network security module  304 . This visual indication may be especially useful when a user is trying to determine whether a network connection is malfunctioning, or that network activity is restricted due to current network security concerns. 
   According to aspects of the present invention and as an added measure of security, when the network security module  304  is powered up, the network security module enters a default state. This default state corresponds to the highest level of security, i.e., full lock-down, such that network activities between the computer  302  and trusted network locations are permissible. Either as part of the power up, or as part of the periodic communication with the security service  306 , the network security module  304  obtains up-to-date security information and, depending on that security information, may impose less restrictive security measures. Clearly, implementing a default state of full lock-down at the network security module  304  is beneficial to the computer  302  as a vulnerability could have been identified, or an exploit released on the network  110  during the time that the network security module was powered off. 
   In accordance with one embodiment of the present invention, the network security module  304  does not request or access information from the computer  302 . Instead, the network security module  304  operates on information transmitted to it from the computer  302  in connection with certain events. Thus, when a network security module  304  first commences to protect a computer, such as when a network security module is first interposed between a computer  302  and the network  110 , the network security module will not have any specific configuration information corresponding to the computer system. As mentioned above, when the network security module  304  has no configuration information regarding the computer  302 , or when the network security module  304  is powered up, the network security module enters its default state, i.e., full lock-down. However, as mentioned above, full lock-down will still permit the computer  302  to communicate with known, secure locations. As an example, these known, secure locations include the location, or locations, where operating system updates are located. Thus, a user may run an update process that results in configuration information being sent to the network security module  304 , even when the computer  302  is configured with the latest operating system, anti-virus software, application, and device driver revisions and updates that are available. Alternatively, a specific program may be provided that notifies the network security module  304  of the computer system&#39;s current configuration. 
   In order to ensure that communications between the network security module  304  and the security service  306  are authentic and uncorrupted, in one embodiment of the present invention, communications between the network security module and the security service, such as security requests and security information, are delivered in encrypted, secured communications, such as secured communications using the Secure Sockets Layer (SSL) protocol. Similarly, communications between the network security module  304  and the computer  302  are also similarly secured. 
   According to optional aspects of the present invention, the network security module  304  continues to operate, i.e., obtain security information corresponding to the computer  302 , even when the computer is powered off. For example, the network security module  304  may continue to obtain security information for the computer  302 , all according to the latest operating system and/or anti-virus software revision data provided the computer when in was powered on. According to one embodiment, the network security module  304  is connected to the auxiliary power rail of a computer that, as is known to those skilled in the art, provides power to peripheral devices even when the computer  302  is powered off. Additionally, if the network security module  304  operates only when the computer  302  is operating, when the network security module resumes operation, the network security module implements a full lock-down while it obtains the most recent security information corresponding to the computer&#39;s current configuration. 
   According to another embodiment of the present invention, the network security module  304  may be optionally disabled by a user. This is useful as there are certain times that the necessity of full access to a network outweighs the risk of an attack from a computer exploit. For example, it may be necessary to disable the network security module  304  when attempting to diagnose networking problems/issues. Alternatively, some emergency situations, such as using the E911 voice over IP (VoIP) service may necessitate that the network security module  304  be disabled. 
   According to one aspect of the invention, when disabled, the network security module  304  continues to obtain security information from the security service  306 , though it does not implement the protective security measures. Continually updating the security information is beneficial to the user, especially if the network security module  304  is only temporarily disabled, as the network security module will have the most recent security information when re-enabled. Alternatively, if the network security module  304  is disabled and not continually updating, after a predetermined period of no communication with the security service  306 , the network security module may revert to its default condition, i.e., a full lock-down of network activity. 
   The security service  306  may be implemented as a single server/source for all security information, or alternatively, as a hierarchy of servers/sources distributed throughout the network  110 . In a hierarchical system, a network security module  304  is initially configured with a root server/service in security service, one that will always be present. However, as part of the security information returned by the security service, perhaps in the first communication between the network security module  304  and the security service, the security service provides information regarding the hierarchy of the security service. This information may be provided as one or more ranges of network addresses, all of which are nodes in the security service hierarchy and that are able to provide the network security module  304  the appropriate security information. Thereafter, the network security module  304  need not necessarily query the original node to obtain information. Obviously, one advantage of implementing the security service in a hierarchical manner is that the security service may be easily scaled up or down in order to accommodate the number of network security module requesting information, and the original node in the security service hierarchy will not be overwhelmed by security information requests from all network security modules in a network. Under a hierarchical structure distributed in the network  110 , load balancing may also occur and redundancy may be built into the system such that if one node in the hierarchy fails, others may step in and provide the security information. 
   According to aspects of the present invention, the network security module  304  is transparent to the computer  302  and to the network  110 , using a technique known in the art as port mimicking. Generally speaking, using port mimicking, the network security module  304  appears as the network  110  to the computer  302 , and appears as the computer to devices on the network. Thus, network activity freely flows between the computer  302  and the network  110  through the network security module  304 , unless the network security module determines that the communication is directed to the network security module, such as notification of an operating system update or a security information response, or unless the network security module must block the network activity according to the protective security measures. 
   As described above, the network security module  304  obtains security information from the security service  306  as a result of a query. Those skilled in the art will recognize this as a poll system, i.e., polling the security service  306  for the security information. However, in an alternative embodiment, the security service  306  advantageously broadcasts important security information to the network security modules in the network  110 . For example, depending on the periodic intervals at which the network security modules in the networked environment  300  obtain security information from the security service  306 , if a particularly virulent computer exploit begins to circulate the network  110 , rather than wait for network security modules to request important security information, the security service broadcasts security information to the network security modules. This security information, referred to hereafter as a security bulletin, will typically include all configurations that are susceptible to the computer exploit, protective security measures to be taken, as well as indicating the corresponding security level. According to one embodiment of the present invention, the security bulletins are XML documents, organized according to a predetermined schema. 
   A system that broadcasts information to listeners is referred to as a push system, i.e., the security service  306  pushes important security information to the network security modules. According to aspects of the present invention, security bulletins are broadcast over the network  110  using a “guaranteed delivery” service. In a guaranteed delivery service, security bulletins are identified as high priority items, and in agreement with the network service providers, are delivered before the delivery of other network traffic that would otherwise be delivered first. 
   In addition to delivering the security bulletins over the same network  110  upon which the computer  302  communicates, there are many times that it would be advantageous to communicate “out of band,” i.e., over a second communication link separate from the network  110 .  FIG. 3B  is a pictorial diagram illustrating an alternatively configured networked environment  310  for implementing aspects of the present invention, including a second communication link  314  for delivering security information to the network security modules attached to the network  110 . 
   As shown in  FIG. 3B , the alternatively configured networked environment  310  includes similar components as those described above in regard to the networked environment  300 , including the computer  302 , the security service  306 , and the network security module  304 . However, the security service  306  is additionally configured to transmit security information, including both security information and/or security bulletins, to a network security module  304  specifically adapted with a receiving device  312  to receive the information over the second communication link  314 . According to aspects of the present invention, the second communication link  314  may be a satellite communication link, a radio frequency broadcast, or some other form of secondary communication between the security service  306  and the network security module  304 . Those skilled in the art will appreciate that any number of communication channels may be used. 
   According to alternative aspects of the invention, the second communication link  314  may be a one-way communication link from the security service  306  and the network security module  304 , or a two-way communication link for communications between the security service and the security module. Additionally, software updates or patches, as mentioned above, may also be available for download over the second communication link  314  from the security service  306 . 
   While the network security module  304  is interposed between the computer  302  and the Internet  110 , actual embodiments of a network security module may vary. In each case, the network security module  304  is treated as a trusted component by the computer  302 . According to one embodiment, the network security module  304  is implemented as a hardware device, sometimes called a “dongle,” external to the computer  302 , with connections to the network  110  and to the computer. Alternatively, the network security module  304  may be implemented as a hardware component integrated within the computer  302 , or as an integrated sub-component within the computer&#39;s network interface. Integrating the network security module  304  within the computer  302  or as a sub-component on the computer&#39;s network interface may be especially useful when the computer  302  is connected to the network  110  via a wireless connection. 
   According to another alternative embodiment, the network security module may be implemented as logic, such as microcoding or firmware, within a component of the computer  302 , including, but not limited to, the processor, graphics processing unit, north bridge, or south bridge. As yet a further alternative embodiment, the network security module  304  may be implemented as a software module operating in conjunction with, or as part of, the operating system, or as a separate application installed on the computer  302 . The software implemented network security module  304  may operate on a second processor in the computer  302 . The second processor may or may not be implementing other computer system tasks asymmetrically with the computer&#39;s main processor. Accordingly, the network security module  304  should not be construed as limited to any particular embodiment. 
   It should be pointed out that one of the benefits realized by the present invention is that the system mitigates the effects of many exploits. For example, those skilled in the art will recognize that a denial of service (DOS) attack is an attempt to overwhelm a computer with network requests, to the end that the computer exhausts its resources and crashes, or alternatively, erroneously enters an ambiguous state that is more vulnerable to external attacks/exploits. However, with a network security module  304  responding to a security service  306  by implementing protective security measures, such exploits, including the potentially overwhelming network requests, never reach the computer  302 . 
   In order to more fully understand how the above-described components operate to provide enhanced security to the computer  302 , reference is made to exemplary scenarios, illustrated on timelines with corresponding events.  FIGS. 4A and 4B  are block diagrams illustrating exemplary timelines for demonstrating the operation of the components of the present invention. More particularly,  FIG. 4A  is a block diagram illustrating an exemplary timeline  400  for demonstrating how the present invention minimizes the vulnerability window  406  of a computer  302  with regard to the release of a new computer exploit on the network  110 . It should be noted that while the following is presented as a computer exploit attacking an operating system, it is for illustration purposes, and should not be construed as limiting upon the present invention. The present invention may be utilized to protect code modules, services, even hardware devices on a computer system. 
   As shown on the timeline  400 , at event  402 , a malicious party releases a new computer exploit onto the network  110 . The release of the new computer exploit commences the vulnerability window  406  for computers connected to the network  110  targeted by the new computer exploit, such as computer  302 . At event  404 , the presence of the new computer exploit is detected, either by the operating system provider, the anti-virus provider, or others, as described above. 
   Upon detecting the presence of the new computer exploit, even before the nature or mode of attack of the exploit is identified, at event  408 , the operating system provider, publishes security information via the security service  306 . Typically, when a computer exploit is discovered, and its nature, extent, or mode of attack is not well known, the security service will set the security level for all apparently affected computer systems at red, i.e., full lock-down. At block  410 , the network security module  304  obtains the security information, either in its periodic request or as a security bulletin, and implements the corresponding security measures, in this case, full lock-down. Beneficially, upon implementing the security measures from the security service  306 , the vulnerability window  406  of targeted computers is closed. 
   In contrast to the vulnerability window  230  of  FIG. 2B , vulnerability window  406  is relatively small, thereby minimizing the exposure of targeted computer systems to the new computer exploit. Clearly, the actual length of time that a vulnerability window is open, such as vulnerability window  406 , depends upon a small number of factors. One factor is the amount of time that passes before the computer exploit is detected. As discussed above, a new computer exploit is typically detected within fifteen minutes to a few hours from release. A second factor, much more variable than the first, is the amount of time it takes for the network security module  304  to obtain security information from the security service  306 . Assuming that the network security module  304  may continually obtain security information, it may take mere seconds to obtain the security information and implement the corresponding security measures. However, if the network security module  304  cannot continually communicate with the security service  306 , or if the periodic time frame for obtaining the security information is long, implementing the protective security measures may take a very long time. According to aspects of the present invention, if the network security module  304  is out of contact with the security service  306  for a predetermined amount of time, the network security module defaults to a full lock-down status, pending future communication from the security service. 
   After the initial security information is published, the operating system provider or anti-virus software provider will typically continue analyzing the computer exploit in order to better understand how it operates, and/or what specific computer system features it attacks. From this analysis, a second, perhaps less restrictive, set of protective measures is identified that vulnerable computer systems must take to prevent the computer exploit from infecting them. Accordingly, at event  412 , updated security information is published with a security level of yellow and identifying protective measures to block at-risk network activities, i.e., partial lock-down. For example, as described above, the protective security measures may include simply blocking access to and from a specific range of communication ports, including the source and/or destination ports, or disabling e-mail communications, Web access, or other network activities directed to the operating system, applications, device drivers, and the like, installed on a protected computer system, while permitting other network activities to flow freely. It should be understood that “at-risk” network activities include network activities that represent a threat to a computing system by an exploit, whether or not the exploit attacks computer system flaws or simply abuses legitimate computer system features. Additionally, the “at-risk” network activities include network activities directed to a computer system that are unilaterally initiated by another device. In other words, “at-risk” network activities includes the network activities of exploits directed at a computer system that has done nothing more that connect to the network. 
   At event  414 , the updated security information is obtained by the network security module  304 , and the corresponding protective security measures are implemented. At event  416 , after the operating system provider and/or anti-virus provider has generated and made available a software update, additional updated security information is published. This additional updated security information may identify that the security level is green, provided that a software update, such as an update from the operating system provider, the anti-virus software provider, or application provider, is installed on the computer  302 . Subsequently, at event  418 , the additional updated security information is obtained, the software updates are installed on the computer  302 , and the network security module  304  enables free, i.e., unrestricted, network access. 
     FIG. 4B  is a block diagram illustrating an alternative exemplary timeline  420  for demonstrating how the present invention eliminates the vulnerability window that may exist with regard to the release of a computer exploit on the network  110 , more particularly, an exploit that takes advantage of a previously identified vulnerability rather than an entirely new attack. As mentioned, the use of a previously known vulnerability is much more commonplace than entirely new attacks. At event  422 , the operating system provider identifies the presence of a vulnerability in the current release of the operating system. In response to the threat posed by the identified vulnerability, at event  424 , the operating system provider publishes mitigating security information, setting the security level and identifying corresponding protective security measures. In the present example shown in  FIG. 4B , assuming that the vulnerability poses a substantial risk to the computers connected to the network  110 , the operating system provider publishes security information setting the security level to red with security measures to implement a full lock-down. At event  426 , the network security module  304  obtains the latest security information and implements the full lock-down. It should be noted that security measures are implemented that protect the computer  302  from the identified vulnerability before a patch or “fix” is available. As the majority of computer exploits are somehow derived from information gained by analyzing the vulnerabilities that a patch corrects, a malicious party is proactively denied the opportunity to create an exploit to attack the vulnerability. Thus, no vulnerability window is opened. Obviously, this result is a substantial benefit to the computer user, especially in contrast to the corresponding time line  200  illustrated in  FIG. 2A  when the network security module is not implementing the security measures. 
   Frequently, after further analysis of the computer exploit, an operating system provider may determine a less restrictive set of protective measures that will protect the computers connected to the network from the computer exploit. Thus, as shown in  FIG. 4B , at event  428 , an updated security bulletin is published, setting the security level at yellow and including corresponding protective security measures, i.e., partial lock-down, that specifically address the exploited vulnerability, while enabling all other network activities. Correspondingly, at event  430 , the updated security information is obtained and the network security module  304  implements the partial lock-down. 
   Once an operating system patch or anti-virus update is available which, if installed on a computer  302 , would protect it from a computer exploit targeting the vulnerability, at event  432 , the operating system provider publishes the information, and indicates that once installed, the network security modules may permit free network access, i.e., setting the security level to green once the patch is installed. Correspondingly, at event  434 , after the patch or anti-virus update is installed on the computer  302 , the network security module  304  enables free access. 
     FIG. 5  is a flow diagram illustrating an exemplary routine  500  for dynamically controlling a computer&#39;s network access according to published security information.  FIG. 5  includes two starting terminals, starting terminal  502  corresponding to the startup of a network security module  304 , and starting terminal  520  corresponding to receiving an update notice from the computer system  302 . Beginning first at starting terminal  502  and proceeding to block  504 , the network security module  304  implements full lock-down related security measures. As described above, when in full lock-down, the computer is limited to accessing known, trusted network locations, including the security service  306 , in order to obtain the latest security status information and any available updates. 
   At block  506 , the network security module  304  obtains the latest security information from the security service  306  corresponding to the computer&#39;s current configuration. According to aspects of the present invention, the network security module  304  may obtain the latest security information from the security service by issuing a request to the security service for that information. Alternatively, the network security module  304  may obtain the latest security information as a broadcast from the security service  306 , either over a second communication link or as a broadcast over the network. 
   At decision block  508 , based on the latest security information obtained from the security service  306 , the network security module  304  determines whether the currently implemented security measures, and corresponding security level, are up to date with the obtained security information. According to one aspect of the present invention, this determination is made as a simple comparison of revision information for the computer system that the network security module currently has stored against what the security service publishes as the latest revisions. 
   If the currently implemented security measures are not up to date, at block  510 , the network security module  304  obtains security measures for the computer system according to information that the network security module has stored regarding the computer system. Alternatively (not shown), the security measures may be included with the obtained security information. Once the network security module  304  has the security measures, at block  512 , the network security module implements the security measures and sets the corresponding security level, e.g., red, yellow, or green. 
   After implementing the security measures for the computer system, or alternatively, if the currently implemented security measures are up to date for the computer system, at block  514 , the network security module  304  enters a delay state. This delay state corresponds to the time period for which the network security module  304  periodically queries the security service  306  to obtain the latest security information. After delaying for the predetermined amount of time, the process returns to block  506 , where the process of obtaining the latest security information from the security service  306 , determining if the currently implemented security measures are up to date for the computer system, and implementing any new security measures, is repeated. 
   As shown in  FIG. 5 , the exemplary routine  500  does not have an ending terminal as it is designed to operate continuously to protect the computer  302  from computer exploits. However, those skilled in the art will recognize that the routine  500  will terminate if the network security module  304  is powered off, disconnected from the exemplary networked environment  300 , or explicitly disabled by a user, as described above. 
   With reference to the alternative starting terminal  520 , this entry point represents the situation when the network security module  304  receives update notices from the computer system. As previously discussed, applications adapted to take advantage of the present invention will, as one of the steps to update the computer system, notify the network security module of now current revision information. For example, while updating the anti-virus software, one step of the process would be to issue a notice, intended for the network security module  304 , advising the network security module of the now current revision. Thus, at block  522 , the network security module receives an update notice. 
   At block  524 , the update notice information is stored by the network security module for later use in determining whether the currently implemented security measures are up to date. Operating system updates, as well as other code module updates, may also be adapted to provide notice to the network security module  304  so that the security system may make more informed decisions as to the appropriate security measures necessary to protect any given computer system. 
   After storing the information, the routine  500  proceeds to block  506  where the steps of obtaining the latest security information from the security service  306 , determining if the currently implemented security measures are up to date for the computer system, and implementing any new security measures is begun, as described above. As an alternative (not shown), after receiving updated computer system information at block  524 , the network security module may wait to obtain security status information until a current delay state is finished. 
     FIG. 6  is a flow diagram illustrating an exemplary routine  600  for broadcasting security information for network security modules, such as network security module  304 , in the exemplary networked environment  300 . Beginning at block  602 , the security service  306  obtains security related information from a variety of sources. For example, the security service  306  would typically obtain information from operating system providers, anti-virus software providers regarding the latest revisions, patches, and updates available, as well as the computer exploits and/or vulnerabilities that are addressed via the various patches and updates. Other sources may also be polled for security related information, including various government agencies, security specialists, and the like. 
   At block  604 , the security service  306  obtains information regarding a vulnerability of the computer systems connected to the network  110 . This information may come from an operating system provider, an anti-virus software provider, or other party as the vulnerability is detected. At block  606 , the security service  306 , based on the threat posed by the vulnerability, determines a security level, e.g., red, yellow, or green, as well as protective security measures to be implemented by the network security modules, such as network security module  304 , to secure the affected computers from an attack by a computer exploit on the vulnerability. 
   At block  606 , the security service  306  broadcasts a security bulletin, comprising the security level and corresponding protective security measures, to the network security modules attached to the network  110 , as described above. As discussed above, the security service  306  may broadcast the security bulletin by issuing a network-wide broadcast to all network security modules. This network-wide broadcast may be over the network  110 , optionally using the guaranteed delivery option described above, or over a second communication link  314  to the network security devices in the networked environment  300 . After broadcasting the security bulletin, the routine  600  terminates. 
     FIG. 7  is a flow diagram illustrating an exemplary routine  700  implemented by a security service  306  to receive and respond to a security information request from a network security module  304 . Beginning at block  702 , the security service  306  receives a security information request from a network security device  304 . As already mentioned, the security information request may include information corresponding to the computer&#39;s current configuration. 
   At block  704 , according to the particular computer&#39;s configuration information in the security information request provided by the network security module, the security service  306  identifies relevant security information corresponding to the computer&#39;s current configuration information in the security information request. 
   According to one embodiment, the security service  306  identifies the relevant security information by determining protective security measures needed to protect the computer  302  according to the computer&#39;s configuration information. According to an alternative embodiment, the security service  306  identifies the relevant security information by returning all security information corresponding to the particular computer&#39;s configuration for further processing by the network security module to determine which protective security measures should be implemented. As yet a further alternative, the security service  306  identifies the relevant security information by returning all security information corresponding to the particular computer&#39;s configuration which is then forwarded to the computer  302  from the network security device such that the computer can inform the network security module which protective security measures to implement. Combinations of the above described alternatives may also be utilized, as well as other systems. Accordingly, the present invention should not be construed as limited to any one particular embodiment. 
   At block  706 , the security service  306  returns the relevant security information to the requesting network security module  304 . Thereafter, the routine  700  terminates. 
     FIG. 8  is a flow diagram illustrating an exemplary method  800  implemented by a network security module  304 , for controlling the flow of network traffic between a computer  302  and the network according to security measures obtained from the security service  306 . Beginning at block  802 , the network security module  304  receives network traffic, including both network traffic coming to the computer  302 , as well as network traffic originating with the computer. 
   At decision block  804 , a determination is made as to whether the network traffic is to or from a trusted network site, such as the security service, an anti-virus software provider, an operating system provider, and the like. If the network traffic is to or from a trusted network site, the routine proceeds to block  810  where the network traffic is permitted to flow through the network security module  304 , and the routine  800  subsequently terminates. However, if the network traffic is not to or from a trusted network site, the routine proceeds to decision block  806 . 
   At decision block  806 , another determination is made as to whether the network traffic is restricted according to the currently implemented security measures. If the network traffic is not restricted according to the currently implemented security measures, the routine proceeds to block  810 , where the network traffic is permitted to flow through the network security module  304 , and the routine  800  subsequently terminates. However, if the network traffic is restricted according to the currently implemented security measures, the routine proceeds to block  808 , where the network traffic is not permitted to flow through the network security module  304 . Thereafter, the routine  800  terminates. 
   While the network security module  304  is interposed between the computer  302  and the Internet  110 , the actual embodiment of the network security module may vary. According to one embodiment, the network security module  304  may be implemented as a hardware device, physically external to the computer  302 , with connections to the Internet  110  and to the computer  302 .  FIG. 9  is a pictorial diagram illustrating an exemplary network security module  304  implemented as a hardware device external to the computer  302 . 
   As shown in  FIG. 9 , as an external device, the network security module  304  includes a connection  902  to the network  110  and a corresponding connection  904  to the computer  302 . All network activity between the computer  302  and the network  110  is carried on the connection  904  to the computer. The illustrated network security module  304  also includes a secondary computer connection  918  between the computer  302  and the network security module for communicating information between the two. The illustrated network security module  304  further includes an enable/disable switch  906 , status indicators  910 - 916 , and an optional connection  908  to an external power source. 
   As previously mentioned, it may be desirable to disable the network security module  304  from enforcing its current security measures. According to the illustrated embodiment of  FIG. 9 , the enable/disable switch  906  is a toggle switch to disable the network security module  304  when it is desirable to bypass the current security measures, and also to enable the network security module  304  such that it enforces the current security measures it has obtained from the security service  306 . 
   Status indicators  910 - 916  are included to provide a visual indication of the network security module&#39;s current status. Status indicators, as previously discusses, are for informational purposes only. They provide optional visual clues to the computer user as to the protective security measures implemented by the network security module  304 . Each indicator corresponds to a particular security status. For example, status indicator  910  may correspond to a security level of red, meaning a total lock-down of network activities, and is illuminated in red when the network security module  304  is implementing a total lock-down. Status indicator  912  may correspond to a security level of yellow, i.e., a partial lock-down of network activities, and be illuminated in yellow when the network security module  304  is implementing the partial lock-down. Similarly, status indicator  914  may correspond to the security level green, i.e., free network access, and is illuminated in green when the network security module  304  is permitting unrestricted network access. Status indicator  916  may correspond to the enabled/disabled status of the network security module  304 , such that the status indicator is illuminated, perhaps as with a flashing red light, when the network security module is disabled. 
   While the present invention may be implemented as illustrated in  FIG. 9 , it should be viewed as illustrative only. Numerous modifications and alterations may be made to the physical embodiment illustrated in  FIG. 9  without departing from the scope of the present invention. Accordingly, the present invention should not be construed as limited to any particular physical embodiment. 
   As an alternative to a physical embodiment (not shown), the network security module  304  may be a component integrated as a component within the computer  302 , or as a sub-component within the computer&#39;s network interface. These two embodiments may be especially useful when the computer  302  is connected to the Internet  110  via a wireless connection. As yet a further alternative embodiment, the network security module  304  may be implemented as a software module integrated within the operating system, or as a separate module installed on the computer  302 . Accordingly, the network security module  304  should not be construed as limited to any particular embodiment, physical or logical. 
     FIG. 10  is a block diagram illustrating exemplary logical components of a network security module  304 , formed in accordance with the present invention. The network security module  304  includes a memory  1002 , security status indicator module  1004 , a comparison module  1006 , a security enforcement module  1008 , an update request module  1010 , a network connection  1012 , a computer connection  1014 , a secondary computer connection  1018 , and a coder/decoder module  1020 . 
   The memory  1002 , including volatile and non-volatile memory areas, stores the current security measures to be implemented by the network security module  304 . The memory  1002  also stores the configuration information provided to the network security module  304 , including current revision information of the operating system, anti-virus software and signatures, applications, and the like. Other information may also be stored in the memory  1002 , including trusted location addresses, update sources, and the like. Information such as trusted location addresses, are likely stored in non-volatile memory. 
   The security status indicator module  1004  is for representing to the computer user the network security module&#39;s  304  current security status. For example, when the network security module  304  is implemented as a physical device, such as illustrated in  FIG. 9 , the security status indicator module  1004  controls the status indicators  910 - 916  according to the network security modules current security status. 
   The comparison module  1006  performs the comparisons between the security information stored in the memory  1002  and the security information obtained from the security service  306  to determine whether the security information stored in the memory  1002  is up to date for the computer&#39;s current configuration. The security enforcement module  1008  is that component that implements the security measures necessary to protect the computer  302  from perceived threats. Thus, the security enforcement module  1008  controls the flow of network activities between the computer  302  and the network  110  according to the security measures stored in the memory  1002 . 
   The update request module  1010  is used in a poll system to periodically request the latest security information from the security service  306 . In a push system, the update request module  1010  may act as a receiver of security information from the security service and work in cooperation with the comparison module  1006  to identify protective security measures for sufficiently protecting the computer  302  according to the information received from the security service  306 . Alternatively, the update request module may communicate with the computer  302  to determine/identify the protective security measures for sufficiently protecting the computer according to the information received from the security service  306 . All of the components of the network security module  304  are inter-connected via a common system bus  1016 . 
   The coder/decoder module  1020  is used to encode and decode secured communications between the network security module  304  and the security service  306 , as well as secured communications between the computer  302  and the network security module. Information decoded by the coder/decoder module  1020  is provided to the security enforcement module  1008  for implementing current security measures. 
   According to one embodiment, the secured communications between the computer  302  and the network security module  304  are delivered via the secondary computer connection  1018 . However, the present invention should not be construed as limited to comprising a secondary computer connection  1018 . In an alternative embodiment, the network security module  304  communicates with the computer  302  using just the principal computer connection  1014 . 
   While individual components of a network security module  304  have been described, it should be understood that they are logical components, and may be combined together, or with other components not described, in an actual embodiment. Accordingly, the above-described components should be viewed as illustrative, and not construed as limiting upon the present invention. 
   While the network security module  304  as described, operating alone or in conjunction with anti-virus software, is able to protect a computing device from many computer exploits/attacks, in some situations, certain directed exploits may be able to bypass the network security module and/or the anti-virus software. In particular, one technique used by malicious parties to attack a computing device is to insulate the exploit from detection by using secured communications between an infected computer/exploit origin and the targeted computing device.  FIG. 11  is a block diagram illustrating how computer exploits may be delivered to a computing device using secured communications. 
   As an example of how computer exploits may be delivered to a computing device using secured communications, and with reference to  FIG. 11 , a malicious party on computer  102  has an exploit  112 . In order to infect another computer, such as computer  1104 , the malicious party may offer the exploit  112  as a legitimate resource/content to others, but offers to deliver it via secured communications. As is known to those skilled in the art, secured communications are encrypted, typically with public and private cryptographic keys, such that only the possessor of a decryption key (the private key) is able to decrypt and view the content of the secured communications. Examples of secured communication protocols include Secure Socket Layer (SSL) and Transport Layer Security (TLS) protocols. 
   Continuing with the present example, an unsuspecting user, via computing device  1104 , is duped into believing that the exploit  112  is indeed legitimate content and requests the exploit from the computer  102 . The computer  102  and computing device  1104  negotiate and exchange cryptographic keys for encrypting and decrypting the exploit  112 . Thereafter, a transmission encoder  1106  encodes the exploit for delivery, and securely delivers the encrypted exploit to the computing device  1104  through the network  110 , as indicated by arrow  1108 . Because the exploit  122  is delivered in an encrypted state, it is very likely that it can pass a network security module  304  (not shown) and any anti-virus software. Upon reaching the computing device  1104 , a transmission decoder module  1110  decodes/decrypts the secured communication and it is presented to the browser display module  1112 . Those skilled in the art will recognize that frequently, the transmission decoder module  1110  is an integral part of the browser display module  1112 . The browser display module  1112 , upon displaying the exploit, enables the exploit  112  to infect the computing device  1104 . 
   In accordance with aspects of the present invention, the network security module  304  may be used to protect a computing device from a computer exploit delivered via secured communications. With reference again to  FIG. 10 , the network security module  304  obtains the cryptographic key necessary to decrypt the secured communication from the computing device via the secondary computer connection  1018 . Once the cryptographic key is obtained, the coder/decoder module  1020  temporarily decodes the secured communication for processing. As will be described in greater detail below, if the secured communication is found to violate the security measures implemented by the network security module  304 , or to be an exploit, the secured communication is prohibited from reaching the computing device  1104 . However, if the secured communication is not in violation of the implemented security measures, and is not an exploit, the secured communication is permitted to flow to the computing device  1104 . 
   According to aspects of the present invention, the secondary computer connection  1018  ( FIG. 10 ) may be one of a variety of communication channels to the computing device  1104 . For example, the secondary computer connection  1018  may be a Universal Serial Bus (USB) connection, an IEEE 1394 connection, or a standard serial or parallel data connection. As described above, one of the purposes of the secondary computer connection  1018  is to provide a communication channel through which the network security module  304  may obtain a cryptographic decryption key from the transmission decoder  1110  to temporarily decrypt the secured communication. Accordingly, as an alternative embodiment, the secondary computer connection  1018  may also be the computer connection  1014  on which network activity between the computing device and the network  110  is carried. According to this alternative embodiment, the distinction between the computer connection  1014  and the secondary computer connection  1018  is a logical, not physical, distinction. 
     FIG. 12  is a block diagram of an exemplary environment  1200  illustrating how a network security module  304 , adapted according to aspects of the present invention, is able to protect a computing device  1104  from a computer exploit  112  delivered to the computing device via a secured communication. Similar to the example of  FIG. 11 , the malicious party on computer  102  attempts to deliver the computer exploit  112  to the computing device  1104  via secured communications, as indicated by arrow  1108 . However, a network security module  304 , interposed between the network  110  and the computing device  1104 , first obtains the secured communication. As part of enforcing the security measures associated with the current security level, or simply as an ongoing security precaution, the network security module  304  evaluates incoming network activity to determine whether any of the communications are secured communications. 
   Upon detecting a secured communication, the network security module  304  requests the cryptographic decoding key from the transmission decoder module  1110  on the computing device  1102  over the secondary computer connection  1018 , as indicated by arrow  1202 . Using the cryptographic decoding key, the network security module  304  temporarily decrypts the secured communication and processes the decrypted communication data according to any security measures implemented by the network security module. According to additional aspects of the present invention, the network security module  304 , operating in conjunction with anti-virus software, may also deliver the temporarily decrypted communication data to the anti-virus software for its evaluation as an exploit/virus. 
   Upon detecting that the secured communication is either prohibited network activity according to the implemented security measures, or that it represents an exploit as detected by any anti-virus software, the network security module  304  prohibits the secured communication/exploit from reaching the computing device  1104 , as indicated by arrow  1204 . In this manner, the computing device  1104  is protected, even from communications delivered over secure communication channels. Alternatively, if the secured communication is not in violation of any implemented security measures and is not an exploit, the secure communication is relayed to the computing device  1104 . 
   While the above descriptions of  FIGS. 11 and 12  illustrate that the transmission decoder  1110  is a separate module from the browser display module  1112 , it is for illustration purposes only. Those skilled in the art will readily recognize that the transmission decoder  1110  is quite often an integral component of a browser display module  1112  found on a computing device. 
     FIGS. 13A and 13B  illustrate a block diagram of an exemplary routine  1300  for detecting and processing secured communications, in accordance with aspects of the present invention. It should be appreciated that while the exemplary routine  1300  may be implemented on a network security module  304 , it may also be separately implemented and executed as a software module operating in conjunction with a browser display module  1112  to protect the computing device  1104  from exploits  112 . 
   Beginning at block  1302  ( FIG. 13A ), the exemplary routine  1300  monitors network activities, and in particular, incoming network activities. Upon detecting an incoming network activity, at decision block  1304 , a determination is made as to whether the network activity is a secured communication directed to the protected computing device. If the network activity is not a secured communication directed to the protected computing device, at block  1306 , the network activity is relayed to the protected computing device. Thereafter, the process returns to block  1302  for additional monitoring of network activity. While not shown, additional processing may occur on the unsecured network activity. For example, if the exemplary routine  1300  is implemented on a network security module, such as network security module  304 , additional processing may occur, such as determining whether the network activity is in violation of any security measures implemented by the network security module. This processing of unsecured network activity has been described above. 
   If the network activity is a secured communication, at block  1308 , a decryption key for decrypting the secured communication is obtained. At block  1310 , the secured communication is temporarily decrypted using the obtained decryption key. Thereafter, at decision block  1312  ( FIG. 13B ), a determination is made as to whether the decrypted communication is prohibited according to the security measures implemented by the network security module  304 . If the communication represents prohibited network activity, at block  1314 , the secured communication is disallowed, i.e., not forwarded to the computing device. Thereafter, the routine  1300  returns to block  1302  ( FIG. 13A ) to continue monitoring network activity. 
   If the decrypted communication is not prohibited by the implemented security measures, at decision block  1316  an additional determination may be made as to whether the decrypted communication is an exploit. As mentioned above, the network security module  304  may operate in conjunction with external anti-virus software. In this environment, the network security module  304  delivers the temporarily decrypted communication to the anti-virus software for evaluation as to whether it is an exploit, or infected by an exploit. If the decrypted communication is determined to be an exploit, at block  14314 , the secured communication is disallowed, and the routine  1300  returns to block  14302  ( FIG. 13A ) to continue monitoring network activity. Alternatively, if the decrypted communication is determined to not be an exploit, at block  1318 , the secured communication is forwarded to the computing device. Thereafter, the routine  1300  returns to block  1302  ( FIG. 13A ) to continue monitoring network activity. 
   While numerous embodiments, including the preferred embodiment, of the invention have been illustrated and described, it will be appreciated that various changes can be made therein without departing from the spirit and scope of the invention.