Abstract:
A subsystem prevents unauthorized replacement of boot-up firmware (e.g., BIOS) embedded in modifiable non-volatile memory devices such as flash memory. The firmware device is contained in a secure boot device which is responsive to the host processor. The security protection is established by the encryption and decryption of the boot-up instructions using a secret key shared by both the secure boot device and the host processor.

Description:
CROSS-REFERENCES TO RELATED APPLICATION 
     The named inventor of the present application has previously filed a United States Patent Application entitled &#34;An Apparatus and Method for Cryptographic Companion Imprinting&#34;, filed Dec. 4, 1995 (application Ser. No. 08/566,910) now pending. This Application is owned by the same Assignee of the present Application. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     This invention relates to the field of security of computer firmware, especially in the areas of boot-up firmware including Operating System (&#34;OS&#34;) and Basic Input and Output System (&#34;BIOS&#34;) in general computing systems, in particular personal computers (&#34;PCs&#34;). 
     2. Description of Related Art 
     One of the most critical elements in a computer system is boot-up firmware. The boot-up firmware may be an Operating System (&#34;OS&#34;), a portion of the OS, or the Basic Input and Output System (&#34;BIOS&#34;). The boot-up firmware is essentially the machine code typically stored in some form of non-volatile memory to allow a Central Processing Unit (&#34;CPU&#34;) to perform tasks such as initialization, diagnostics, loading the operating system kernel from mass storage, and routine input/output (&#34;I/O&#34;) functions. 
     Upon initially supplying power to the CPU through a power-up sequence, the CPU will &#34;boot up&#34; by fetching the instruction code residing in the boot-up firmware. Traditionally, the boot-up firmware is implemented in Erasable Programmable Read Only Memory (&#34;EPROM&#34;). However, recent advances in semiconductor technology have allowed boot-up firmware to be implemented in flash memory, increasing its susceptibility to intrusive attack. 
     Due to its critical role in computer systems, boot-up firmware should be well protected against intrusive attacks. One type of intrusive attack involves an intruder accessing the computer directly, physically removing a boot-up device containing the boot-up firmware (e.g., flash memory, a printed circuit board containing memory, etc.), and substituting that boot-up device with another boot-up device. In some cases, the intruder may be the legitimate owner or user of the computer system who is trying to defraud third-party service providers. 
     Currently, mechanical security mechanisms, particularly those used by portable computers to erase important information if the laptop&#39;s casing is opened without authorization, has little effect in preventing these intrusive attacks. There are no well-established electronic security mechanisms to provide security protection for a path connecting a host processor and a boot-up device. 
     Therefore, it would be desirable to design a mechanism that prevents an intruder from successfully defrauding others through replacement of the boot-up device such as a cryptographic coprocessor, or a flash memory device for example. This may be achieved by electrically &#34;binding&#34; the physical bootup device to the host processor to provide a secure path between the host processor and the boot-up firmware. This prevents an attacker from simply replacing the cryptographic coprocessor, since the host processor is unable to execute boot-up instructions not previously encrypted by the specific cryptographic coprocessor to which it has been &#34;imprinted&#34;. 
     SUMMARY OF THE INVENTION 
     The present invention describes a secure subsystem to prevent unauthorized replacement of a storage device containing a boot-up executable code by establishing a secure path between a secure boot device and a host processor based on an electronic keying mechanism. 
     The secure boot device is coupled to the storage device and encrypts the executable code based on a secret key to generate an encrypted code. The host processor then decrypts the encrypted code based on the same secret key to generate a decrypted code. The host processor executes the decrypted code only if the decrypted code corresponds to the executable code. A communication path is established between the secure boot device and the host processor to allow the two processors to communicate securely by exchanging such encrypted messages. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The features and advantages of the present invention will become apparent from the following detailed description of the present invention in which: 
     FIG. 1 is a diagram showing the present invention with a secure path between the host processor and the secure boot device, thus enabling a secure boot of the system. 
     FIG. 2 is a flowchart of the operations that occur in the present invention during a normal read access to the boot-up program by the host processor. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     The present invention provides a secure path between a host processor and a memory device containing a boot-up program by establishing a secure communication protocol between the host processor and a secure boot device. In the following description, some terminology is used to discuss certain cryptographic features. For example, a &#34;key&#34; is an encoding and/or decoding parameter used by conventional cryptographic algorithms such as Rivest, Shamir and Adleman (&#34;RSA&#34;), Data Encryption Algorithm (&#34;DEA&#34;) as specified in Data Encryption Standard (&#34;DES&#34;) and the like. A &#34;secret key&#34; is a key used for both encryption and decryption by a limited number of electronic devices having access to that key. 
     As described below, the secure boot device responds to the requests from a host processor (&#34;host requests&#34;) for accessing a boot-up program by encrypting the instruction code in the boot-up program using a secret key shared with the host processor. The encrypted instruction code is decrypted by the host processor using the same secret key. Since the secret key is known only by the host processor and the secure boot device, any attempt to replace the secure boot device containing the boot-up program, will result in incorrect decrypted code making the system inoperable. 
     Referring to FIG. 1, an embodiment of a computer system utilizing the present invention is shown. The computer system 10 includes a chipset 51 which operates as an interface to support communications between host processor 50, system memory 52, and devices coupled to a system bus 53. More specifically, host processor 50 includes logic circuitry (not shown) as well as a small amount of internal non-volatile memory 65 used to contain key information. System memory 52 may include, but is not limited to conventional memory such as various types of random access memory (&#34;RAM&#34;), e.g., DRAM, VRAM, SRAM, etc., as well as memory-mapped I/O devices. System bus 53 may be implemented in compliance with any type of bus architecture including Peripheral Component Interconnect (&#34;PCI&#34;) and Universal Serial Bus (&#34;USB&#34;) and the like. 
     One of the devices that may be coupled to the system bus 53 includes a secure boot device 54. Secure boot device 54 comprises a bus interface 60, a cryptographic unit 61 and a local non-volatile memory 62. The bus interface 60 is used to establish an electrical connection to system bus 53. The boot-up program 63 is stored within non-volatile memory 62. 
     Referring still to FIG. 1, both host processor 50 and secure boot device 54 are configured to contain a shared secret key 64 in their respective nonvolatile memories 65 and 62. Established at manufacture during initialization by the Original Equipment Manufacturer or other system suppliers who produce the host processor and the secure boot device, this shared secret key 64 is used for both encryption and decryption by the secure boot device 54 and the host processor 50. The encryption and decryption can be performed through a variety of techniques including specialized hardware circuits, combination of hardware and software, or specialized accelerators. The sequences followed by the host processor 50 and secure boot device 54 for boot-up access during the system power-up (&#34;boot&#34;) sequence are described in FIG. 2. 
     Referring now to FIG. 2, the steps associated with the &#34;boot up&#34; phase of the system are shown. First, in Step 110, the host processor issues a read request for an address corresponding to the boot-up program. The secure boot device detects this boot-up address by having its address space mapped to the corresponding boot-up program (Step 112). Upon detection of the read request, the secure boot device proceeds with encrypting the corresponding boot-up instruction using the shared secret key (Step 114). In Step 116, the secure boot device responds to the host requests with the encrypted boot-up instruction. In Step 118, upon receiving the encrypted boot-up instruction, the host processor decrypts the encrypted boot-up instruction using the shared secret key. In Step 120, the resulting decrypted boot-up instruction may or may not correspond to a correct instruction depending on whether the system has been tampered with or not. If the system has been tampered with, in Step 130, the decrypted boot-up instruction results in an improper or invalid instruction. It is most likely that the system hangs up because of a number of reasons such as bus error, unrecognized opcode, infinite loop, etc. As a result, the boot-up sequence results in system failure. In Step 140, the decrypted boot-up instruction results in a valid or correct instruction in the boot-up program. The host processor executes the instruction and proceeds with the next boot-up instruction until the entire booting sequence is completed. 
     The shared secret key is known only to the secure boot device and the host processor, and therefore an attempt to subvert the system by replacing the secure boot device by another device is futile. The reason is that the replacement device cannot communicate with the host processor. An intruder, without knowing the shared secret key, cannot duplicate the cryptographic subsystem. The boot-up firmware is therefore protected from the physical replacement of the boot-up device. 
     Although the above discussion is directed to the secure path between the host processor and the dedicated secure boot device, it is readily realized that the secure path can be established between any number of subsystems, processors, or devices and any combination thereof. A typical secure path involves a secret key shared by all the devices/ processors, and encryption/decryption algorithms implemented by either hardware, firmware, or software or any combination thereof. 
     In another embodiment of the invention (not shown), a chipset with secure boot device functionality containing some boot-up code is interfaced with the host processor. This boot-up code may be a sequence of executable instructions. A secret key shared by the chipset and the host processor is used to encrypt and decrypt the boot-up code. A secure path is established as discussed above. 
     Yet another embodiment (not shown) involves a printed circuit board (&#34;PCB&#34;) or a &#34;smart&#34; card such as the PCMCIA containing the boot-up program or some executable or information code. The PCB or smart card may be plugged into any expansion slot on the system mother board, or on any backplane interface bus. A secure boot device is coupled to such a PCB or smart card, responding to the host requests by encrypting the boot-up code using a secret key shared by both the board/card and the host processor. The host processor decrypts the encrypted code using the same secret key. The secure boot device may reside on the same PCB or smart card, or anywhere in the system, such as another separate PCB or smart card. As long as the secure boot device is able to communicate with the host processor by exchanging the encrypted or decrypted boot-up code, any attempt to remove the PCB or smart card and replace with another PCB or smart card without the secret key will result in system inoperation. 
     While this invention has been described with reference to illustrative embodiments, this description is not intended to be construed in a limiting sense. Various modifications of the preferred embodiment, as well as other embodiments of the invention which are apparent to persons skilled in the art to which the invention pertains, are deemed to lie within the spirit and scope of the invention.