A system for protecting software from copying wherein the software to be protected is placed on the computer system in two parts. A first part is stored in non-volatile storage, such as a hard disk or floppy disk within the computer system, and a second part is stored and executed in a "hardware key", which is attached to the computer system. The second part is stored in volatile RAM and will be erased when electrical power is removed from the hardware key, or when the software stops execution. This requires that the second part of the software be reloaded each time the hardware key is powered up. Typically, the second part of the software will be loaded from a network, or from a cable network, thus reloading of the second part into the hardware key is a trivial matter, so long as the user is an active subscriber to the network or cable network. |
Citations|
| US4578531 | Jun 9, 1982 | Mar 25, 1986 | AT&T Bell Laboratories | Encryption system key distribution method and apparatus | | US4683553 | Feb 5, 1986 | Jul 28, 1987 | Cii Honeywell Bull (Societe Anonyme) | Method and device for protecting software delivered to a user by a supplier | | US4819267 | Jun 9, 1987 | Apr 4, 1989 | Thumbscan, Inc. | Solid state key for controlling access to computer systems and to computer software and/or for secure communications | | US4944008 | Feb 18, 1988 | Jul 24, 1990 | Motorola, Inc. | Electronic keying scheme for locking data | | US4959861 | Jul 13, 1988 | Sep 25, 1990 | | Security system for computer software | | US5083309 | Nov 16, 1990 | Jan 21, 1992 | Schlumberger Industries | Method and a system enabling software to be run securely | | US5166886 | Feb 12, 1992 | Nov 24, 1992 | | System to demonstrate and sell computer programs | | US5212729 | Jan 22, 1992 | May 18, 1993 | | Computer data security device and method | | US5222133 | Oct 17, 1991 | Jun 22, 1993 | Wayne W. Chou Richard Erett | Method of protecting computer software from unauthorized execution using multiple keys | | US5222134 | Apr 9, 1991 | Jun 22, 1993 | Tau Systems Corporation | Secure system for activating personal computer software at remote locations | | US5276735 | Apr 17, 1992 | Jan 4, 1994 | Secure Computing Corporation | Data enclave and trusted path system | | US5343524 | Jun 21, 1991 | Aug 30, 1994 | | Intelligent security device | | US5379342 | Jan 7, 1993 | Jan 3, 1995 | International Business Machines Corp. | Method and apparatus for providing enhanced data verification in a computer system | | US5400403 | Aug 16, 1993 | Mar 21, 1995 | RSA Data Security, Inc. | Abuse-resistant object distribution system and method |
Referenced by|
| US5940506 | Dec 11, 1997 | Aug 17, 1999 | Inventec Corporation | Method of using a hand-held device to protect information stored in a computer system | | US6009543 | Feb 20, 1997 | Dec 28, 1999 | Massachusetts Institute of Technology | Secure software system and related techniques | | US6070171 | May 15, 1998 | May 30, 2000 | Palantir Software, Inc. MicroMind, Inc. | Method and system for copy-tracking distributed software featuring tokens containing a key field and a usage field | | US6289450 | May 28, 1999 | Sep 11, 2001 | Authentica, Inc. | Information security architecture for encrypting documents for remote access while maintaining access control | | US6304972 | Jan 3, 2000 | Oct 16, 2001 | Massachusetts Institute of Technology | Secure software system and related techniques | | US6339825 | Jul 18, 2001 | Jan 15, 2002 | Authentica, Inc. | Method of encrypting information for remote access while maintaining access control | | US6343280 | Dec 15, 1998 | Jan 29, 2002 | | Distributed execution software license server | | US6449721 | Nov 1, 2001 | Sep 10, 2002 | Authentica Security Technologies, Inc. | Method of encrypting information for remote access while maintaining access control | | US6523119 | Dec 4, 1996 | Feb 18, 2003 | Rainbow Technologies, Inc. | Software protection device and method | | US6681212 | Apr 21, 2000 | Jan 20, 2004 | | Internet-based automated system and a method for software copyright protection and sales | | US6704872 | Apr 28, 1999 | Mar 9, 2004 | International Business Machines Corporation | Processor with a function to prevent illegal execution of a program, an instruction executed by a processor and a method of preventing illegal execution of a program | | US6721891 | Mar 29, 1999 | Apr 13, 2004 | Activcard Ireland Limited | Method of distributing piracy protected computer software | | US6978376 | Dec 15, 2000 | Dec 20, 2005 | Authentica, Inc. | Information security architecture for encrypting documents for remote access while maintaining access control | | US7024564 | Nov 22, 2002 | Apr 4, 2006 | SafeNet, Inc. | Software protection device and method | | US7032113 | Apr 27, 2001 | Apr 18, 2006 | Moldflow Ireland, Ltd. | Network enabled application software system and method | | US7058597 | Aug 11, 1999 | Jun 6, 2006 | Digital River, Inc. | Apparatus and method for adaptive fraud screening for electronic commerce transactions | | US7062584 | Jul 12, 2000 | Jun 13, 2006 | Thomson Licensing | Method and apparatus for supporting two different types of integrated circuit cards with a single connector | | US7165051 | Feb 22, 2005 | Jan 16, 2007 | Digital River, Inc. | Electronic commerce system and method for detecting fraud | | US7174466 | Jun 25, 2002 | Feb 6, 2007 | Sas Validy | Method to protect software against unwanted use with a “detection and coercion” principle | | US7181758 | Dec 19, 2002 | Feb 20, 2007 | Data Innovation, L.L.C. | Information distribution and processing system | | US7269740 | Jun 25, 2002 | Sep 11, 2007 | SAS Validy | Method to protect software against unwanted use with a “variable principle” | | US7272725 | Jun 25, 2002 | Sep 18, 2007 | SAS Validy | Method to protect software against unwanted use with a “temporal dissociation” principle | | US7343494 | Jun 25, 2002 | Mar 11, 2008 | SAS Validy | Method to protect software against unwanted use with a “renaming” principle | | US7360252 | Mar 9, 2000 | Apr 15, 2008 | Macrovision Corporation | Method and apparatus for secure distribution of software | | US7396257 | May 26, 2005 | Jul 8, 2008 | ITT Manufacturing Enterprises, Inc. | Computer input/output (I/O) connector assembly having a security circuit disposed therein | | US7433685 | Feb 25, 2002 | Oct 7, 2008 | Swisscom Mobile AG | Order method | | US7434064 | Jun 25, 2002 | Oct 7, 2008 | Sas Validy | Method to protect software against unwanted use with a “elementary functions” principle | | US7458100 | Jan 14, 2004 | Nov 25, 2008 | Aladdin Europe GmbH | Adding copy protection to a computer program | | US7458102 | Aug 17, 2004 | Nov 25, 2008 | EMC Corporation | Information security architecture for remote access control using non-bidirectional protocols | | US7487129 | Sep 22, 2005 | Feb 3, 2009 | | Method and apparatus for the distribution of digitised information on demand | | US7502940 | Jun 25, 2002 | Mar 10, 2009 | SAS Validy | Method to protect software against unwanted use with a “conditional branch” principle | | US7508789 | Jul 9, 2007 | Mar 24, 2009 | Data Innovation LLC | Information distribution and processing system | | US7522554 | Jul 9, 2007 | Apr 21, 2009 | Data Innovation LLC | Information distribution and processing system | | US7617124 | Jan 27, 2000 | Nov 10, 2009 | Digital River, Inc. | Apparatus and method for secure downloading of files | | US7627750 | Sep 2, 2004 | Dec 1, 2009 | Data Innovation, LLC | Information distribution and processing system | | US7830830 | Jul 9, 2007 | Nov 9, 2010 | Data Innovation LLC | Information distribution and processing system | | US7836301 | Mar 10, 2004 | Nov 16, 2010 | | Computer program for securely viewing a file | | US7840176 | Dec 22, 2006 | Nov 23, 2010 | Email Link Corporation | Information distribution and processing system | | US7881972 | Oct 12, 2006 | Feb 1, 2011 | Digital River, Inc. | Electronic commerce system and method for detecting fraud | | US7991347 | Feb 9, 2002 | Aug 2, 2011 | Data Innovation LLC | System and method for accessing set of digital data at a remote site | | US8050980 | Sep 29, 2009 | Nov 1, 2011 | Digital River, Inc. | Secure downloading of a file from a network system and method | | USRE41186 | Sep 9, 2004 | Mar 30, 2010 | EMC Corporation | Method of encrypting information for remote access while maintaining access control | | USRE42861 | Apr 7, 2006 | Oct 18, 2011 | Activcard Ireland, Ltd. | Method of distributing piracy protected computer software |
Claims1. A system for protecting computer software from unauthorized execution within a computer system, the system comprising: - a memory within the computer system for containing a first part of the computer software;
- a hardware key attached to the computer system, the hardware key for containing and executing a second part of the computer software;
- a processor for executing the first part of the computer software and for communicating to the hardware key to cause execution of the second part of the computer software within the hardware key, when the execution of the second part of the computer software is requested by the first part of the computer software; and
- a data receiver attached to the computer system and further attached to a transmission facility, the data receiver for receiving the second part of the computer software and storing the second part of the computer software into the hardware key.
2. The system of claim 1 further comprising a connection between the hardware key and the data receiver, and wherein the hardware key will only receive the second part of the computer software through the connection. 3. The system of claim 2 wherein the first part of the computer software causes the data receiver to receive the second part of the computer software. 4. A system for protecting computer software from unauthorized execution within a computer system, the system comprising: - a memory within the computer system for containing a first part of the computer software;
- a hardware key attached to the computer system, the hardware key for containing and executing a second part of the computer software wherein the second part of the computer software is decoded by the hardware key before execution of the second part of the computer software;
- a processor for executing the first part of the computer software and for communicating to the hardware key to cause execution of the second part of the computer software within the hardware key, when the execution of the second part of the computer software is requested by the first part of the computer software.
5. The system of claim 4 wherein the hardware key further comprises a decoding device connected to the hardware key, wherein the decoding device decodes the second part of the computer software before execution of second part of the computer software in the hardware key. 6. The system of claim 1 wherein the second part of the computer software comprises at least one subroutine. 7. A system for protecting computer software from unauthorized execution within a computer system, the system comprising: - a memory within the computer system for containing a first part of the computer software;
- a hardware key attached to the computer system, the hardware key for containing and executing a second part of the computer software wherein memory within the hardware key comprises only volatile memory for storing the second part of the computer software, wherein contents of the volatile memory are erased upon removing electrical power from the hardware key;
- a processor for executing the first part of the computer software and for communicating to the hardware key to cause execution of the second part of the computer software within the hardware key, when the execution of the second part of the computer software is requested by the first part of the computer software.
8. A system for protecting computer software from unauthorized execution within a computer system, the system comprising: - a memory within the computer system for containing a first part of the computer software;
- a hardware key attached to the computer system, the hardware key for containing and executing a second part of the computer software wherein the second part of the computer software comprises machine instructions for erasing the second part of the computer software when the hardware key has not received communications from the computer system within a predetermined amount of time;
- a processor for executing the first part of the computer software and for communicating to the hardware key to cause execution of the second part of the computer software within the hardware key, when the execution of the second part of the computer software is requested by the first part of the computer software.
9. A system for protecting computer software from unauthorized execution within a computer system, the system comprising: - a memory within the computer system for containing a first part of the computer software;
- a hardware key attached to the computer system, the hardware key for containing and executing a second part of the computer software wherein the hardware key further comprises a battery powered portion of volatile memory wherein the battery powered portion of memory contains control software;
- a processor for executing the first part of the computer software and for communicating to the hardware key to cause execution of the second part of the computer software within the hardware key, when the execution of the second part of the computer software is requested by the first part of the computer software.
10. A method for protecting computer software from unauthorized execution within a computer system, the method comprising the steps of: - (a) dividing the computer software into two parts;
- (b) storing a first part of the computer software into a memory within the computer system;
- (c) receiving a second part of the computer software only from a transmission facility attached to the computer system and storing the second part of the computer software into a hardware key attached to the computer system;
- (d) executing the first part of the computer software in a processor contained in the computer system, wherein the first part of the computer software communicates to the hardware key to cause execution of the second part of the computer software within the hardware key device to provide results needed for operation of the first part of the computer software.
11. The method of claim 10 wherein step (c1) further comprises the step of decoding the second part of the computer software before storing the second part of the computer software into the hardware key processor device. 12. The method of claim 11 further comprising the step of performing the decoding within a decoding device attached to the hardware key processor device. 13. The method of claim 10 wherein step (c) is performed as a part of step (d) and is performed when the first part of the software is executed. 14. A method for protecting computer software from unauthorized execution within a computer system, the method comprising the steps of: - (a) dividing the computer software into two parts;
- (b storing a first part of the computer software into a memory within the computer system;
- (c) storing a second part of the computer software into a hardware key attached to the computer system;
- (d) executing the first part of the computer software in a processor contained in the computer system, wherein the first part of the computer software communicates to the hardware key to cause execution of the second part of the computer software within the hardware key device to provide results needed for operation of the first part of the computer software; and
- (e) erasing the second part of the computer software when the second part of the computer software has not received communications from the first part of the computer software within a predetermined amount of time.
15. A method for protecting computer software from unauthorized execution within a computer system, the method comprising the steps of: - (a) dividing the computer software into two parts;
- (b) storing a first part of the computer software into a memory within the computer system;
- (c) storing a second part of the computer software into a hardware key attached to the computer system;
- (d) executing the first part of the computer software in a processor contained in the computer system, wherein the first part of the computer software communicates to the hardware key to cause execution of the second part of the computer software within the hardware key device to provide results needed for operation of the first part of the computer software; and
- (e) erasing the second part of the software from the hardware key upon termination of the first part of the software.
16. A method for protecting computer software from unauthorized execution within a computer system, the method comprising the steps of: - (a) dividing the computer software into two parts;
- (b) receiving a first part of the software from a transmission facility;
- (c) storing the first part of the computer software into a memory within the computer system;
- (d) storing a second part of the computer software into a hardware key attached to the computer system; and
- (e) executing the first part of the computer software in a processor contained in the computer system, wherein the first part of the computer software communicates to the hardware key to cause execution of the second part of the computer software within the hardware key device to provide results needed for operation of the first part of the computer software.
17. The method of claim 10 wherein the following step (b1) is performed prior to step (b): - (b1) copying the first part of the software from a distribution media read by a removable media storage device of the computer system.
18. A system for protecting computer software from unauthorized execution within a computer system, the system comprising: - memory means within the computer system for containing a first part of the computer software;
- hardware key means attached to the computer system, the hardware key means for containing and executing a second part of the computer software;
- processor means for executing the first part of the computer software and for communicating to the hardware key means to cause execution of the second part of the computer software within the hardware key means, when the execution of the second part of the computer software is requested by the first part of the computer software; and
- data receiver means attached to the computer system and further attached to a transmission facility means, the data receiving means for receiving the second part of the computer software from the transmission facility means and storing the second part of the computer software into the hardware key means.
19. The system of claim 18 further comprising connection means between the hardware key means and the data receiver means, wherein the hardware key means will only receive the second part of the computer software through the connection means. 20. The system of claim 19 wherein execution of the first part of the computer software causes the data receiver means to receive the second part of the computer software. 21. A system for protecting computer software from unauthorized execution within a computer system, the system comprising: - memory means within the computer system for containing a first part of the computer software;
- hardware key means attached to the computer system, the hardware key means for containing and executing a second part of the computer software wherein the second part of the computer software is decoded by the hardware key means before execution of the second part of the computer software; and
- processor means for executing the first part of the computer software and for communicating to the hardware key means to cause execution of the second part of the computer software within the hardware key means, when the execution of the second part of the computer software is requested by the first part of the computer software.
22. The system of claim 21 wherein the hardware key means further comprises a decoding means connected to the hardware key means, wherein the decoding means decodes the second part of the computer software before execution of second part of the computer software in the hardware key means. 23. The system of claim 18 wherein the second part of the computer software comprises at least one subroutine. 24. A system for protecting computer software from unauthorized execution within a computer system, the system comprising: - memory means within the computer system for containing a first part of the computer software;
- hardware key means attached to the computer system, the hardware key means for containing and executing a second part of the computer software wherein memory means within the hardware key means comprises only volatile memory means for storing the second part of the computer software, wherein contents of the volatile memory means are erased upon removing electrical power from the hardware key means; and
- processor means for executing the first part of the computer software and for communicating to the hardware key means to cause execution of the second part of the computer software within the hardware key means, when the execution of the second part of the computer software is requested by the first part of the computer software.
25. A system for protecting computer software from unauthorized execution within a computer system, the system comprising: - memory means within the computer system for containing a first part of the computer software;
- hardware key means attached to the computer system, the hardware key means for containing and executing a second part of the computer software wherein the second part of the computer software comprises machine instructions for erasing the second part of the computer software when the second part of the computer software has not received communications from the first part of the computer software within a predetermined amount of time; and
- processor means for executing the first part of the computer software and for communicating to the hardware key means to cause execution of the second part of the computer software within the hardware key means, when the execution of the second part of the computer software is requested by the first part of the computer software.
26. A system for protecting computer software from unauthorized execution within a computer system, the system comprising: - a memory within the computer system for containing a first part of the computer software;
- a data receiver attached to the computer system and further attached to a transmission facility;
- a hardware key attached to the computer system and further attached to the data receiver, the hardware key for receiving a second part of the computer software from the data receiver, containing the second part of the computer software and executing the second part of the computer software, and wherein the second part of the computer software passes from the data receiver to the hardware key without passing through the memory within the computer system;
- a processor for executing the first part of the computer software contained within the memory and for communicating to the hardware key to cause execution of the second part of the computer software within the hardware key, when the execution of the second part of the computer software is requested by the first part of the computer software.
27. The system of claim 26 wherein the first part of the computer software causes the data receiver to receive the second part of the computer software. 28. The system of claim 26 wherein the second part of the computer software is decoded by the hardware key before execution of the second part of the computer software. 29. The system of claim 28 wherein the hardware key further comprises a decoding device connected to the hardware key, wherein the decoding device decodes the second part of the computer software before execution of second part of the computer software in the hardware key. 30. The system of claim 26 wherein the second part of the computer software comprises at least one subroutine. 31. The system of claim 26 wherein memory within the hardware key comprises only volatile memory for storing the second part of the computer software, wherein contents of the volatile memory are erased upon removing electrical power from the hardware key. 32. The system of claim 26 wherein the second part of the computer software comprises machine instructions for erasing the second part of the computer software when the hardware key has not received communications from the computer system within a predetermined amount of time. 33. The system of claim 26 wherein the hardware key further comprises a battery powered portion of memory wherein the battery powered portion of memory contains control software. |