The present invention and the advantages and features provided thereby will be better appreciated and understood upon review of the following detailed description of the invention, taken in conjunction with the following drawings, where like numerals represent like elements, in which:
An exemplary embodiment of the present invention will now be described with reference to
The laptop computer 100 includes a processor 102 configured to control the overall operation of the laptop computer 100. The processor 102 may include an arithmetic logic unit (ALU) for performing computations, one or more registers for temporary storage of data and instructions, and a controller for controlling the operations of the laptop computer 100. In one embodiment, the processor 102 includes any one of the x86, Pentium™ and Pentium Pro™ microprocessors manufactured by Intel corporation, or the K-6 or other suitable microprocessor marketed by Advanced Micro Devices. Further examples include the 680X0 processor marketed by Motorola or the Power PC™ or other suitable processor marketed by International Business Machines. In addition, any of a variety of other processors, including those from Sun Microsystems, NEC, Cyrix and others may be used for implementing the processor 102. The processor 102 is not limited to microprocessors, but may take on other forms such as microcontrollers, digital signal processors (DSP), dedicated hardware (e.g. ASIC), state machines or software executing on one or more processors distributed across a network.
The processor 102 is coupled to a bus controller 104 by way of a central processing unit (CPU) bus 103. The bus controller 104 includes a memory controller 105 integrated therein. The memory controller 105 provides for access by the processor 102 or other devices to system memory 106, for example, random access memory (RAM) or other fast access memory device. The bus controller 104 is coupled to a system bus 108, for example, a peripheral component interconnect (PCI) bus, industry standard architecture (ISA) bus, universal serial bus (USB), a wireless connection or other suitable communication medium. Coupled to the system bus 108 is a non-volatile memory 110, for example, a read only memory (ROM), a non-volatile random access memory (NVRAM), a hard disk, a ROM BIOS for maintaining the code segments and corresponding data segments that, when executed by the processor 102, implement and provide the secure firmware execution environment methodology according to the present invention; a display controller 114, operative to transfer data 115 for display on a corresponding display device 116, an input/output (I/O) controller 118 and a network controller 122, for example, a wireless network controller.
When implemented in software, the elements of the present invention are essentially the code segments to perform the necessary tasks. The program or code segments can be stored, for example, in a processor readable medium or transmitted by a computer data signal embodied in a carrier wave over a transmission medium or communication link that can be accessed, for example, by the network controller 122. The processor readable medium may include, for example, an electronic circuit, a semiconductor memory device, a ROM, RAM, a flash memory, an erasable ROM (EROM), a floppy diskette, a CD-ROM, an optical disk, a hard disk, a fiber optic medium, a radio frequency (RF) link or any suitable medium or combination thereof. The computer data signal may include any signal that can propagate over a transmission medium, for example, electronic network channels, optical fibers, air, electromagnetic, RF links or any other suitable medium or combination thereof. The code segments may be downloaded via computer networks, for example, the Internet, LAN, WAN or any suitable network or combination thereof.
The display controller 114 may be implemented by any suitable device, for example, a graphics processor, capable of formatting digital data 115 for proper display and viewing on a corresponding display device 116, for example, a flat panel display, CRT display, printer, plotter or other suitable presentation device and combinations thereof.
The I/O controller 118 may be implemented by any suitable device capable of transferring information, for example, signals containing data and/or instructions between the processor 102 and a variety of input and/or output devices including, but not limited to, a mouse 119, keyboard 120, and pen input device 121. The pen input device 121 may be implemented as a touch screen, soft keys, optical input device or other suitable input devices or combinations thereof.
The network controller 122 may be implemented, for example, by a wireless network access controller or other suitable device or applicable software capable of connecting the underlying laptop computer 100 to a larger network, for example, the Internet.
An internal expansion slot 124 is shown being coupled to the system bus 108 via bus connector 125. Bus connector 125 may be a trace formed within the mother board or a wire connecting the internal expansion slot 124 to the system bus 108. The expansion slot 124 is typically maintained on the mother board that contains the other hardware subsystems 110-122 of the electronic device 100, and is configured to hold a suitable expansion card, for example a video card, for use with the electronic device 100.
An external connection port 126, for example, a USB port, a serial port or a parallel port is coupled to the system bus 108 via bus connector 127. This bus connector 127 may be hardwired, for example, a trace formed within the mother board or a wire connecting the external connection port 126 to the system bus 108, within the electronic device 100 or may be a wireless connection. The external connection port 126 is used to connect peripheral devices 128, for example, a video card, a DVD burner, USB drives or other suitable peripheral devices to the electronic device 100. The peripheral devices 128 connected via internal slot 124 and/or external connection port 126 may include a memory 129, an option read only memory, including operating code that is specific to the corresponding peripheral device 128 and that executes independent of the system firmware 111 that is running on the electronic device 100.
In typical application, when a peripheral device 128, for example, a video card, a DVD burner or other suitable device, and combinations thereof is connected to the electronic device 100, the system firmware 111, for example, the BIOS or other core system software running on the electronic device 100 will detect the peripheral device 128 connected to one of the available ports 124, 126 and allow the peripheral device 128 to operate with the underlying electronic device 100 by allowing execution of the code maintained within the option read-only memory 129 of the peripheral device 128. Security breaches may result from such unchecked operation in the form of malicious code being transmitted to and through the electronic device 100 from the option read-only memory 129 of the peripheral device 128. By allowing the peripheral device 128 to execute without performing any checks on the underlying executable code or determining whether the peripheral device 128 is from a trusted source, an unauthorized user or malicious hacker may cause harm to the electronic device 100 or the larger network to which the electronic device 100 is connected by launching malicious code from the option read-only memory 129. The present invention substantially reduces or eliminates such security breaches by only allowing an authorized option read-only memory (or peripheral device) to be connected to and execute on the electronic device 100.
In application, the code segments 112 are transmitted to the system memory 106 for execution by the processor 102. By being maintained in non-volatile memory 110, the code segments 112 and list of authorized option read-only memories 113 will not be lost or overwritten as a result of power being removed from the electronic device 100. The method of authorizing an option read-only memory and allowing a peripheral device including an option read-only memory to securely execute in conjunction with an electronic device will now be discussed with reference to
In step 302, the electronic device 100 detects the presence of a new component, for example, a peripheral device such as a video card or a DVD burner or other suitable device. This may be accomplished, for example, by the processor monitoring the internal expansion slot and the external connection port or other connection point to the system bus for new devices. This may be accomplished, for example, by the generation of a hardware or software interrupt upon detection of the new peripheral device.
In step 303, a determination is made as to whether an option read-only memory is present on the system bus 108. This may be accomplished, for example, by determining whether the hardware or software interrupt includes information (e.g. one or more data bits) indicating that the new component includes an option read-only memory or other self-contained code. If an option read-only memory is present, the process proceeds to step 304; otherwise, the process proceeds to step 306.
In step 304, a determination is made as to whether the option read-only memory is authorized to be executed on the electronic device. This may be accomplished, for example, by the processor or other suitable controller performing a hash function, for example, a SHA-1 function, on the visible portion of data contained within the option read-only memory, and comparing the generated hash value with a list of hash values (of previously authorized images) maintained within the authorized option-read only list of the non-volatile memory. The list of authorized option read-only memories includes a list of hash values representing the image of authorized option read-only memories. The list may be initially populated by the manufacturer of the underlying electronic device; by the user by adding known option read-only memories to the list; by information and data contained within a smart token; and/or by a central database contained within a trusted server. If the option read-only memory is authorized, in other words, the image (e.g. hash) of the option read-only memory in one of the authorized images contained within the authorized list, the process proceeds to step 306; otherwise, the process moves to step 305.
In step 305, the option read-only memory is authenticated by proceeding through an authorization process. Referring briefly to
In step 3052, a determination is made as to whether to add the option read-only memory image to the authorized list. This may be accomplished, for example, by the user approving the addition of the option read-only memory image to the authorized list through the entry of a password or other indication of authority into the electronic device; by the image being provided by a central database connected to a trusted server; or by the option read-only memory image being provided from a smart token. Alternatively, a public/private key exchange methodology may be used to determine whether the option read-only memory image is, or has been, cryptographically signed by an authorized authority. Then, execute the code maintained within the option read-only memory if the option read-only memory is authorized.
If the option read-only memory is to be added to the authorized list, the process proceeds to step 3053 where the hashed image of the option read-only memory is written to that portion of the non-volatile memory maintaining the authorized list. The process then returns to step 304. If the option is not be added to the list, the process moves to step 3054.
In step 3054, an error message is displayed to the user indicating that the detected option read-only memory is not authorized and will not be added to the authorized list or executed. As a result, the peripheral device associated with the option read-only memory will not be recognized or allowed to run on or in conjunction with the electronic device. Although described as being a visual warning, the error message provided to the user may be an audible warning, for example, the sounding of an alarm or other audible signal, or a combination of visual and audible warnings. After the error message is displayed or otherwise provided to the user, the authorization process ends and the electronic device resumes pre-authorization execution, enters an intermediary operating state or shuts down.
Returning to
By implementing the method of the present invention, a secure firmware execution environment is established and maintained within an electronic device by preventing the system firmware (e.g. BIOS or core system software) from executing unauthorized firmware or other code maintained with an option read-only memory. In this manner, security breaches related to the application or insertion of peripheral devices to an electronic device or larger system are substantially reduced or eliminated. Additionally, the method of the present invention provides more reliable system security than the hardware or software based security approaches employed by conventional devices.
The foregoing detailed description of the invention has been provided for the purposes of illustration and description. Although an exemplary embodiment of the present invention has been described in detail herein with reference to the accompanying drawings, it is to be understood that the invention is not limited to the precise embodiment(s) disclosed, and that various changes and modifications to the invention are possible in light of the above teachings. Accordingly, the scope of the present invention is to be defined by the claims appended hereto.