System and method for secure authentication of external software modules provided by third parties
First Claim
1. A computer system for secure authentication of executable external modules, comprising:
- memory for storingan executable external module whose authenticity is to be verified,data K that can be created by using two different schemes, at least one scheme of the two different schemes being based on the integrity of a module to be verified, andan authentication token for the module to be verified which produces data K in both schemes, the executable external module being representative of the module to be verified; and
a processor, communicatively coupled to the memory, forusing data K as created by one scheme of the two different schemes to disrupt the executable external module; and
using data K as created by the other scheme of the two different schemes to restore the executable external module from the disrupted executable external module thereby authenticating said executable external module, and whereinthe processor further for performing at run time of the executable external module at the computer system the secure authentication byusing data K as created by one scheme of the two different schemes to disrupt the executable external module, andusing data K as created by the other scheme of the two different schemes to restore the executable external module from the disrupted executable external module thereby authenticating said executable external module, and whereinthe disrupting of the executable external module is performed by a STOMP process and the restoring of the executable external module is performed by an UNSTOMP process, and whereinone or more of the schemes is based on at least one of RSA encryption and digital signets, and whereina public component of one or more of the schemes is embedded in a verification code of the executable external module, and whereinthe authentication token is embedded in the executable external module and the executable external module itself remaining functional, and further whereinthe authentication token is embedded in the executable external module by adding an additional data section to a DLL in Portable Executable (PE) format, and whereinthe authentication token is external to the executable external module, and whereinthe at least one scheme based on the integrity of the module to be verified is independent of a location of the executable external module in memory, and whereinlocation independence is achieved by a canonical hash.
1 Assignment
0 Petitions
Accused Products
Abstract
An external module loads into an entity'"'"'s memory and is transformed by two functions. These are namely, the STOMP function and the UNSTOMP function. One or both of these functions is based on the actual code that is found in a legitimate version of the external module. The STOMP-UNSTOMP pair produces an external module that works differently if even a single byte of code in the external module has been changed by an attacker. 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. Therefore, a patched module from 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.
-
Citations
2 Claims
-
1. A computer system for secure authentication of executable external modules, comprising:
-
memory for storing an executable external module whose authenticity is to be verified, data K that can be created by using two different schemes, at least one scheme of the two different schemes being based on the integrity of a module to be verified, and an authentication token for the module to be verified which produces data K in both schemes, the executable external module being representative of the module to be verified; and a processor, communicatively coupled to the memory, for using data K as created by one scheme of the two different schemes to disrupt the executable external module; and using data K as created by the other scheme of the two different schemes to restore the executable external module from the disrupted executable external module thereby authenticating said executable external module, and wherein the processor further for performing at run time of the executable external module at the computer system the secure authentication by using data K as created by one scheme of the two different schemes to disrupt the executable external module, and using data K as created by the other scheme of the two different schemes to restore the executable external module from the disrupted executable external module thereby authenticating said executable external module, and wherein the disrupting of the executable external module is performed by a STOMP process and the restoring of the executable external module is performed by an UNSTOMP process, and wherein one or more of the schemes is based on at least one of RSA encryption and digital signets, and wherein a public component of one or more of the schemes is embedded in a verification code of the executable external module, and wherein the authentication token is embedded in the executable external module and the executable external module itself remaining functional, and further wherein the authentication token is embedded in the executable external module by adding an additional data section to a DLL in Portable Executable (PE) format, and wherein the authentication token is external to the executable external module, and wherein the at least one scheme based on the integrity of the module to be verified is independent of a location of the executable external module in memory, and wherein location independence is achieved by a canonical hash.
-
-
2. A computer readable medium comprising computer instructions including instructions for authenticating an external module comprising:
-
providing data K that can be created by using two different schemes, at least one scheme of the two different schemes being based on the integrity of a module to be verified; providing an authentication token for said module which produces data K in both schemes, an executable external module being representative of said module; at a computer system, using data K as created by one scheme of the two different schemes to disrupt said executable external module; and at the computer system, using data K as created by the other scheme of the two different schemes to restore the executable external module from the disrupted executable external module thereby authenticating said executable external module, and wherein the disrupting of the executable external module is performed by a STOMP process and the restoring of the executable external module is performed by an UNSTOMP process, and further wherein the STOMP process, at the computer system, disrupts the executable external module by decrypting a number of pseudo-random bytes that are part of the authentication token using a public security code of a public and private component pair security code; and XORing the decrypted pseudo-random bytes with the executable external module thereby disrupting the executable external module into an unusable state; and the UNSTOMP process, at the computer system, restores the executable external module in the unusable state by performing a signet extrication process to generate extrication data by using the hash of the executable external module in the unusable state; using the extrication data to generate another stream of pseudo-random bytes; and XORing the another stream of pseudo-random bytes with the executable external module in the unusable state thereby restoring, from the executable external module in the unusable state, the executable external module back to a usable state in the event there has been no illicit patching of the executable external module, and maintaining the executable external module in an unusable state in the event that the executable external module has been illicitly patched such that an application or program that is accessing the executable external module in the unusable state fails to operate, and wherein one or more of the schemes is based on RSA encryption, and one or more of the schemes is based on digital signets, and wherein a public component of one or more of the schemes is embedded in a verification code of the executable external module, and wherein the authentication token is embedded in the executable external module and the executable external module itself remaining functional, and wherein the authentication token is embedded in the executable external module by adding an additional data section to a DLL in Portable Executable (PE) format, and wherein the authentication token is external to the executable external module, and wherein the at least one scheme based on the integrity of the module to be verified is independent of a location of the executable external module in memory, and wherein location independence is achieved by locating and reading the executable external module'"'"'s image on a disk and by using a canonical hash, and wherein the using data K as created by one scheme to disrupt said executable external module, and the using data K to restore the executable external module from the disrupted executable external module, are performed at run time of the executable external module at the computer system, and further comprising instructions for; re-authenticating, at the computer system, the executable external module by periodically performing the disrupting of the executable external module and the restoring of the executable external module multiple times while interacting with the executable external module at the computer system; and performing run time checks of the executable external module to make sure that function calls to the executable external module are not intercepted by an attacker.
-
Specification