Software self-defense systems and methods
2 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods are disclosed for protecting a computer program from unauthorized analysis and modification. Obfuscation transformations can be applied to the computer program'"'"'s local structure, control graph, and/or data structure to render the program more difficult to understand and/or modify. Tamper-resistance mechanisms can be incorporated into the computer program to detect attempts to tamper with the program'"'"'s operation. Once an attempt to tamper with the computer program is detected, the computer program reports it to an external agent, ceases normal operation, and/or reverses any modifications made by the attempted tampering. The computer program can also be watermarked to facilitate identification of its owner. The obfuscation, tamper-resistance, and watermarking transformations can be applied to the computer program'"'"'s source code, object code, or executable image.
354 Citations
36 Claims
-
1-29. -29. (canceled)
-
30. A method for processing data, the method including:
-
encrypting the data;
performing a first processing pass on an input validation value and a first block of a copy of the encrypted data, the first processing pass including;
decrypting the first block; and
generating a first validation value;
performing a second processing pass on the first validation value and a second block of the copy of the encrypted data, the second processing pass including;
decrypting the second block; and
generating a second validation value;
transmitting the encrypted data and a first validation code to a computer readable medium, wherein the first validation code is derived, at least in part, from the input validation value, the first validation value, and the second validation value.
-
-
31. A method for decrypting and validating encrypted data, the method including:
-
(a) receiving encrypted data and a first validation code;
(b1) performing a first processing pass on a first input validation value and a first portion of the encrypted data, the first processing pass including;
decrypting the first portion of encrypted data; and
generating a first output validation value;
(c) performing a second processing pass on a second input validation value and a second portion of the encrypted data, wherein the second input validation value is derived, at least in part, from the first output validation value, and wherein the second processing pass includes;
decrypting the second portion of encrypted data; and
generating a second validation code;
(d) comparing the first validation code to the second validation code. - View Dependent Claims (32)
-
-
33. A method of generating a cryptographic validation value for use in authenticating data, the method including:
-
obtaining an input validation value;
dividing the input validation value into a first segment and a second segment;
using at least a first function to combine the first segment with a first input from a cryptographic cipher function, whereby the first function produces a first result;
using at least a second function to combine the second segment with a second input from the cryptographic cipher function, whereby the second function produces a second result;
generating a first transformed result by performing at least a first transformation on a first value, the first value being derived, at least in part, from the first result;
generating a second transformed result by performing at least a second transformation on a second value, the second value being derived, at least in part, from the second result;
forming an output validation value by combining a third segment and a fourth segment, the third segment being derived, at least in part, from the first transformed result, and the fourth segment being derived, at least, in part from the second transformed result. - View Dependent Claims (34, 35)
-
-
36-81. -81. (canceled)
Specification