The present invention is generally directed to managing the security of a network. More specifically, the present invention provides kernel-level protection of a computer system from rogue or malicious computer programs.
The security of computing networks is an increasingly important issue. With the growth of wide area networks (WANs), such as the Internet and the World Wide Web, people rely on computing networks to locate, transfer, and store an increasing amount of valuable information. This is also true of local area networks (LANs) used by companies, schools, organizations, and other enterprises. LANs generally are used by a bounded group of people in an organization to communicate and store electronic documents and information. LANs typically are coupled to or provide access to other local or wide area networks. Greater use and availability of computing networks produces a corresponding increase in the size and complexity of computing networks.
With the growth of networks and the importance of information available on the networks, there is also a need for better and more intelligent security. One approach to securing larger and more complex computer networks is to use a greater number and variety of security assessment and intrusion detection devices. Security assessment devices can be used to evaluate elements in the network such as desktop computers, servers, and routers, and determine their respective vulnerability to attack from hackers. Intrusion detection devices, on the other hand, identify and prevent entry of foreign or malicious computer programs and can notify a network manager of the presence or attempted entry of such a computer program. Security assessment and intrusion detection devices can also be used more frequently to monitor the activity or status of the elements in a computing network.
However, simply adding devices or filters to a network is not always the only and best solution to maintaining network security. Adding security devices can complicate the network and inundate the network manager with security data. Threats to the security of a device or network can take a variety of forms including the introduction of harmful computer code, unauthorized attempts to gain access, and misuse by people with authority to use a device or network. The various types of harmful computer code that can threaten a computing device or distributed computing system can generally be categorized as either a virus or some form of “malware”. Computer viruses harm computing devices and systems by entering and then propagating. In some respects, the propagating nature of computer viruses makes them easier to detect and there are many commercially available products that detect and exclude viruses from computing devices and systems.
In contrast, malware is a general description for other types of programs and computer code that are designed to harm a computing device or system in ways other than simply propagating as a virus does. Malware presents a more sophisticated challenge for network security and traditional anti-virus software is not designed to prevent malware from harming computing devices and networks. Malware can take a variety of forms including corrupted applications and applications that retrieve corrupted code that is modified to harm a computing device or network.
There are generally two different approaches to protecting against malware. The first approach involves virtual execution of a computer code to attempt to identify harmful code before it is allowed to actually execute. Virtual execution is limited in its ability to detect harmful code because it does not actually execute every process of the code. Instead, the virtual execution technique performs a quick and high-level “walk through” of the processes in the code to attempt to detect suspicious patterns in the code. By its nature, the virtual execution technique is limited in its ability to detect suspicious activities embedded in a piece of code. As a result, when the virtual execution technique is implemented, it must be used conservatively which produces a high number of false positive alerts. In other words, because the virtual execution security technique is not as accurate as actually running the code, it is implemented to identify a broader scope of potentially suspicious code and produces a greater number of alerts to the user. A high percentage of false positive security alerts is undesirable because it translates into a greater number of security interruptions for the user.
The second approach involves controlling and monitoring a computing device in real time while it is actually running a program and attempting to anticipate any harmful activity the program may try to initiate. One example of a real-time solution is set forth in U.S. Pat. No. 5,987,611, which describes a client-based monitoring system for filtering network access in conjunction with a centralized enforcement supervisor. The supervisor maintains access rules for the client-based filtering and verifies the existence and proper operation of the client-based filter application. Access rules specify network access criteria for a client, such as (1) total time a user can be connected to the Internet (e.g., per day, week, month, or the like), (2) time a user can interactively use the Internet (e.g., per day, week, month, or the like), (3) a list of applications or application versions that a user can or cannot use in order to access the Internet, (4) a list of URLs (or WAN addresses) that a user application can (or cannot) access, (5) a list of protocols or protocol components that a user application can or cannot use, and (6) rules to determine what events should be logged (including how long are logs to be kept).
By intercepting process loading and unloading and keeping a list of currently-active processes, each client process can be checked for various characteristics, including checking executable names, version numbers, executable file checksums, version header details, configuration settings, and the like. With this information, a determination can be made whether a particular process in question should have access to the Internet and what kind of access (i.e., protocols, Internet addresses, time limitations, and the like) is permissible for the given specific user.
The limitation with the solution presented in U.S. Pat. No. 5,987,611 and other similar real-time prior art solutions is that they are packet based. In other words, the security decisions are based on the data packets that are passing between the computing device that is being monitored and external networks or computing resources. When security decisions are based on the traffic of data packets, it is more likely the security systems will not detect harmful activities until after the harm has already begun. Accordingly, the second approach is not satisfactory because conventional real-time security monitoring solutions do not detect security problems early enough and allow time for a response before the malicious program does harm.
In view of the foregoing, there is a need in the art for a security system which will provide early detection of security threats to a computing device or network before any harm can be done. Specifically, a need exists to be able to quickly and efficiently examine code in real time, but before it is able to harm a computing device or system. A further need exists for a computer security system that can accurately identify security threats contained in software programs so that users are not interrupted frequently to address potential security questions. Finally, a security system is needed that can efficiently and effectively respond to security threats detected in software programs.
The present invention satisfies the above-described needs by evaluating and monitoring software programs running on a computing device. The invention uses a protector system that comprises several different software modules for performing evaluation, detection, monitoring, and response functions. Implementing a two-phased approach at the kernel level of the computing device's operating system, the present invention provides fast and efficient security that minimizes interruptions for the user. The first phase, the pre-execution process, performs a rapid validation check to determine whether the program has been approved for the computing device or network. If the program is validated, it can be run without further monitoring or interruptions for the user. If the program is not validated, it can be monitored at the kernel level of the operating system during the second phase, while the program is executing. Detection and monitoring modules of the present invention can identify suspicious activities triggered by the program and monitor the activities before they are able to cause harm to the computing device or network. In the event the program is initiating harmful activities, the protector software module can respond by taking remedial action to address the threat.
In one aspect, the present invention comprises a method for determining whether a program is approved to execute by comparing it to a predetermined list of approved programs. The operating system kernel notifies a pre-execution monitoring module when a new program begins to load so that it can be validated before execution. A validation module can compare the new program to the predetermined list of approved programs. If the new program is validated, the pre-execution monitoring module allows the operating system to continue loading and executing the program. Once a program is validated in the pre-execution phase, little or no additional security monitoring needs to be performed on the new program while it is executing. If the new program is not validated, the program can continue to load and execute, but other execution security modules are responsible for detecting, monitoring, and responding to suspicious activities. For example, the execution security modules can control access to certain files or registry settings, or limit network access. The execution security modules can also consider whether a new program was previously permitted to execute on the computing device.
In another aspect, the present invention provides a protector system for improving and expediting security on a computing device or network. The protector system comprises several software modules coupled to the operating system kernel of the computing device that manage and control activities at the kernel level. The protector system comprises a pre-execution monitoring component that can suspend a new program as it is loading into memory and before it can execute. The pre-execution monitoring component can operate with a validation module to determine whether the user has already validated the new program. If the pre-execution component validates the new program, it can continue to load and execute with minimal security concerns. However, if the pre-execution component is unable to validate the new program, execution security modules can perform additional monitoring while the new program is executing. Execution security modules can intercept various operating system triggers and calls before they are executed to determine if the activity is suspicious. If the program's activities are deemed suspicious or malicious, the execution security modules can respond by terminating the activities or taking other responsive measures to protect the security of the computing device or network.
These and other aspects of the invention will be described below in connection with the drawing set and the appended specification and claim set.
The present invention employs a protector system comprising several software modules to support the protection of computing devices and computing networks from malicious software programs. Specifically, the present invention employs a two-step process to validate software programs and monitor non-validated software programs. The two-step process provides an efficient and effective means for protecting a computing device or network while minimizing disruptions for the user. In the first phase of the process, the protector system validates authorized programs to ensure that they have not been corrupted before running them. For programs that cannot be validated, the protector system can monitor the programs as they execute during the second phase. If during the monitoring step, the program initiates any suspicious activities, the protector system can respond by taking one or more remedial actions.
Although the exemplary embodiments will be generally described in the context of software modules running in a distributed computing environment, those skilled in the art will recognize that the present invention also can be implemented in conjunction with other program modules for other types of computers. In a distributed computing environment, program modules may be physically located in different local and remote memory storage devices. Execution of the program modules may occur locally in a stand-alone manner or remotely in a client/server manner. Examples of such distributed computing environments include local area networks of an office, enterprise-wide computer networks, and the global Internet.
The detailed description that follows is represented largely in terms of processes and symbolic representations of operations in a distributed computing environment by conventional computer components, such as database servers, application servers, routers, security devices, firewalls, clients, workstations, memory storage devices, display devices and input devices. Each of these conventional distributed computing components is accessible via a communications network, such as a wide area network or local area network.
The processes and operations performed by the computer include the manipulation of signals by a client or server and the maintenance of these signals within data structures resident in one or more of the local or remote memory storage devices. Such data structures impose a physical organization upon the collection of data stored within a memory storage device and represent specific electrical or magnetic elements. These symbolic representations are the means used by those skilled in the art of computer programming and computer construction to most effectively convey teachings and discoveries to others skilled in the art.
The present invention also includes computer programs that embody the functions described herein and illustrated in the appended flow charts. However, it should be apparent that there could be many different ways of implementing the invention in computer programming, and the invention should not be construed as limited to any one set of computer program instructions. Further, a skilled programmer would be able to write such a computer program to implement the disclosed invention based on the flow charts and associated description in the application text, for example. Therefore, disclosure of a particular set of program code instructions is not considered necessary for an adequate understanding of how to make and use the invention. The inventive functionality of the claimed computer program will be explained in more detail in the following description in conjunction with figures illustrating the program flow.
Referring now to the drawings, in which like numerals represent like elements throughout the several figures, aspects of the present invention and the preferred operating environment will be described.
Referring to
Beginning with the user space 105, the system management module 125 manages security operations on the computing device 103 and can coordinate the functions of the protector system with other security devices that may be coupled to or operating on the computing device 103. If the computing device is coupled to a network 102, as shown in the exemplary architecture in
In the user space 105, the command line interface 120 and the protector application 115 are coupled to the system management module 125. The command line interface 120 is typically implemented as a wrapper around the protector API library 117. The primary purpose of the command line interface 120 is to configure various security settings, such as how to respond to a certain threat, and to load the settings into the protector driver management interface 145. The protector application 115 communicates with the protector driver management interface 145 via the API library 117 and provides user-level services in the protector system 104. The protector application 115 can provide the initial configuration load when the protector system 104 is initialized and can interact with a user on certain security decisions. The protector application 115 also interacts with database 110. The database 110 can comprise various data used in performing protector security functions, which will be described in greater detail in connection with
Communication between the user space 105 and the kernel space 107 is performed with the API library 117 and the protector driver management interface 145. The API library is preferably implemented as a C level application programming interface that allows various processes to maintain the data in database 110 and provide instructions to the drivers in the kernel space 107.
The binary execution monitor 125 implements the primary functions of the protector system 104. The binary execution monitor 125 is an in-kernel driver that monitors the loading of binary executable files and other executable libraries in real time by recognizing and validating any executable file that is being loaded. Validation of an executable file is implemented with the validity module 108 and can be performed using a variety of techniques described in greater detail herein. When the binary execution monitor 125 is installed, it establishes the presence of its processing at the system process-creation hooks 170 within the kernel where it can observe all process and creation activities. When a program is initially loaded into memory in anticipation of execution, the binary execution monitor 125 works with the validity module 108 to validate the program. Using the system process-creation hooks 170, the binary execution monitor 125 can recognize the initial loading of executable files, and any subsequent loading of executable libraries that can occur while a program is executing. The binary execution monitor's 125 functions performed prior to execution of an executable file can also be generally described as being performed by a pre-execution module of the protector system 104.
If the binary execution monitor 125 is unable to validate a program, the detect drivers 153 can monitor the non-validated program when it is executing and identify potential threats to the computing device 103 before they are executed. The detect drivers 153 are plug-in modules linked to the system call hooks 175 within the kernel. The detect drivers 153 communicate system call hooks, using component interface 150, to associated behavior monitoring modules 128 that can react to the suspicious activities. The binary execution monitor 125 also works in conjunction with the behavior monitoring modules 128 to analyze and respond to system call hooks communicated from the detect drivers 153. The behavior monitoring modules 128 are a collection of in-kernel modules that are associated with the detect drivers 153. For example, the privacy monitor 130 reacts to a program's attempt to use a network connection to other computer systems. The file protection monitor 135 can react to an attempt to alter a specified file. The registry protection monitor 140 protects against unauthorized changes to registry settings. Generally, the behavior monitors 128 can take direct action to address a security threat or instruct the protector application 115 to query the user for instructions on how to handle the threat. Other behavior monitors 128 and their associated detect drivers 153 can be plugged into the protector system 104 to implement different security functions. Furthermore, those skilled in the art will understand that the architecture 101 of the protector system 104 shown in
Referring to
Steps 315 and 320 provide specific examples of validation steps conducted during the setup process using the validity module 108. The binary execution monitor 125 works with the validity module 108 to validate each of the allowed executable files. The validation module 108 can be any one of a variety of pieces of software that are used to verify that a program has not been tampered with. For example, the validation module can represent the MD5 software module commonly known to those in the art. The MD5 software module calculates a checksum for each allowed program and that checksum is stored for later comparison. As described in connection with
Finally, in step 325 of the setup process 300, the configuration settings chosen by the user are stored in the database 110. The configuration settings can be chosen by the user of the computing device 103 or by a network administrator if the computing device 103 is coupled to a network. The configuration settings can include predetermined responses to particular threats and decision rules as to when the user should be queried about a security threat.
The subject matter of the remaining drawings,
Referring to
In step 420, the kernel will determine whether this executable is already running on the computing device 103. If in fact the executable is running, the “yes” branch is followed to step 425 and the executable will not be loaded. If the executable is already running, it has been approved previously and the protector system 104 can skip the validation process described in connection with
The pre-execution process performed by the binary execution monitor 125 and the other associated components of the protector system 104 supports an initial determination of whether the new executable is safe for loading onto the computing device 103. Continuing with
Referring to
As mentioned above, the exemplary processes illustrated in
Although the user has allowed the non-validated executable file to proceed, the protector system 104 will take steps to protect the computing device 103 and the network 102 that it may be connected to. Steps 625 through 645 illustrate exemplary processes that may be performed in allowing the non-validated executable file to proceed. In step 625, the protector application 115 will notify the system management module 125 that the non-validated executable file is allowed to execute. This notification will serve to allow the system management module 125 to take any precautions, in step 630, to protect other components of the computing device 103 or other network components coupled to the computing device. In step 635, the binary execution monitor 125 will release the suspended state for the new executable and the program will continue to load and execute in step 640.
As the program is executing, the other components of the protector system 104, such as the detect drivers 153 and the behavior monitoring modules 128, operate to prevent the non-validated program from performing any malicious activities on the computing device 103 or on the network 102. The detect drivers 153 are linked to the kernel activities through system call hooks 175. In step 645, certain activities performed by the program will trigger system call hooks that, in turn, trigger the detect drivers 153. The detect drivers 153 are then coupled to the behavior monitoring modules 128, which can observe the program's behavior and respond to any malicious activity. An exemplary process 645 for triggering a detect driver 153 is illustrated in greater detail in
Referring to
Any files that have restricted access, as determined by the user or network administrator in the setup process 300, will be identified in the file lock data in database 210. The file protection monitor 135 consults the file lock data in step 720 to determine whether the subject file has been restricted. If the file is not restricted, the file protection monitor 135 permits the system call hook 175 to proceed with opening the file. However, if the file does appear in the file lock data 220 in step 735, the file protection monitor can limit access to the file. For instance, the file protection monitor can provide read-only access to a file or can prohibit access entirely.
In other examples of how the behavior monitors function, the type of response can depend on the type of activity that is detected as well as the configuration settings 215 selected by the user or the network administrator. For instance, if the program is attempting to perform functions that may seriously impair the computing device 103 or the network 102, the protector system 104 may immediately terminate execution of the program. Alternatively, if the file protection monitor 135 determines that the threat is less severe, the protector application 115 may simply query the user to insure that it is safe to continue executing the program.
In conclusion, the present invention enables and supports security from malicious software programs for a computing device or computing network. The two-step process of the protector system provides an effective and efficient method for implementing security while minimizing the burdens and interruptions for the user. The pre-execution process provides an efficient method for determining whether an uncorrupted program is allowed to execute. By validating certain programs during the pre-execution process, the protector system minimizes the amount of work that must be done in monitoring and controlling programs during the execution phase. The validation step also reduces the number of false positive alarms, thereby reducing security interruptions for the user.
It will be appreciated that the present invention fulfills the needs of the prior art described herein and meets the above-stated objects. While there has been shown and described the preferred embodiment of the invention, it will be evident to those skilled in the art that various modifications and changes may be made thereto without departing from the spirit and the scope of the invention as set forth in the appended claims and equivalence thereof. Although the present invention has been described as operating on a computing device coupled to a network, it should be understood that the invention can be applied to other types of distributed computing environments. Furthermore, it should be readily apparent that the components of the protector system can be located in various local and remote locations of a distributed computing environment.
The present application is a continuation of and claims priority to pending U.S. patent application Ser. No. 10/336,299, filed Jan. 3, 2003, which claims priority to and incorporates herein provisional patent application entitled, “System and Method for the Managed Security Control of Processes on a Computer System,” filed on Jan. 4, 2002 and assigned U.S. application Ser. No. 60/345,432.
Number | Name | Date | Kind |
---|---|---|---|
4223380 | Antonaccio et al. | Sep 1980 | A |
4400769 | Kaneda et al. | Aug 1983 | A |
4672609 | Humphrey et al. | Jun 1987 | A |
4773028 | Tallman | Sep 1988 | A |
4819234 | Huber | Apr 1989 | A |
4975950 | Lentz | Dec 1990 | A |
5032979 | Hecht et al. | Jul 1991 | A |
5121345 | Lentz | Jun 1992 | A |
5204966 | Wittenberg et al. | Apr 1993 | A |
5210704 | Husseiny | May 1993 | A |
5274824 | Howarth | Dec 1993 | A |
5278901 | Shieh et al. | Jan 1994 | A |
5309562 | Li | May 1994 | A |
5311593 | Carmi | May 1994 | A |
5345595 | Johnson et al. | Sep 1994 | A |
5347450 | Nugent | Sep 1994 | A |
5353393 | Bennett et al. | Oct 1994 | A |
5359659 | Rosenthal | Oct 1994 | A |
5371852 | Attanasio et al. | Dec 1994 | A |
5398196 | Chambers | Mar 1995 | A |
5414833 | Hershey et al. | May 1995 | A |
5440723 | Arnold et al. | Aug 1995 | A |
5452442 | Kephart | Sep 1995 | A |
5454074 | Hartel et al. | Sep 1995 | A |
5475839 | Watson et al. | Dec 1995 | A |
5511184 | Lin | Apr 1996 | A |
5515508 | Pettus et al. | May 1996 | A |
5522026 | Records et al. | May 1996 | A |
5539659 | McKee et al. | Jul 1996 | A |
5557742 | Smaha et al. | Sep 1996 | A |
5586260 | Hu | Dec 1996 | A |
5590331 | Lewis et al. | Dec 1996 | A |
5606668 | Shwed | Feb 1997 | A |
5623600 | Ji et al. | Apr 1997 | A |
5623601 | Vu | Apr 1997 | A |
5630061 | Richter et al. | May 1997 | A |
5649095 | Cozza | Jul 1997 | A |
5649185 | Antognini et al. | Jul 1997 | A |
5675711 | Kephart et al. | Oct 1997 | A |
5696486 | Poliquin et al. | Dec 1997 | A |
5696822 | Nachenberg | Dec 1997 | A |
5706210 | Kumano et al. | Jan 1998 | A |
5715395 | Brabson et al. | Feb 1998 | A |
5734697 | Jabbarnezhad | Mar 1998 | A |
5745692 | Lohmann, II et al. | Apr 1998 | A |
5748098 | Grace | May 1998 | A |
5761504 | Corrigan et al. | Jun 1998 | A |
5764887 | Kells et al. | Jun 1998 | A |
5764890 | Glasser et al. | Jun 1998 | A |
5765030 | Nachenberg et al. | Jun 1998 | A |
5774727 | Walsh et al. | Jun 1998 | A |
5787177 | Leppek | Jul 1998 | A |
5790799 | Mogul | Aug 1998 | A |
5796942 | Esbensen | Aug 1998 | A |
5798706 | Kraemer et al. | Aug 1998 | A |
5812763 | Teng | Sep 1998 | A |
5815574 | Fortinsky | Sep 1998 | A |
5822517 | Dotan | Oct 1998 | A |
5826013 | Nachenberg | Oct 1998 | A |
5828833 | Belville et al. | Oct 1998 | A |
5832208 | Chen et al. | Nov 1998 | A |
5832211 | Blakley et al. | Nov 1998 | A |
5835726 | Shwed et al. | Nov 1998 | A |
5838903 | Blakely et al. | Nov 1998 | A |
5842002 | Schnurer et al. | Nov 1998 | A |
5845067 | Porter et al. | Dec 1998 | A |
5848233 | Radia et al. | Dec 1998 | A |
5854916 | Nachenberg | Dec 1998 | A |
5857191 | Blackwell, Jr. et al. | Jan 1999 | A |
5864665 | Tran | Jan 1999 | A |
5864803 | Nussbaum | Jan 1999 | A |
5872915 | Dykes et al. | Feb 1999 | A |
5872978 | Hoskins | Feb 1999 | A |
5875296 | Shi et al. | Feb 1999 | A |
5878420 | de la Salle | Mar 1999 | A |
5881236 | Dickey | Mar 1999 | A |
5884033 | Duvall et al. | Mar 1999 | A |
5892903 | Klaus | Apr 1999 | A |
5899999 | De Bonet | May 1999 | A |
5905859 | Holloway et al. | May 1999 | A |
5907834 | Kephart et al. | May 1999 | A |
5919257 | Trostle | Jul 1999 | A |
5919258 | Kayashima et al. | Jul 1999 | A |
5922051 | Sidey | Jul 1999 | A |
5925126 | Hsieh | Jul 1999 | A |
5931946 | Terada et al. | Aug 1999 | A |
5940591 | Boyle et al. | Aug 1999 | A |
5948104 | Gluck et al. | Sep 1999 | A |
5950012 | Shiell et al. | Sep 1999 | A |
5961644 | Kurtzberg et al. | Oct 1999 | A |
5964839 | Johnson et al. | Oct 1999 | A |
5964889 | Nachenberg | Oct 1999 | A |
5974237 | Shurmer et al. | Oct 1999 | A |
5974457 | Waclawsky et al. | Oct 1999 | A |
5978917 | Chi | Nov 1999 | A |
5983270 | Abraham et al. | Nov 1999 | A |
5983348 | Ji | Nov 1999 | A |
5983350 | Minear et al. | Nov 1999 | A |
5987606 | Cirasole et al. | Nov 1999 | A |
5987610 | Franczek et al. | Nov 1999 | A |
5987611 | Freund | Nov 1999 | A |
5991856 | Spilo et al. | Nov 1999 | A |
5991881 | Conklin et al. | Nov 1999 | A |
5999711 | Misra et al. | Dec 1999 | A |
5999723 | Nachenberg | Dec 1999 | A |
6003132 | Mann | Dec 1999 | A |
6006016 | Faigon et al. | Dec 1999 | A |
6009467 | Ratcliff et al. | Dec 1999 | A |
6014645 | Cunningham | Jan 2000 | A |
6016553 | Schneider et al. | Jan 2000 | A |
6021510 | Nachenberg | Feb 2000 | A |
6026442 | Lewis et al. | Feb 2000 | A |
6029256 | Kouznetsov | Feb 2000 | A |
6035323 | Narayen et al. | Mar 2000 | A |
6035423 | Hodges et al. | Mar 2000 | A |
6041347 | Harsham et al. | Mar 2000 | A |
6052709 | Paul | Apr 2000 | A |
6061795 | Dircks et al. | May 2000 | A |
6067410 | Nachenberg | May 2000 | A |
6070190 | Reps et al. | May 2000 | A |
6070244 | Orchier et al. | May 2000 | A |
6073172 | Frailong et al. | Jun 2000 | A |
6081894 | Mann | Jun 2000 | A |
6085224 | Wagner | Jul 2000 | A |
6088803 | Tso et al. | Jul 2000 | A |
6088804 | Hill et al. | Jul 2000 | A |
6092194 | Touboul | Jul 2000 | A |
6094731 | Waldin et al. | Jul 2000 | A |
6098173 | Elgressy et al. | Aug 2000 | A |
6104783 | DeFino | Aug 2000 | A |
6108799 | Boulay et al. | Aug 2000 | A |
6118940 | Alexander, III et al. | Sep 2000 | A |
6119165 | Li et al. | Sep 2000 | A |
6119234 | Aziz et al. | Sep 2000 | A |
6122738 | Millard | Sep 2000 | A |
6144961 | de la Salle | Nov 2000 | A |
6154844 | Touboul et al. | Nov 2000 | A |
6161109 | Matamoros et al. | Dec 2000 | A |
6167520 | Touboul | Dec 2000 | A |
6173413 | Slaughter et al. | Jan 2001 | B1 |
6185689 | Todd, Sr. et al. | Feb 2001 | B1 |
6195687 | Greaves et al. | Feb 2001 | B1 |
6199181 | Rechef et al. | Mar 2001 | B1 |
6205552 | Fudge | Mar 2001 | B1 |
6220768 | Barroux | Apr 2001 | B1 |
6226372 | Beebe et al. | May 2001 | B1 |
6230288 | Kuo et al. | May 2001 | B1 |
6266773 | Kisor et al. | Jul 2001 | B1 |
6266774 | Sampath et al. | Jul 2001 | B1 |
6271840 | Finseth et al. | Aug 2001 | B1 |
6272641 | Ji | Aug 2001 | B1 |
6275938 | Bond et al. | Aug 2001 | B1 |
6275942 | Bernhard et al. | Aug 2001 | B1 |
6278886 | Hwang | Aug 2001 | B1 |
6279113 | Vaidya | Aug 2001 | B1 |
6282546 | Gleichauf et al. | Aug 2001 | B1 |
6298445 | Shostack et al. | Oct 2001 | B1 |
6301668 | Gleichauf et al. | Oct 2001 | B1 |
6314520 | Schell et al. | Nov 2001 | B1 |
6314525 | Mahalingham et al. | Nov 2001 | B1 |
6321338 | Porras et al. | Nov 2001 | B1 |
6324627 | Kricheff et al. | Nov 2001 | B1 |
6324647 | Bowman-Amuah | Nov 2001 | B1 |
6324656 | Gleichauf et al. | Nov 2001 | B1 |
6334213 | Li | Dec 2001 | B1 |
6338141 | Wells | Jan 2002 | B1 |
6347374 | Drake et al. | Feb 2002 | B1 |
6353385 | Molini et al. | Mar 2002 | B1 |
6357008 | Nachenberg | Mar 2002 | B1 |
6377994 | Ault et al. | Apr 2002 | B1 |
6396845 | Sugita | May 2002 | B1 |
6397242 | Devine et al. | May 2002 | B1 |
6397245 | Johnson, II et al. | May 2002 | B1 |
6405318 | Rowland | Jun 2002 | B1 |
6405364 | Bowman-Amuah | Jun 2002 | B1 |
6408391 | Huff et al. | Jun 2002 | B1 |
6415321 | Gleichauf et al. | Jul 2002 | B1 |
6429952 | Olbricht | Aug 2002 | B1 |
6434615 | Dinh et al. | Aug 2002 | B1 |
6438600 | Greenfield et al. | Aug 2002 | B1 |
6445822 | Crill et al. | Sep 2002 | B1 |
6453345 | Trcka et al. | Sep 2002 | B2 |
6453346 | Garg et al. | Sep 2002 | B1 |
6460141 | Olden | Oct 2002 | B1 |
6463426 | Lipson et al. | Oct 2002 | B1 |
6467002 | Yang | Oct 2002 | B1 |
6470449 | Blandford | Oct 2002 | B1 |
6477585 | Cohen et al. | Nov 2002 | B1 |
6477648 | Schell et al. | Nov 2002 | B1 |
6477651 | Teal | Nov 2002 | B1 |
6484203 | Porras et al. | Nov 2002 | B1 |
6487666 | Shanklin et al. | Nov 2002 | B1 |
6493752 | Lee et al. | Dec 2002 | B1 |
6496858 | Frailong et al. | Dec 2002 | B1 |
6499107 | Gleichauf et al. | Dec 2002 | B1 |
6510523 | Perlman et al. | Jan 2003 | B1 |
6517587 | Satyavolu et al. | Feb 2003 | B2 |
6519647 | Howard et al. | Feb 2003 | B1 |
6519703 | Joyce | Feb 2003 | B1 |
6530024 | Proctor | Mar 2003 | B1 |
6535227 | Fox et al. | Mar 2003 | B1 |
6546493 | Magdych et al. | Apr 2003 | B1 |
6563959 | Troyanker | May 2003 | B1 |
6574737 | Kingsford et al. | Jun 2003 | B1 |
6578147 | Shanklin et al. | Jun 2003 | B1 |
6584454 | Hummel, Jr. et al. | Jun 2003 | B1 |
6601190 | Meyer et al. | Jul 2003 | B1 |
6606744 | Mikurak | Aug 2003 | B1 |
6618501 | Osawa et al. | Sep 2003 | B1 |
6628824 | Belanger | Sep 2003 | B1 |
6647139 | Kunii et al. | Nov 2003 | B1 |
6647400 | Moran | Nov 2003 | B1 |
6661904 | Sasich et al. | Dec 2003 | B1 |
6668082 | Davison et al. | Dec 2003 | B1 |
6668084 | Minami | Dec 2003 | B1 |
6681331 | Munson et al. | Jan 2004 | B1 |
6691232 | Wood et al. | Feb 2004 | B1 |
6694434 | McGee et al. | Feb 2004 | B1 |
6704874 | Porras et al. | Mar 2004 | B1 |
6708212 | Porras et al. | Mar 2004 | B2 |
6711127 | Gorman et al. | Mar 2004 | B1 |
6711615 | Porras et al. | Mar 2004 | B2 |
6718383 | Hebert | Apr 2004 | B1 |
6721806 | Boyd et al. | Apr 2004 | B2 |
6725377 | Kouznetsov | Apr 2004 | B1 |
6725378 | Schuba et al. | Apr 2004 | B1 |
6775780 | Muttik | Aug 2004 | B1 |
6792144 | Yan et al. | Sep 2004 | B1 |
6792546 | Shanklin et al. | Sep 2004 | B1 |
6816973 | Gleichauf et al. | Nov 2004 | B1 |
6839850 | Campbell et al. | Jan 2005 | B1 |
6851057 | Nachenberg | Feb 2005 | B1 |
6871284 | Cooper et al. | Mar 2005 | B2 |
6886102 | Lyle | Apr 2005 | B1 |
6889168 | Hartley et al. | May 2005 | B2 |
6912676 | Gusler et al. | Jun 2005 | B1 |
20010034847 | Gaul, Jr. | Oct 2001 | A1 |
20020032717 | Malan et al. | Mar 2002 | A1 |
20020032793 | Malan et al. | Mar 2002 | A1 |
20020032880 | Poletto et al. | Mar 2002 | A1 |
20020035698 | Malan et al. | Mar 2002 | A1 |
20020042886 | Lahti et al. | Apr 2002 | A1 |
20020083331 | Krumel | Jun 2002 | A1 |
20020083334 | Rogers et al. | Jun 2002 | A1 |
20020138753 | Munson | Sep 2002 | A1 |
20020144156 | Copeland, III | Oct 2002 | A1 |
20020184520 | Bush et al. | Dec 2002 | A1 |
20030037136 | Labovitz et al. | Feb 2003 | A1 |
20030088791 | Porras et al. | May 2003 | A1 |
20030101381 | Mateev et al. | May 2003 | A1 |
20030212903 | Porras et al. | Nov 2003 | A1 |
20040010718 | Porras et al. | Jan 2004 | A1 |
20050021994 | Barton et al. | Jan 2005 | A1 |
Number | Date | Country |
---|---|---|
0 636 977 | May 2001 | EP |
0 985 995 | Aug 2003 | EP |
WO 9325024 | May 1993 | WO |
WO 9841919 | Sep 1998 | WO |
WO 9900720 | Jan 1999 | WO |
WO 9913427 | Mar 1999 | WO |
WO 9915966 | Apr 1999 | WO |
WO 9950734 | Oct 1999 | WO |
WO 9953391 | Oct 1999 | WO |
WO 9957626 | Nov 1999 | WO |
WO 0002115 | Jan 2000 | WO |
WO 0010278 | Feb 2000 | WO |
WO 0025214 | May 2000 | WO |
WO 0025527 | May 2000 | WO |
WO 0034867 | Jun 2000 | WO |
WO 0054458 | Sep 2000 | WO |
WO 0184285 | Nov 2001 | WO |
WO 0206928 | Jan 2002 | WO |
WO 02056152 | Jul 2002 | WO |
WO 02101516 | Dec 2002 | WO |
Number | Date | Country | |
---|---|---|---|
20070260880 A1 | Nov 2007 | US |
Number | Date | Country | |
---|---|---|---|
60345432 | Jan 2002 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 10336299 | Jan 2003 | US |
Child | 11824986 | US |