1. Field of the Invention
The present invention relates generally to authentication and verification for use of software. More particularly, the invention relates to verifying the authenticity of software that is selected for execution. Also more particularly, the invention relates to verifying whether a particular software application is authorized to run on a particular computer.
2. Background of the Invention
As computers have proliferated at residences and businesses, and as networks, such as the Internet, have made the nation-wide and world-wide dissemination of information readily available, security of such information has become a significant problem. For instance, computer “viruses,” unfortunately have become a part of every day life. A virus generally is an executable code that can be spread via email messages (and typically as attachments to emails). Once released into a computer, the virus performs whatever task it has been programmed to do. Typically, that task is to maliciously impair the performance of the infected computer. One way a virus infects a computer is by attaching itself to existing software stored on the computer's storage device. Once modified by a virus, the infected software may execute improperly or cause serious damage to the information contained in the computer and even wipe out much or all of the data contained therein. A virus may also locate the email addresses of other persons stored in the infected computer, replicate itself, and automatically transmit virus infected email messages to other people.
Various ways have been proposed to address this type of security problem. Many types of anti-virus software are available. Such software generally attempts to detect the presence of viruses in incoming email messages or on removable storage media, such as floppy disks. If successful in detecting the presence of a virus, the anti-virus software will alert the user of the problem and attack the virus so as to render it harmless. Unfortunately, however, anti-virus software is not foolproof. If a virus creator knows how a particular anti-virus program detects viruses, then that person can devise a new type of virus that can avoid the inoculative reach of the anti-virus software. Accordingly, virus creators constantly attempt to stay one step ahead of current anti-virus software programs, and anti-virus software developers constantly respond to new virus threats by developing better anti-virus software. Thus, although very helpful, anti-virus software is not without its limitations.
U.S. Pat. No. 5,421,006 to Jablon describes a different approach to the problem. As described in the Jablon patent, during the initialization process, the computer examines all of the executable programs contained in a computer. Each program has been stored on the computer along with a confidential code derived from the program itself. These confidential codes are stored in a particular piece of memory that is accessible generally only during initialization. During initialization, the computer computes a confidential code for a program and then compares the newly computed code to the code associated with that program stored in the secure memory. If the codes match, the software is deemed to be acceptable for further use and the initialization process completes. If the codes do not match, the software is deemed to have been previously modified in some way (e.g., by a virus) and is not accessible for further use. Thus, Jablon provides a technique for verifying the authenticity of software during system initialization. Jablon fails to address the issue of a program that, although deemed authentic during initialization, becomes modified during system use such as might occur with a virus infected email message.
Thus, there is still a need to provide a security mechanism in a computer system to protect its software against unauthorized modification.