The present disclosure relates generally to microprocessor systems, and more specifically to microprocessor systems that may operate in a trusted or secured environment.
The increasing number of financial and personal transactions being performed on local or remote microcomputers has given impetus for the establishment of “trusted” or “secured” microprocessor environments. The problem these environments try to solve is that of loss of privacy, or data being corrupted or abused. Users do not want their private data made public. They also do not want their data altered or used in inappropriate transactions. Examples of these include unintentional release of medical records or electronic theft of funds from an on-line bank or other depository. Similarly, content providers seek to protect digital content (for example, music, other audio, video, or other types of data in general) from being copied without authorization.
One component of such a trusted microprocessor system may be a trusted platform module (TPM), as disclosed in the Trusted Computing Platform Alliance (TCPA) Main Specification, version 1. 1a,1 Dec. 1, 2001, issued by the Trusted Computing Platform Alliance (available at www.trustedpc.com at the time of filing of the present application). The TPM may include several special registers, called platform configuration registers (PCR). The PCRs may be used to store encrypted digests of files, including software programs, which may later be retrieved to further the process of authentication. As the contents of these PCRs are therefore significant to the secure or trusted nature of the system, the PCRs should not be reset by general-purpose operations of the system. Current design limits the PCRs to be reset only upon a general system reset (e.g. power-on reset).
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
The following description describes techniques for resetting or modifying special registers used in a trusted or secured environment in a microprocessor system. In the following description, numerous specific details such as logic implementations, software module allocation, encryption techniques, bus signaling techniques, and details of operation are set forth in order to provide a more thorough understanding of the present invention. It will be appreciated, however, by one skilled in the art that the invention may be practiced without such specific details. In other instances, control structures, gate level circuits and full software instruction sequences have not been shown in detail in order not to obscure the invention. Those of ordinary skill in the art, with the included descriptions, will be able to implement appropriate functionality without undue experimentation. The invention is disclosed in the form of a microprocessor system. However, the invention may be practiced in other forms of processor such as a digital signal processor, a minicomputer, or a mainframe computer.
In one embodiment, a new kind of platform configuration register (PCR) is used in conjunction with a trusted platform module (TPM) within a security token. Each new PCR may have associated with it a pair of flags that may be used to indicate whether or not the PCR may be either reset or have its contents modified. The security token may have a bus interface that may receive special locality-confirming messages. These locality-confirming messages may indicate both that the security token is in direct physical connection with other system resources and also that trusted software desires to reset or modify PCR contents.
Referring now to
SVMM 350 also selectively permits or prevents direct access to hardware resources 380 from one or more trusted or secure kernels 360 and one or more trusted applications 370. Such a trusted or secure kernel 360 and trusted applications 370 may be limited in size and functionality to aid in the ability to perform trust analysis upon it. The trusted application 370 may be any software code, program, routine, or set of routines which is executable in a secure environment. Thus, the trusted application 370 may be a variety of applications, or code sequences, or may be a relatively small application such as a Java applet.
Instructions or operations normally performed by operating system 340 or kernel 360 that could alter system resource protections or privileges may be trapped by SVMM 350, and selectively permitted, partially permitted, or rejected. As an example, in a typical embodiment, instructions that change the processor's page table that would normally be performed by operating system 340 or kernel 360 would instead be trapped by SVMM 350, which would ensure that the request was not attempting to change page privileges outside the domain of its virtual machine.
Referring now to
Processors 202, 212, 222 may contain certain special circuits or logic elements to support secure or trusted operations. For example, processor 202 may contain secure enter (SENTER) logic 204 to support the execution of special SENTER instructions that may initiate trusted operations. SENTER is one example of a privileged instruction, defined as a machine instruction that usually can only be executed when in a special mode and usually available to the operating system or systems but not to other users. Privileged operations may occur upon the execution of privileged instructions. Processor 202 may also contain bus message logic 206 to support special bus messages on system bus 230 in support of special SENTER operations. In alternate embodiments, memory control functions of chipset 240 may be allocated to circuits within the processors, and for multiple processors may be included on a single die. In these embodiments, special bus messages may also be sent on busses internal to the processors. The use of special bus messages may increase the security or trustability of the system for several reasons. Circuit elements such as processors 202, 212, and 222 or chipset 240 may only issue or respond to such messages if they contain the appropriate logic elements of embodiments of the present disclosure, or their equivalents. Therefore successful exchange of the special bus messages may help ensure proper system configuration. Special bus messages may also permit activities that should normally be prohibited, such as resetting a platform configuration register 286. The ability of potentially hostile untrusted code to spy on certain bus transactions may be curtailed by allowing special bus messages to be issued only in response to special security instructions.
Additionally, processor 202 may contain secure memory to support secure initialization operations. In one embodiment secure memory 208 may be an internal cache of processor 202, perhaps operating in a special mode.
A “chipset” may be defined as a group of circuits and logic that support memory and input/output (I/O) operations for a connected processor or processors. Individual elements of a chipset may be grouped together on a single chip, a pair of chips, or dispersed among multiple chips, including processors. In the
Chipset 240 may support standard I/O operations on I/O busses such as peripheral component interconnect (PCI), accelerated graphics port (AGP), universal serial bus (USB), low pin count (LPC) bus, or any other kind of I/O bus (not shown). An interface 290 may be used to connect chipset 240 with token 276, containing one or more platform configuration registers (PCR) 286, 294. In one embodiment, interface 290 may be the LPC bus (Low Pin Count (LPC) Interface Specification, Intel Corporation, rev. 1.0, 29 Dec. 1997) modified with the addition of certain security enhancements. One example of such a security enhancement would be a locality confirming message, utilizing a previously-reserved message header and address information targeting a platform configuration register (PCR) 286 within token 276. In one embodiment, token 276 may contain special security features, and in one embodiment may include the trusted platform module (TPM) 278 disclosed in the Trusted Computing Platform Alliance (TCPA) Main Specification, version 1.1a, 1 Dec. 2001, issued by the TCPA (available at the time of filing of the present application at www.trustedpc.com). The interface 290 may provide a data path for various two-way communications between chipset 240 and token 276. The security bus logic 266 of chipset 240 may include circuits to generate and transmit locality-confirming messages to token 276.
Two software components identified in system environment 200 are a Secure Virtual Machine Monitor (SVMM) 282 module and a Secure Initialization Authenticated Code (SINIT-AC) 280 module. The SVMM 282 module may be stored on a system disk or other mass storage, and moved or copied to other locations as necessary. In one embodiment, prior to beginning the secure launch process SVMM 282 may be moved or copied to one or more memory pages 250 through 262. Following the secure enter process, a virtual machine environment may be created in which the SVMM 282 may operate as the most privileged code within the system, and may be used to permit or deny direct access to certain system resources by the operating system or applications within the created virtual machines.
Some of the actions required by the secure enter process may be beyond the scope of simple hardware implementations, and may instead advantageously use a software module whose execution can be implicitly trusted. In one embodiment, these actions may be performed by Secure Initialization (SINIT) code. Such action may include checking critical portions of the system configuration to ensure that is supports the correct instantiation of the secure environment, configuring the device access logic 247 and device access page table 248, and calculate and register the SVMM 282 identity prior to transferring system control to it. Here “register” means placing a trust measurement of SVMM 282 into a register, for example into PCR 286 or into PCR 294. When this last action is taken, the trustworthiness of the SVMM 282 may be inspected by a potential system user.
The SINIT code may be produced by the manufacturer of the processors or of the chipsets. For this reason, the SINIT code may be trusted to aid in the secure launch of chipset 240. In order to distribute the SINIT code, in one embodiment a well-known cryptographic hash is made of the entire SINIT code, producing a value known as a “digest”. One embodiment produces a 160-bit value for the digest. The digest may then be encrypted by a private key, held in one embodiment by the manufacturer of the processor, to form a digital signature. When the SINIT code is bundled with the corresponding digital signature, the combination may be referred to as SINIT authenticated code (SINIT-AC) 280. Copies of the SINIT-AC 280 may be later validated as discussed below.
Any logical processor may initiate the secure launch process, and may then be referred to as the initiating logical processor (ILP). In the present example processor 202 becomes the ILP, although any of the processors on system bus 230 could become the ILP. Neither memory-resident copy of SINIT-AC 280 nor memory-resident copy of SVMM 282 may be considered trustworthy at this time since, among other reasons, the other processors or the DMA devices may overwrite memory pages 250–262.
The ILP (processor 202) then executes a privileged instruction. This privileged instruction may in one embodiment be referred to as a secured enter (SENTER) instruction, and may be supported by SENTER logic 204. Execution of the SENTER instruction may cause the ILP (processor 202) to issue special bus messages on system bus 230. In other embodiments, other privileged instructions may be executed.
After issuing the special bus message, the ILP (processor 202) may check to see when and if the other processors, which may be referred to as responding logical processors (RLPs) are ready to enter secure operations. When the RLPs are ready, the ILP (processor 202) may move both a copy of SINIT-AC 280 and key 284 into secure memory for the purpose of authenticating and subsequently executing the SINIT code included in SINIT-AC 280. In one embodiment, this secure memory may be an internal cache of the ILP (processor 202), perhaps operating in a special mode. Key 284 represents the public key corresponding to the private key used to encrypt the digital signature included in the SINIT-AC 280 module, and is used to verify the digital signature and thereby authenticate the SINIT code. In one embodiment, key 284 may already be stored in the processor, perhaps as part of the SENTER logic 204. In another embodiment, key 284 may be stored in a read-only key register 244 of chipset 240, which is read by the ILP. In yet another embodiment, either the processor or the chipset's key register 244 may actually hold a cryptographic digest of key 284, where key 284 itself is included in the SINIT-AC 280 module. In this last embodiment, the ILP reads the digest from key register 244, calculates an equivalent cryptographic hash over the key 284 embedded in SINIT-AC 280, and compares the two digests to ensure the supplied key 284 is indeed trusted.
A copy of SINIT-AC and a copy of a public key may then exist within secure memory. The ILP may now validate the copy of SINIT-AC by decrypting the digital signature included in the copy of the SINIT-AC using the copy of a public key. This decryption produces an original copy of a cryptographic hash's digest. If a newly-calculated digest matches this original digest then the copy of SINIT-AC and its included SINIT code may be considered trustable.
The ILP may now register the unique identity of the SINIT-AC module by writing the SINIT-AC module's cryptographic digest value to a platform configuration register 286 in the security token 276, as outlined below. The ILP's execution of its SENTER instruction may now terminate by transferring execution control to the trusted copy of the SINIT code held within the ILP's secure memory. The trusted SINIT code may then perform its system test and configuration actions and may register the memory-resident copy of SVMM, in accordance with the definition of “register” above.
Registration of the memory-resident copy of SVMM may be performed in several manners. In one embodiment, the SENTER instruction running on the ILP writes the calculated digest of SINIT-AC into PCR 286 within the security token 276. Subsequently, the trusted SINIT code may write the calculated digest of the memory-resident SVMM to the same PCR 286 or another PCR 294 within the security token 276. If the SVMM digest is written to the same PCR 286, the security token 276 hashes the original contents (SINIT digest) with the new value (SVMM digest) and writes the result back into the PCR 286. In embodiments where the first (initializing) write to PCR 286 is limited to the SENTER instruction, the resulting digest may be used as a root of trust for the system.
Once the trusted SINIT code has completed its execution, and has registered the identity of the SVMM in a PCR, the SINIT code may transfer ILP execution control to the SVMM. In a typical embodiment, the first SVMM instructions executed by the ILP may represent a self-initialization routine for the SVMM. The ILP may in one embodiment cause each of the RLPs to join in operations under the supervision of the now-executing copy of SVMM. From this point onwards, the overall system is operating in trusted mode as outlined in the discussion of
Referring now to
Additionally, in one embodiment token 276 may include PCRs 286, 294 of the present invention. Each PCR 286, 294 may be associated with flags indicating the behavior of the PCR under differing conditions. For example, PCR 286 has associated with it a reset flag 288 and a modify flag 292, and PCR 294 has associated with it a reset flag 296 and a modify flag 298. When reset flag 288 has the logical value true, PCR 286 may be reset under the command of a locality-confirming message arriving on the interface 290. When modify flag 292 has the logical value true, PCR 286 may have its contents modified under the command of a locality-confirming message arriving on the interface 290. In one embodiment, an encrypted digest of SINIT-AC 280 is intended to be written into PCR 286 and an encrypted digest of SVMM 282 is intended to be written into PCR 294. These digests may be exhibited upon request as part of an attestation process that may demonstrate to a local or remote user that system environment 200 is operating in a secure or trusted manner.
In another embodiment, digests of SINIT-AC 280 and of SVMM 282 may be written into a single PCR, such as PCR 286. In this embodiment, first the digest of SINIT-AC is written into PCR 286. Then the contents of PCR 286 are cryptologically combined with a digest of SVMM 282, and the resulting combined digest written into PCR 286. In one embodiment, circuitry within token 276, configured to support PCR 286, may take the value of an incoming write request over interface 290, cryptologically combine this value with the current value within PCR 286, and then place the resulting new value within PCR 286. This process may be referred to as an “extend” operation. The value of the incoming write request may be said to be “extended onto” the current value within PCR 286. This extended value within PCR 286, representing a combined digest, may then be exhibited upon request as part of an attestation process that may demonstrate to a local or remote user that system environment 200 is operating in a secure or trusted manner.
Reset flags 288, 296 and modify flags 292, 298 may be set to logic true values at the time of manufacture of token 276. This will permit the resetting and content modification of PCR 286, 294 upon receipt of a locality-confirming bus message on interface 290. In other embodiments, reset flags 288, 296 and modify flags 292, 298 may have their values changed between true and false depending upon specific security actions taken under the control of TPM 278.
In the
The PCRs 286, 294 may be reset or modified at times other than general system resets when the system environment 200 causes locality-confirming messages to be sent from chipset 240 to token 276. In one embodiment, the locality-confirming messages may be generated by security bus logic 266 of chipset 240 in response to the bus message logic 242 receiving a SENTER special bus message over system bus 230. The SENTER special bus message in turn may result from the execution of a SENTER instruction in a processor. Such a SENTER instruction may be executed days, weeks, or months subsequent to any general system reset event. Details of the SENTER process, transferring system operation from insecure operations to secure operations, are described below in connection with
In the
Referring now to
In one embodiment, chipset 430 interfaces an additional data bus called a modified low pin count (LPC) bus 450 through a LPC bus logic (LPC-BL) 452. Modified LPC bus 450 may be used to connect chipset 430 with a security token 454. Token 454 may in one embodiment include the trusted platform module (TPM) 460 envisioned by the TCPA. In one embodiment, token 454 may include SINIT PCR 470 and SVMM PCR 480. Each PCR 470, 480 may be associated with flags indicating the behavior of the PCR under differing conditions. For example, SINIT PCR 470 has associated with it a reset flag 472 and a modify flag 474, and SVMM PCR 480 has associated with it a reset flag 482 and a modify flag 484. When reset flag 472 has the logical value true, SINIT PCR 470 may be reset under the command of a locality-confirming message arriving on the modified LPC bus 450. When modify flag 474 has the logical value true, SINIT PCR 470 may have its contents modified under the command of a locality-confirming message arriving on the modified LPC bus 450. In one embodiment, an encrypted digest of SINIT-AC is intended to be written into SINIT PCR 470 and an encrypted digest of SVMM is intended to be written into SVMM PCR 480. These digests may be exhibited upon request as part of an attestation process that may demonstrate to a local or remote user that microprocessor system 400 is operating in a secure or trusted manner.
In an alternate embodiment, digests of SINIT-AC and of SVMM may be written into a single PCR, such as SINIT PCR 470. In this embodiment, first the digest of SINIT-AC is written into SINIT PCR 470. Then the contents of SINIT PCR 470 are cryptologically combined with a digest of SVMM, and the resulting combined digest written into SINIT PCR 470. In one embodiment, circuitry within token 454, configured to support SINIT PCR 470, may take the value of an incoming write request over modified PC bus 450, cryptologically combine this value with the current value within SINIT PCR 470, and then place the resulting new value within SINIT PCR 470. This combined digest may then be exhibited upon request as part of an attestation process that may demonstrate to a local or remote user that microprocessor system 400 is operating in a secure or trusted manner.
Reset flags 472, 482 and modify flags 474, 484 may be set to logic true values at the time of manufacture of token 454. This will permit the resetting and content modification of SINIT PCR 470 and SVMM PCR 480 upon receipt of a locality-confirming bus message on modified LPC bus 450. In other embodiments, reset flags 472, 482 and modify flags 474, 484 may have their values changed between true and false depending upon specific security actions taken within microprocessor system 400, such as a SENTER or other privileged instruction execution.
In order to use a SVMM 350 in a microprocessor system such as microprocessor system 400, several actions may need to be taken. One action may be that the system configuration should be tested for trustworthiness, both in terms of hardware configuration, the SVMM 350 itself, and any software that loads and starts the SVMM 350. Another action may be to register the SVMM 350 identity and transfer system control to it. When this last action is taken the trustworthiness of the SVMM 350 may be inspected by a potential system user.
In one embodiment, a copy of SINIT-AC may be stored in the fixed media 444 for use when the microprocessor system 400 needs to enter secure operations. When a logical processor, for example physical processor CPU 414, desires to initialize system wide secure operations using the SVMM 350, it may load a copy of SINIT-AC into memory 434 to form a memory-resident copy of SINIT-AC. Any logical processor starting up secure operations in this manner may be referred to as an initiating logical processor (ILP). In the present example CPU B 414 becomes the ILP. CPU B 414 as ILP may then load a copy of SVMM into memory to form a memory-resident copy of SVMM. This copy of SVMM may be on non-contiguous pages of memory, but the chipset 430 will maintain a page table for it. Neither SINIT-AC nor SVMM may be considered trustworthy at this time since, among other reasons, the other processors or the DMA devices may overwrite memory 434.
The ILP then may execute a special or privileged instruction implemented in microcode or other processor logic, such as SENTER. Execution of the SENTER instruction may cause the ILP to issue special bus messages on system bus 420, and then wait considerable time intervals for subsequent system actions. In other embodiments, other privileged instructions may be executed.
After issuing the special bus message, the ILP (CPU B 414) checks to see when and if all the RLPs have properly responded. When the RLPs are ready to enter secure operations, the ILP may move both the memory-resident copy of SINIT-AC and a cryptographic public key of chipset 430 into secure memory. In one embodiment, this secure memory may be the internal cache of the ILP, CPU B 414. Copy of SINIT-AC and copy of public key may then exist within internal cache. The ILP may now validate the cache-resident copy of SINIT-AC by decrypting the digital signature of this copy of the SINIT-AC using the cache-resident copy of public key. This decryption produces an original copy of a cryptographic hash's “digest”. If a newly-calculated “digest” matches this original “digest” then the cache-resident copy of SINIT-AC may be considered trustable.
At this point during the execution of the SENTER instruction, a pair of locality-confirming messages may be generated by LPC-BL 452. This allows the resetting of SINIT PCR 470 and the writing of the SINIT digest into SINIT PCR 470.
The ILP may now issue another special bus message, via system bus 420 signaling the waiting RLP's (CPU A 410, CPU C 418, CPU D 422) and chipset 430 that secured operations are going to be initiated. The trusted cache-resident copy of SINIT-AC may then test and validate the copy of SVMM residing in physical memory 434. In one embodiment, SINIT-AC may read the page table entries for the copy of SVMM located in memory 434. SINIT-AC may then command chipset 430 to prevent DMA access from I/O devices to those page table entries. Validation and subsequent registration of the memory-resident copy of SVMM may be performed in several manners. Again during this portion of the execution of the SENTER instruction, another pair of locality-confirming messages may be generated by LPC-BL 452. This allows the resetting of SVMM PCR 480 and the writing of the SVMM digest into SVMM PCR 480.
At this point the memory-resident copy of SVMM may begin execution, at the ending of execution of the SENTER instruction. The ILP may in one embodiment cause each of the RLPs to join in operations under the supervision of the now-executing memory-resident copy of SVMM. From this point onwards the overall system is operating in trusted mode as outlined in the discussion of
Referring now to
The
In block 560, a third locality-confirming message may then be sent that is addressed to a second PCR. Data within the third locality-confirming message indicates a reset is to be performed, and in block 570 the reset flag of the second PCR is checked to see if resets may be allowed. If so, then the second PCR is reset. Then in block 580 a fourth locality-confirming message is sent, addressed to the second PCR. Data within the fourth locality-confirming message indicates a digest (or other data) write is to be performed, and in block 590 the modify flag of the second PCR is checked to see if modifications to the value contained within the second PCR may be allowed. If so, then the second PCR is written with the digest contained within the fourth locality-confirming message.
Referring now to
Then in block 660 a third locality-confirming message is sent, addressed again to the first PCR. Data within the third locality-confirming message indicates a digest (or other data) write is to be performed, and in block 670 the modify flag of the first PCR is checked to see if modifications to the value contained within the first PCR may still be allowed. If so, then in block 680 the token cryptographically hashes the digest contained within the third locality-confirming message onto the existing contents of the first PCR. Then in block 690 the resulting combined digest may be written into the first PCR. This process may be the extend process as described above in connection with
In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Number | Name | Date | Kind |
---|---|---|---|
3699532 | Schaffer et al. | Oct 1972 | A |
3996449 | Attanasio | Dec 1976 | A |
4037214 | Birney et al. | Jul 1977 | A |
4162536 | Morley | Jul 1979 | A |
4207609 | Luiz et al. | Jun 1980 | A |
4247905 | Yoshida et al. | Jan 1981 | A |
4276594 | Morley | Jun 1981 | A |
4278837 | Best | Jul 1981 | A |
4307447 | Provanzano et al. | Dec 1981 | A |
4319233 | Matsuoka et al. | Mar 1982 | A |
4319323 | Ermolovich et al. | Mar 1982 | A |
4347565 | Kaneda et al. | Aug 1982 | A |
4366537 | Heller et al. | Dec 1982 | A |
4403283 | Myntti et al. | Sep 1983 | A |
4419724 | Branigan et al. | Dec 1983 | A |
4430709 | Schleupen | Feb 1984 | A |
4521852 | Guttag | Jun 1985 | A |
4571672 | Hatada et al. | Feb 1986 | A |
4759064 | Chaum | Jul 1988 | A |
4795893 | Ugon | Jan 1989 | A |
4802084 | Ikegaya et al. | Jan 1989 | A |
4825052 | Chemin et al. | Apr 1989 | A |
4907270 | Hazard | Mar 1990 | A |
4907272 | Hazard | Mar 1990 | A |
4910774 | Barakat | Mar 1990 | A |
4975836 | Hirosawa et al. | Dec 1990 | A |
5007082 | Cummins | Apr 1991 | A |
5022077 | Bealkowski et al. | Jun 1991 | A |
5075842 | Lai | Dec 1991 | A |
5079737 | Hackbarth | Jan 1992 | A |
5187802 | Inoue et al. | Feb 1993 | A |
5230069 | Brelsford et al. | Jul 1993 | A |
5237616 | Abraham et al. | Aug 1993 | A |
5255379 | Melo | Oct 1993 | A |
5287363 | Wolf et al. | Feb 1994 | A |
5293424 | Hotley et al. | Mar 1994 | A |
5295251 | Wakui et al. | Mar 1994 | A |
5317705 | Gannon et al. | May 1994 | A |
5319760 | Mason et al. | Jun 1994 | A |
5361375 | Ogi | Nov 1994 | A |
5386552 | Garney | Jan 1995 | A |
5421006 | Jablon et al. | May 1995 | A |
5434999 | Goire et al. | Jul 1995 | A |
5437033 | Inoue et al. | Jul 1995 | A |
5442645 | Ugon et al. | Aug 1995 | A |
5455909 | Blomgren et al. | Oct 1995 | A |
5459867 | Adams et al. | Oct 1995 | A |
5459869 | Spilo | Oct 1995 | A |
5469557 | Salt | Nov 1995 | A |
5473692 | Davis | Dec 1995 | A |
5479509 | Ugon | Dec 1995 | A |
5504922 | Seki et al. | Apr 1996 | A |
5506975 | Onodera | Apr 1996 | A |
5511217 | Nakajima et al. | Apr 1996 | A |
5522075 | Robinson et al. | May 1996 | A |
5528231 | Patarin | Jun 1996 | A |
5533126 | Hazard | Jul 1996 | A |
5555385 | Osisek | Sep 1996 | A |
5555414 | Hough et al. | Sep 1996 | A |
5560013 | Scalzi et al. | Sep 1996 | A |
5564040 | Kubals | Oct 1996 | A |
5566323 | Ugon | Oct 1996 | A |
5568552 | Davis | Oct 1996 | A |
5574936 | Ryba et al. | Nov 1996 | A |
5582717 | Di Santo | Dec 1996 | A |
5604805 | Brands | Feb 1997 | A |
5606617 | Brands | Feb 1997 | A |
5615263 | Takahashi | Mar 1997 | A |
5628022 | Ueno et al. | May 1997 | A |
5633929 | Kaliski | May 1997 | A |
5657445 | Pearce | Aug 1997 | A |
5668971 | Neufeld | Sep 1997 | A |
5684948 | Johnson et al. | Nov 1997 | A |
5706469 | Kobayashi | Jan 1998 | A |
5717903 | Bonola | Feb 1998 | A |
5720609 | Pfefferle | Feb 1998 | A |
5721222 | Bernstein et al. | Feb 1998 | A |
5729760 | Poisner | Mar 1998 | A |
5737604 | Miller et al. | Apr 1998 | A |
5737760 | Grimmer, Jr. et al. | Apr 1998 | A |
5740178 | Jacks | Apr 1998 | A |
5752046 | Oprescu et al. | May 1998 | A |
5757919 | Herbert et al. | May 1998 | A |
5764969 | Kahle et al. | Jun 1998 | A |
5796835 | Saada | Aug 1998 | A |
5796845 | Serikawa et al. | Aug 1998 | A |
5805712 | Davis | Sep 1998 | A |
5809546 | Greenstein et al. | Sep 1998 | A |
5825875 | Ugon | Oct 1998 | A |
5825880 | Sudia et al. | Oct 1998 | A |
5835594 | Albrecht et al. | Nov 1998 | A |
5844986 | Davis | Dec 1998 | A |
5852717 | Bhide et al. | Dec 1998 | A |
5854913 | Goetz et al. | Dec 1998 | A |
5867577 | Patarin | Feb 1999 | A |
5872994 | Akiyama et al. | Feb 1999 | A |
5890189 | Nozue et al. | Mar 1999 | A |
5900606 | Rigal | May 1999 | A |
5901225 | Ireton et al. | May 1999 | A |
5903752 | Dingwall et al. | May 1999 | A |
5919257 | Trostle | Jul 1999 | A |
5935242 | Madany et al. | Aug 1999 | A |
5935247 | Pai | Aug 1999 | A |
5937063 | Davis | Aug 1999 | A |
5953502 | Helbig, Sr. | Sep 1999 | A |
5956408 | Arnold | Sep 1999 | A |
5970147 | Davis et al. | Oct 1999 | A |
5978475 | Schneier | Nov 1999 | A |
5978481 | Ganesan et al. | Nov 1999 | A |
5987557 | Ebrahim | Nov 1999 | A |
6014745 | Ashe | Jan 2000 | A |
6035374 | Panwar et al. | Mar 2000 | A |
6044478 | Green | Mar 2000 | A |
6055637 | Hudson et al. | Apr 2000 | A |
6058478 | Davis | May 2000 | A |
6061794 | Angelo | May 2000 | A |
6075938 | Bugnion et al. | Jun 2000 | A |
6085296 | Karkhanis et al. | Jul 2000 | A |
6088262 | Nasu | Jul 2000 | A |
6092095 | Maytal | Jul 2000 | A |
6093213 | Favor | Jul 2000 | A |
6101584 | Satou et al. | Aug 2000 | A |
6108644 | Goldschlag et al. | Aug 2000 | A |
6115816 | Davis | Sep 2000 | A |
6125430 | Noel et al. | Sep 2000 | A |
6131166 | Wong-Isley | Oct 2000 | A |
6148379 | Schimmel | Nov 2000 | A |
6158546 | Hanson et al. | Dec 2000 | A |
6173417 | Merrill | Jan 2001 | B1 |
6175924 | Arnold | Jan 2001 | B1 |
6175925 | Nardone et al. | Jan 2001 | B1 |
6178509 | Nardone et al. | Jan 2001 | B1 |
6182089 | Ganapathy et al. | Jan 2001 | B1 |
6188257 | Buer | Feb 2001 | B1 |
6192455 | Bogin et al. | Feb 2001 | B1 |
6199152 | Kelly et al. | Mar 2001 | B1 |
6205550 | Nardone et al. | Mar 2001 | B1 |
6212635 | Reardon | Apr 2001 | B1 |
6222923 | Schwenk | Apr 2001 | B1 |
6249872 | Wildgrube et al. | Jun 2001 | B1 |
6252650 | Nakaumra | Jun 2001 | B1 |
6269392 | Cotichini et al. | Jul 2001 | B1 |
6272533 | Browne | Aug 2001 | B1 |
6272637 | Little et al. | Aug 2001 | B1 |
6275933 | Fine | Aug 2001 | B1 |
6282650 | Davis | Aug 2001 | B1 |
6282651 | Ashe | Aug 2001 | B1 |
6282657 | Kaplan et al. | Aug 2001 | B1 |
6292874 | Barnett | Sep 2001 | B1 |
6301646 | Hostetter | Oct 2001 | B1 |
6308270 | Guthery et al. | Oct 2001 | B1 |
6314409 | Schneck et al. | Nov 2001 | B1 |
6321314 | Van Dyke | Nov 2001 | B1 |
6327652 | England et al. | Dec 2001 | B1 |
6330670 | England et al. | Dec 2001 | B1 |
6339815 | Feng | Jan 2002 | B1 |
6339816 | Bausch | Jan 2002 | B1 |
6357004 | Davis | Mar 2002 | B1 |
6363485 | Adams | Mar 2002 | B1 |
6374286 | Gee et al. | Apr 2002 | B1 |
6374317 | Ajanovic et al. | Apr 2002 | B1 |
6378068 | Foster | Apr 2002 | B1 |
6378072 | Collins et al. | Apr 2002 | B1 |
6389537 | Davis et al. | May 2002 | B1 |
6397242 | Devine et al. | May 2002 | B1 |
6397379 | Yates et al. | May 2002 | B1 |
6412035 | Webber | Jun 2002 | B1 |
6421702 | Gulick | Jul 2002 | B1 |
6435416 | Slassi | Aug 2002 | B1 |
6445797 | McGough et al. | Sep 2002 | B1 |
6463535 | Drews | Oct 2002 | B1 |
6463537 | Tello | Oct 2002 | B1 |
6499123 | McFarlane et al. | Dec 2002 | B1 |
6505279 | Phillips et al. | Jan 2003 | B1 |
6507904 | Ellison et al. | Jan 2003 | B1 |
6529909 | Bowman-Amuah | Mar 2003 | B1 |
6535988 | Poisner | Mar 2003 | B1 |
6557104 | Vu et al. | Apr 2003 | B1 |
6560627 | McDonald et al. | May 2003 | B1 |
6609199 | DeTreville | Aug 2003 | B1 |
6615278 | Curtis | Sep 2003 | B1 |
6633963 | Ellison et al. | Oct 2003 | B1 |
6633981 | Davis | Oct 2003 | B1 |
6651171 | England | Nov 2003 | B1 |
6678825 | Ellison et al. | Jan 2004 | B1 |
6684326 | Cromer et al. | Jan 2004 | B1 |
20010021969 | Burger et al. | Sep 2001 | A1 |
20010027511 | Wakabayashi et al. | Oct 2001 | A1 |
20010027527 | Khidekel et al. | Oct 2001 | A1 |
20010037450 | Metlitski et al. | Nov 2001 | A1 |
20020007456 | Peinado et al. | Jan 2002 | A1 |
20020023032 | Pearson et al. | Feb 2002 | A1 |
20020026576 | Das-Purkayastha et al. | Feb 2002 | A1 |
20020147916 | Strongin et al. | Oct 2002 | A1 |
20020166061 | Falik et al. | Nov 2002 | A1 |
20020169717 | Challener | Nov 2002 | A1 |
20030018892 | Tello | Jan 2003 | A1 |
20030074548 | Cromer et al. | Apr 2003 | A1 |
20030084285 | Cromer et al. | May 2003 | A1 |
20030115453 | Grawrock | Jun 2003 | A1 |
20030126442 | Glew | Jul 2003 | A1 |
20030126453 | Glew et al. | Jul 2003 | A1 |
20030159056 | Cromer et al. | Aug 2003 | A1 |
20030188179 | Challener et al. | Oct 2003 | A1 |
20030196085 | Lampson et al. | Oct 2003 | A1 |
20040117539 | Bennett et al. | Jun 2004 | A1 |
Number | Date | Country |
---|---|---|
4217444 | Dec 1992 | DE |
0473913 | Mar 1992 | EP |
0 892 521 | Jan 1999 | EP |
0930567 | Jul 1999 | EP |
0 961 193 | Dec 1999 | EP |
0 965 902 | Dec 1999 | EP |
1030237 | Aug 2000 | EP |
1 055 989 | Nov 2000 | EP |
1 056 014 | Nov 2000 | EP |
1 085 396 | Mar 2001 | EP |
1146715 | Oct 2001 | EP |
1 271 277 | Jan 2003 | EP |
PCTUS 0308764 | Jun 2004 | EP |
WO 9524696 | Sep 1995 | WO |
WO 9812620 | Sep 1996 | WO |
WO 9729567 | Aug 1997 | WO |
WO9834365 | Aug 1998 | WO |
WO9844402 | Oct 1998 | WO |
WO9905600 | Feb 1999 | WO |
WO9909482 | Feb 1999 | WO |
WO 9918511 | Apr 1999 | WO |
WO9957863 | Nov 1999 | WO |
WO 9965579 | Dec 1999 | WO |
WO 9965579 | Dec 1999 | WO |
WO 0021238 | Apr 2000 | WO |
WO0062232 | Oct 2000 | WO |
WO 0127723 | Apr 2001 | WO |
WO 0127821 | Apr 2001 | WO |
WO 0163994 | Aug 2001 | WO |
WO 01 75564 | Oct 2001 | WO |
WO 01 75565 | Oct 2001 | WO |
WO 0175595 | Oct 2001 | WO |
WO 0201794 | Jan 2002 | WO |
WO 02 17555 | Feb 2002 | WO |
WO 02060121 | Aug 2002 | WO |
WO 02 086684 | Oct 2002 | WO |
WO 03058412 | Jul 2003 | WO |
Number | Date | Country | |
---|---|---|---|
20030188113 A1 | Oct 2003 | US |