All of the material in this patent application is subject to copyright protection under the copyright laws of the United States and of other countries. As of the first effective filing date of the present application, this material is protected as unpublished material. However, permission to copy this material is hereby granted to the extent that the copyright owner has no objection to the facsimile reproduction by anyone of the patent documentation or patent disclosure, as it appears in the United States Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
1. Field of the Invention
The invention relates to secure electronic delivery of content, such as music or movies. More particularly, the invention relates to an improved method and apparatus for authenticating external modules.
2. The Prior Art
An important problem in protecting content is making sure that only compliant, authorized software modules are allowed to process the content on the user's computer. For example, the content owners might want to restrict the number of perfect digital copies that the end users can make from a single piece of purchased content.
Or, they might want to allow a restricted “preview mode”, where the content (like a song) is delivered for free, but only be allowed to play some limited number of times. Against this desire of the content owners, are armies of hackers who want to figure out how to patch the software modules to disable the restrictions.
Therefore, code authentication becomes a critical problem: determining whether a given software module is intact and compliant, or has been hacked. In the art, authentication is often treated as a cryptographic problem. The standard way to verify authentication is with digital signatures.
Further, even though the electronic industry is enamored with using digital signatures for code authentication problems, the use of signatures is in reality a poor substitute for a robust cryptographic solution for the following reasons. A digital signature resolves itself into a single yes/no decision, i.e., “did the signature match”? A single jump instruction is thereby generated, which, if patched, disables the signature checking. A hacker's job is facilitated by such a simplistic method. Another algorithm for authenticating data files includes the generation and use of what is known as a “signet”. Signets are described in U.S. Pat. Nos. 6,038,316 and 5,978,482 assigned to International Business Machines Corporation. These patents are hereby incorporated by reference. Signets are utilized according to the following description to provide a method and system to distribute extrication functions to legitimate users of information that are (1) openly available, publicly computable, and computationally infeasible to invert; (2) use an extremely long decryption key; and (3) only short communication from the authorization center occurs. An authorization center processor receives a user identifying signal value ni, and then responsively creates a corresponding authorization signal ai, called a “signet”, since it shares some properties of a digital signature. The pair (ai, ni) is called a “signet pair”. The extrication function operates on the signet pair to produce a key signal K that may be used to decrypt the digital information. The extrication function is publicly computable. However, it is computationally infeasible to determine how to create a new authorization signal aj for a corresponding user processor identifying signal value nj, or even to create any new valid signet pair wherein a “valid signet pair” is any pair (x, y) in which x is the result obtained by applying the authorization function, or computation, to y. An alternative method offers the feature that, although the signet pair is short, the key produced by the extrication function is long. The combination of having a long key K with the intractability of generating a new signet pair based on previous signet pairs and the extrication function, serves to de-motivate (i.e. by use of a long K) and incapacitate (i.e. the feature of intractability) those who might wish to attempt to become illegitimate or pirate authorization centers. So, IBM's digital signet technology (which generate thousands of bytes that are correct if and only if the signet matches the hash) is far superior to that of an ordinary signature in this application.
The attack that these hackers utilize is that of patching external modules with illicit functions. The hackers then distribute these hacked programs on the Internet. Users search these out and download them, because copying restrictions have been removed that the legitimate programs enforce. For example, last November, a program called “DeCSS” appeared on the Internet. It allowed users to copy DVD videos, something that legitimate DVD video players are forbidden (by license) to do. While DeCSS was an entire application, this invention envisions that it is not necessary for the hacker to provide an entire program. For example, he may be able to replace only a single module within a program to achieve the result he desires. This problem is exacerbated in the modern world, because programs are often comprised, in part, of external modules provided by manufacturers different than the one manufacturing the program. In particular, a system optionally uses these external modules which are loaded by an application on demand. External modules are typically implemented as DLLs under WIN32 or shared object (SO) files on UNIX platforms and are provided by third party manufacturers.
An example for an interaction between an application and external modules is the EMMS, or Electronic Media Management System, end user application and its use of decoder modules. Based on the type of encoding of an album, a decoder module needs to be located and loaded. Once the module is loaded, its externalized functions are called in order to perform the decompression of the audio data.
This example also highlights the security risk of using external modules. Essentially, the application loads and executes untrusted code. In the above example, that code gets access to the encoded audio data. The existence of a published API (like ACM, an Audio Compression Manager published by Microsoft for modules that are transforming an audio stream for decoders) makes it particularly easy for an attacker to replace the external module with a different one which, for example, simply writes the compressed audio data to disk and thereby obtains an in-the-clear copy which could then be distributed on the Internet.
Any authentication technology used for authenticating external modules needs to take into account that the external module remains functional so that it can be used by other applications which do not require a high level of trust, or deploy their own authentication scheme. Consequently, the external module cannot be simply encrypted by the secure application since that would prevent any other application from using it. As shown by the example above, code in external modules should never be executed without first authenticating that module.
Therefore, what is desired is a more efficient method, apparatus and product for securing and verifying the authenticity of external software modules.
The preferred embodiment of the invention comprises an external module that has been loaded into an entity's memory being transformed by two functions. These are namely, the STOMP function and the UNSTOMP function. One or both of these functions is based, in some way, on the actual code that is found in the legitimate version of the external module. In other words, the STOMP-UNSTOMP pair produces an external module that in the preferred embodiment works differently if even a single byte of code in the external module has been changed by an attacker.
Essentially, the STOMP and the UNSTOMP are paired. The STOMP transforms the external module and makes it temporarily unusable whilst conversely, the UNSTOMP repairs the damage and makes it workable again. Thus, if the module is not authentic, the pairing between the STOMP and UNSTOMP is broken, because at least one of them behaves differently. Therefore, a patched module frorr, a hacker remains unusable since the STOMP and UNSTOMP transformations do not produce a working external module. Because of the STOMP and UNSTOMP technique, an application is secure because if an external module is free from tampering then the application executes normally. In the event that an illicitly patched external module is loaded then the application fails. In either case, no audio, video or information content is illegally copied because of the disablement of the external module by the STOMP-UNSTOMP procedure.
The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other features, and advantages of the invention will be apparent from the following detailed description taken in conjunction with the accompanying drawings.
It is important to note that these embodiments are only examples of the many advantageous uses of the innovative teachings herein. In general, statements made in the specification of the present application do not necessarily limit any of the various claimed inventions. Moreover, some statements may apply to some inventive features but not to others. In general, unless otherwise indicated, singular elements may be in the plural and vice versa with no loss of generality.
In the drawing like numerals refer to like parts through several views.
Exemplary Embodiment
The scope of this invention comprises all methods of STOMPing and UNSTOMPing the external module. In the preferred embodiment, a function based on an RSA encryption is utilized to STOMP the external module, and a function based on digital signets is utilized to UNSTOMP the STOMPed external module. Digital signets are described in U.S. Pat. Nos. 6,038,316, and 5,978,482. The process comprises several steps including: 1) the generation of public/private key pairs, 2) the generation of an authentication token, 3) the STOMPing of an external module and 4) the UNSTOMPing of a STOMPed external module. First, a discussion of the generation of public/private key pairs.
In particular, at run time, the verification code performs the steps as shown in
Finally, the verification code needs access to the external module and the corresponding authentication token in order to verify the authenticity of the external software module. If the external module verification succeeds, the external module is mapped into memory and restored to its original content. However, if the verification process fails, the external module consists of random bytes which when executed undoubtedly cause an application error. No illicit patches are thereby allowed to effect the operation of a computer entity.
High Level Overview
The invention as described further comprises the following additional unique characteristics:
RSA or signet technology, and the number of bytes that are needed for the STOMP/UNSTOMP behavior is equal to the size of the module. Of course, if the software module is small, or if the K calculation is more efficient, it is within the scope of this invention to forgo the pseudo-random bytes and use K directly.
Alternative Embodiments
An alternate embodiment envisions the use of signet data in both the STOMP and the UNSTOMP processes. Further, as a third option, the STOMP uses signets and the UNSTOMP uses another cryptographic technique like the RSA protocol to accomplish the authentication of the external module. All of these are within the scope of the invention.
Conclusion
Therefore, a more efficient method, apparatus and product for securing and verifying the authenticity of external modules has been described. Thus, the limitations defined in the prior art have been overcome. In addition, the description has included an improved system and method for controlling the enablement of an external module so that an application loading the external module fails in the event that the module is illicitly patched by a hacker. Otherwise, the actuation of the application is permitted because the STOMP-UNSTOMP procedure has validated the authenticity of the external module. Finally, the invention is implemented as part of the EMMS, or Electronic Media Management System End User Toolkit as of release 1.33. The invention is used to authenticate external decoder modules which are provided by third party companies.
The present invention, as would be known to one of ordinary skill in the art could be produced in hardware or software, or in a combination of hardware and software. The system, or method, according to the inventive principles as disclosed in connection with the preferred embodiment, may be produced in a single computer system having separate elements or means for performing the individual functions or steps described or claimed or one or more elements or means combining the performance of any of the functions or steps disclosed or claimed, or may be arranged in a distributed computer system, interconnected by any suitable means as would be known by one of ordinary skill in art.
According to the inventive principles as disclosed in connection with the preferred embodiment, the invention and the inventive principles are not limited to any particular kind of computer system but may be used with any general purpose computer, as would be known to one of ordinary skill in the art, arranged to perform the functions described and the method steps described. The operations of such a computer, as described above, may be according to a computer program contained on a medium for use in the operation or control of the computer, as would be known to one of ordinary skill in the art. The computer readable medium which may be used to hold, contain or deliver the computer program product, may be a fixture of the computer such as an embedded memory or may be on a transportable medium such as a disk, as would be known to one of ordinary skill in the art.
The invention is not limited to any particular computer program or logic or language, or instruction but may be practiced with any such suitable program, logic or language, or instructions as would be known to one of ordinary skill in the art. Without limiting the principles of the disclosed invention any such computing system can include, inter alia, at least a computer readable medium allowing a computer to read data, instructions, messages or message packets, and other computer readable information from the computer readable medium. The computer readable medium may include non-volatile memory, such as ROM, Flash memory, floppy disk, Disk drive memory, CD-ROM, and other permanent storage. Additionally, a computer readable medium may include, for example, volatile storage such as RAM, buffers, cache memory, and network circuits.
Furthermore, the computer readable medium may include computer readable information in a transitory state medium such as a network link and/or a network interface, including a wired network or a wireless network, that allow a computer to read such computer readable information.
Although specific embodiments of the invention have been disclosed, those having ordinary skill in the art will understand that changes can be made to the specific embodiments without departing from the spirit and scope of the invention. The scope of the invention is not to be restricted, therefore, to the specific embodiments, and it is intended that the appended claims cover any and all such applications, modifications, and embodiments within the scope of the present invention.
This patent application is related to U.S. patent application Ser. No. 09/658,218, filed on even date herewith, commonly assigned to the assignee hereof, and the entire disclosure of which is herein incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
4200770 | Hellman et al. | Apr 1980 | A |
4218582 | Hellman et al. | Aug 1980 | A |
4272810 | Gates et al. | Jun 1981 | A |
4405829 | Rivest et al. | Sep 1983 | A |
4424414 | Hellman et al. | Jan 1984 | A |
4463387 | Hashimoto et al. | Jul 1984 | A |
4528643 | Freeny, Jr. | Jul 1985 | A |
4731840 | Mniszewski et al. | Mar 1988 | A |
4757534 | Matyas et al. | Jul 1988 | A |
4782529 | Shima | Nov 1988 | A |
4803725 | Horne et al. | Feb 1989 | A |
4809327 | Shima | Feb 1989 | A |
4825306 | Robers | Apr 1989 | A |
4868687 | Penn et al. | Sep 1989 | A |
4868877 | Fischer | Sep 1989 | A |
4878246 | Pastor et al. | Oct 1989 | A |
4879747 | Leighton et al. | Nov 1989 | A |
4905163 | Garber et al. | Feb 1990 | A |
4926479 | Goldwasser et al. | May 1990 | A |
4944006 | Citta et al. | Jul 1990 | A |
4972472 | Brown et al. | Nov 1990 | A |
4995082 | Schnorr | Feb 1991 | A |
5005200 | Fischer | Apr 1991 | A |
5130792 | Tindell et al. | Jul 1992 | A |
5159634 | Reeds, III | Oct 1992 | A |
5214702 | Fischer | May 1993 | A |
5220604 | Gasser et al. | Jun 1993 | A |
5224163 | Gasser et al. | Jun 1993 | A |
5224166 | Hartman, Jr. | Jun 1993 | A |
5260788 | Takano et al. | Nov 1993 | A |
5261002 | Perlman et al. | Nov 1993 | A |
5276901 | Howell et al. | Jan 1994 | A |
5315658 | Micali | May 1994 | A |
5319705 | Halter et al. | Jun 1994 | A |
5343527 | Moore | Aug 1994 | A |
5347580 | Molva et al. | Sep 1994 | A |
5355302 | Martin et al. | Oct 1994 | A |
5369705 | Bird et al. | Nov 1994 | A |
5371794 | Diffie et al. | Dec 1994 | A |
5412717 | Fischer | May 1995 | A |
5420927 | Micali | May 1995 | A |
5497421 | Kaufman et al. | Mar 1996 | A |
5509071 | Petrie, Jr. et al. | Apr 1996 | A |
5519778 | Leighton et al. | May 1996 | A |
5537475 | Micali | Jul 1996 | A |
5557541 | Schulhof et al. | Sep 1996 | A |
5581479 | McLaughlin et al. | Dec 1996 | A |
5588060 | Aziz | Dec 1996 | A |
5592664 | Starkey | Jan 1997 | A |
5604804 | Micali | Feb 1997 | A |
5606617 | Brands | Feb 1997 | A |
5636139 | McLaughlin et al. | Jun 1997 | A |
5666420 | Micali | Sep 1997 | A |
5673316 | Auerbach et al. | Sep 1997 | A |
5675734 | Hair | Oct 1997 | A |
5710887 | Chelliah et al. | Jan 1998 | A |
5796841 | Cordery et al. | Aug 1998 | A |
5892900 | Ginter et al. | Apr 1999 | A |
5974549 | Golan | Oct 1999 | A |
5978482 | Dwork et al. | Nov 1999 | A |
6480959 | Granger et al. | Nov 2002 | B1 |
6698016 | Ghizzoni | Feb 2004 | B1 |
Number | Date | Country |
---|---|---|
0704785 | Apr 1996 | EP |
WO 9641445 | Dec 1996 | WO |
WO 9743717 | Nov 1997 | WO |
WO 9813970 | Apr 1998 | WO |
WO 9839878 | Sep 1998 | WO |