Method and apparatus for protecting multiple copies of computer software from unauthorized use5081676Abstract A hardware device containing a first permanent key and a second key is plugged in a specified port of a computer to establish a communication path between the hardware device and computer. The first and second keys are presented with an access sequence from the computer in the software which is desired to be controlled generating outputs which are applied to an algorithm decoder which provides a control key which is used to protect the software from unauthorized use. The control key is the resultant of the algorithm decoder and the first and second keys. One of the keys is supplied with the hardware under the control of the developer whereas the second key may be supplied with the hardware device but is not restricted to the hardware device and may be entered through a separate port of the computer. The algorithm decoder can be included in any part of the software, the computer hardware or any combination thereof. Many combinations of the first and second keys may be designed to produce the same control key when decoded. One of the keys may be altered without regard to security, but there are certain values of the second key for each given value of the first key which will operate the software. Providing a plurality of first and matching second keys which produce the plurality of different valid control keys allows the use of additional software that works in conjunction with the original distributed software acquired at a later date without the addition of additional hardware device. Claims What is claimed is: Description BACKGROUND OF THE INVENTION
TABLE I
______________________________________
Kx0 = 1101 Ka0 = 1001 Kx0 =
Kx1 = 1011 Ka1 = 1111 0100
Kx2 = 0110 Ka2 = 0110
. .
. .
. .
Kxn = 1010 Kan = 1110
______________________________________
Since the control key 7 is constant Kxa, it will be apparent that identical software keyed to Kxa will always run with any identical Kxa. Since other combinations of Kx and Ka will produce the same Kxa as illustrated in this example, many apparently different keys will operate the identical software. From the simple four bit illustration for Kx there are only 2.sup.4 or 16 such keys out of a possible 256 combinations of eight bits. Other combinations and limitations can be chosen by design. It will be appreciated that the previous example which employs four bits for the first key Kx and the second key Ka are merely chosen for purposes of understanding and are not to be construed as any limitation on the invention. Furthermore, the particular algorithm 6 namely, XOR'ing the first and second keys 13 and 20 is merely chosen for purposes of illustration and does not constitute a limitation on the present invention. There are literally an infinite number of algorithms which can produce the desired results, and the complexity or simplicity of the choice of the algorithm is left to its designer. In designing systems to be effective, at least one section 12 or 18 of the security device 10 must not be easily duplicated or emulated. Simply as illustrative, this portion is designated as section 12 which contains a hardware coded element 13 which effectively yields the code Kx when interrogated by the access sequence 2. To prevent tampering by the end user, Kx should remain permanent once established. In addition, to reduce the possibility of emulating the access sequence 2 in producing the response 7 by some other device or circumvention directly through the software means, the algorithm for extracting the code from Kx should be complex. However, the value or code Kx must remain readable and not secret in order to provide protection to many non-identical groups of software discussed hereinafter. In addition, the function of the algorithm should be made kept secret and complex to prevent reverse engineering. Finally, there must be a sufficient number of possible but invalid combinations of Ka for each value of Kx to prevent trial and error searches for Kxa within a practical length of time. If Kx cannot be changed but can be read, the complex algorithm and the required value Kxa remains secret, and the number of combinations of Ka large, then the probability of determining the necessary value of Ka to operate the software within a reasonable length of time become prohibitive. Based on this assumption, the contents of Ka may be altered and may be allowed to be altered without regard to security. There will be at least one value of Ka for each given value of Kx that will operate the software. However, the possible number of Ka values must be large so that trial and error efforts to determine the value of Ka will be impractical. Referring now to FIG. 2, instead of providing a single value Ka 20 stored in section 18, section 18 is provided with a plurality of elements 22, 24, 26, etc. providing a plurality of storage areas needed to store keys Ka through Kn, one for each protected application module, access, etc. for the software. Assuming that it is possible to freely read and write information to and from one of the areas 22, 24, etc., it will be apparent that the stored values, for example, Kb and Kc can provide two new keys Kxb and Kxc, which can be made available for other applications such as additional software, modules, etc. Table II below illustrates that each value of Kx (Kx0, Kx1, and Kx2), a different value of Kb (Kb0, Kb1, and Kb2) is required to produce a given key Kxb and similarly, for Kxc.
TABLE II
______________________________________
Kx0 = 1101
Kb0 = 0110 Kxb = Kc0 = 1100
Kxc =
Kx1 = 1011
Kb1 = 0000 1011 Kc1 = 1010
0001
Kx2 = 0110
Kb2 = 1101 Kc2 = 0111
. . .
. . .
. . .
Kxn = 1010
Kbn = 0001 Kcn = 1011
______________________________________
It will be appreciated that when different Ka through Kn are used different algorithms may be employed for each Ka through Kn giving a different but particular control key for each Kxa through Kxn. FIG. 3 illustrates an example of a single implementation using a four bit code for Kx, and Ka through Kn. A battery 11 is coupled to elements 14, 15, 16 and 17 of section 12 as illustrated producing the Kx code 13 of 1101 representing bit 3 through bit 0, respectively. In FIG. 3, the output Kx is illustrated as a parallel output which can also be represented by serial outputs by sequential selection. The battery 11 is also connected to section 18 as shown. Code 20 (Ka) is formed by elements 21, 23, 25 and 27 while code 26 (Kn) is formulated by elements 28, 29, 30 and 31. For Ka, the four bit code is 1001 while for Kn, the code is 0011. The individual elements 14 through 17 of section 12 as well as 21, 23, 25 and 27 of Ka 20 and 28 through 31 of Kn 26 are all individual elements which can be wire, memory cells, flip-flops, storage register element cells, programmable memory cells, etc. Any of these elements may be utilized to provide the desired code which has been selected in accordance with the particular design utilized to carry out the present invention. The outputs from section 18 are provided by a gang switch 32 to provide Ka through Kn outputs. The outputs can further be selected by means of a multiplex switch which are controlled by addressing methods common in computer hardware. Accordingly, the problem of distributing protected software is ameliorated by the present invention. Identical packs of protected software may be mass replicated and released with a hardware security device 10 with Kx in Section 12 supplied with random values. Corresponding areas of section 18 are loaded with the corresponding correct values of Ka through Kn for each given Kx providing the appropriate key values Kxa through Kxn, each such control key being used for a corresponding piece of software desired to be protected. At any time that it is desired to allow access to another additional section of software, it is only necessary to load an appropriate value into the key area that corresponds to this additional software. The value of Kx is read and transferred to the software developer which may be necessary if Kx has been distributed at random, who can then provide the matching correct code Ka through Kn for each additional software module that is needed to be operative. This step can easily be performed by telephone eliminating the need to ship software or additional keys. To prevent additional unauthorized activation of the software through the duplication of the contents of memory of the elements Ka through Kn from a sister device which has been authorized and with the proper codes Ka through Kn implanted, it is necessary to create a unique value of Kx for every hardware device so that no identical twin(s) exists. This can readily be accomplished through ordinary means if EPROM's or similar storage devices are used and is only slightly more inconvenient than programming Kx with the same value. As a practical matter, Kx does not have to have an infinite number of values as chance of finding the same key is improbable. However, if the value of Kx is truly unique, such that only one value exists for a given piece of software, then Kx can readily be a substitute for serialization of software itself which make replication of the software a simple process. Additionally, it would be unnecessary to mail in a confirmation of the registration. The software can be made to run only upon receipt of the necessary value of Ka, Kb, Kc, etc. which can only be obtained from the developer and only after all pertinent facts have been given at the request of the developer. Accordingly, the developer has complete control over the licensing of the software eliminating third parties from interfering with the integrity of the software developer and the end user relationship. It is understood that for purposes of this disclosure, software will include data files, applications, netware, operating systems, etc. which are to be protected using this invention. Since other changes and modifications varied to fit particular operating requirements and environments will be apparent to those skilled in the art, the invention is not considered limited to the examples chosen for purposes of illustration, and includes all changes and modifications which do not constitute a departure from the true spirit and scope of this invention as claimed in the following claims and equivalents thereto.
|
Same subclass Same class Consider this |
||||||||||
