An apparatus is provided for protecting a basic input / output
system (
BIOS) in a computing
system. The apparatus includes a
BIOS read only memory (ROM), a tamper
detector, a random
number generator, a JTAG control chain, a fuse, a
machine specific register, and an access controller. The
BIOS ROM includes BIOS contents stored as
plaintext, and an encrypted message digest, where the encrypted message digest has an encrypted version of a first message digest that corresponds to the BIOS contents. The tamper
detector is operatively coupled to the BIOS ROM, and is configured to generate a BIOS check interrupt at a combination of prescribed intervals and event occurrences, and is configured to access the BIOS contents and the encrypted message digest upon assertion of the BIOS check interrupt, and is configured to direct a
microprocessor to generate a second message digest corresponding to the BIOS contents and a decrypted message digest corresponding to the encrypted message digest, and is configured to compare the second message digest with the decrypted message digest, and is configured to preclude the operation of the
microprocessor if the second message digest and the decrypted message digest are not equal. The random
number generator disposed within the
microprocessor, and generates a random number at completion of a current BIOS check, which is employed to set a following prescribed interval, whereby the prescribed intervals are randomly varied. The JTAG control chain is configured to program the combination of prescribed intervals and event occurrences within tamper detection
microcode storage. The fuse is configured to indicate whether
programming of the combination of prescribed intervals and event occurrences is to be disabled. The
machine specific register is configured to store a value therein. The
access control element is coupled to the fuse, the
machine specific register, and the JTAG control chain, and is configured to determine that the fuse is blown, and configured to direct the JTAG control chain to enable
programming of the combination of prescribed intervals and event occurrences if the value matches an override value within the
access control element during a period that the value is stored within the machine specific register.