The burgeoning growth of the computer industry has brought with it a concomitant increase in unauthorized copying and usage of commercially successful proprietary software. This theft of software, known as software piracy, is of growing concern to industry. Vendors of software for general purpose computers lose millions of dollars of revenue annually as a result of software piracy. Software piracy also concerns manufacturers of equipment that use a computer as a dedicated controller, such as a video game.
Legal means for preventing software piracy have largely failed because of the problems of enforcement. The only practical way to protect proprietary software is to design computers with special features so that it is much cheaper to buy the proprietary software than to copy or crack it. Methods for preventing software piracy that have relied solely on software methods offer little protection. For example, the common technique of storing the program in an unusual format on a diskette can be circumvented through the use of a copy-all program.
Computer designs for discouraging software piracy that incorporate rudimentary encryption techniques which do not greatly increase the difficulty of copying proprietary software are known in the prior art, typified by the teachings of U.S. Pat. Nos. 4,168,396, 4,246,638, and 4,319,079. The prior art will not protect proprietary programs against software piracy since prior art interrupt and architectural features make the prior art susceptible to automated cracking techniques. These techniques allow a software pirate to crack proprietary software run on prior art computers so the software can be copied at a cost lower than the purchase price of the software. Another disadvantage of the prior art is that encryption must be done by the manufacturer of the computer, who will have a monopoly on this service. A further disadvantage of the prior art is that each protected program must run on a separate computer, which defeats the usefulness of a general purpose computer system.
While cryptographic systems that provide secure communications between computer systems are also known in the prior art as exemplified by U.S. Pat. Nos. 3,958,081, 4,200,770, and 4,238,854, they are limited in that they do not prevent software piracy.
While a third type of computer system that incorporates hardware features to insure operating system security are well known in the prior art as exemplified by U.S. Pat. No. 4,087,856, such systems are also limited in that they do not prevent software piracy.
Accordingly, it is an object of the present invention to inhibit unauthorized copying and usage of proprietary software by incorporating special hardware features in the design of a computer.
Another object of the present invention is to allow the user to protect proprietary software, thereby eliminating the previous need for an intermediary, such as the manufacturer of the computer, to protect the software.
Still another object of the present invention is to allow a user to combine protected proprietary software with unprotected programs, as well as to combine different protected proprietary programs rightfully obtained from others, for use on a general purpose computer system.
Still a further object of the present invention is to insure that protected software will load and execute with reasonable speed.
Still another object of the present invention is to retain compatability with current hardware and software practices.
Still a further object of the present invention is to allow the user to make as many backup copies of a protected program as he wishes for use on his general purpose computer system.
Still another object of the present invention is to allow the user of a general purpose computer system to customize a protected program in a way that does not reduce the security of the protection method.
Still a further object of the present invention is to allow a dedicated computer system to execute a protected program directly from a read only memory.
Still another object of the present invention is to minimize the amount of extra hardware required for protection of software in a dedicated computer system.
Still a further object of the present invention is to insure that the hardware required for protection of proprietary software is inexpensive and easy to fabricate.
These and other objects are accomplished in accordance with the illustrated preferred embodiments of the present invention by protecting proprietary software for use on a general purpose computer system with encryption. The protected programs are executed on a computer system that includes: a device for translating between a distribution encryption form of a protected program to an execution encryption form of the program, a device for executing the execution form of the program and also unprotected programs, and a device to detect and inhibit actions indicative of automated cracking techniques. The distribution encryption form of protected proprietary software utilizes public key cryptography thereby permitting anyone to protect software. The distribution encryption is unique for each general purpose computer system that uses the invention. The translation device is capable of translating many protected proprietary programs into the same execution encryption thereby allowing the user of a general purpose computer system to combine proprietary software rightfully obtained from others. The program execution device is capable of executing protected (encrypted) and unprotected (unencrypted) programs. Special hardware is provided to detect conditions that are likely to occur when the user attempts to implement automated cracking. Upon detection of these conditions, the hardware alters the state of the computer system, thereby invalidating any information the pirate might have gained. The hardware also causes a delay, which slows the automated cracking process so much that it requires several years to complete.
In accordance with another embodiment of the present invention, proprietary programs for use on a dedicated application computer system are protected by encryption and are executed on a computer system including: a device for executing the protected program and a device to detect and inhibit actions indicative of automated cracking techniques. The program execution device may be capable of executing both encrypted and unencrypted programs or the program execution device may be designed so it can only execute encrypted programs. Special hardware is provided to detect conditions that are likely to occur when a pirate attempts to implement automated cracking. Upon detection of these conditions the special hardware permanently alters a write once memory which makes the program execution device inoperative from then on, thereby invalidating any information the pirate might have gained. Alternatively, crucial parts of proprietary programs for use on a dedicated application computer system are protected by physical encapsulation and are executed on a computer system including: a device for executing the protected program, and a device to detect and inhibit actions indicative of automated cracking techniques. The program execution device can fetch instructions from either an internal, physically isolated memory means or the external memory. Special hardware is provided to detect conditions that are likely to occur when a pirate attempts to implement automated cracking of those instructions that reside in the internal physically encapsulated memory means. Upon detection of these conditions the special hardware prevents the execution of further instructions, thereby invalidating any information the pirate might have gained. The dedicated application computer system that protects with encryption and the dedicated application computer system that protects with encapsulation share many common features and therefore may be combined into a dedicated application computer system that allows the designer to select which protection method (encryption or encapsulation) will be used.