Software self-checking systems and methods
First Claim
Patent Images
1. A method of creating a self-checking software program, the method comprising:
- (a) inserting multiple self-checking code sequences into the program, each self-checking code sequence being operable to calculate a function of a portion of the program;
(b) inserting a plurality of correctors into the program;
(c) assigning the self-checking code sequences to overlapping portions of the program, each portion containing at least one corrector; and
(d) assigning values to the correctors, the value of the correctors being chosen such that the function calculated by the self-checking code sequence assigned to a given portion of the program results in a predefined value if the given portion has not been improperly modified.
3 Assignments
0 Petitions
Accused Products
Abstract
Software self-checking mechanisms are described for improving software tamper resistance and/or reliability. Redundant tests are performed to detect modifications to a program while it is running. Modifications are recorded or reported. Embodiments of the software self-checking mechanisms can be implemented such that they are relatively stealthy and robust, and so that it they are compatible with copy-specific static watermarking and other tamper-resistance techniques.
251 Citations
28 Claims
-
1. A method of creating a self-checking software program, the method comprising:
-
(a) inserting multiple self-checking code sequences into the program, each self-checking code sequence being operable to calculate a function of a portion of the program;
(b) inserting a plurality of correctors into the program;
(c) assigning the self-checking code sequences to overlapping portions of the program, each portion containing at least one corrector; and
(d) assigning values to the correctors, the value of the correctors being chosen such that the function calculated by the self-checking code sequence assigned to a given portion of the program results in a predefined value if the given portion has not been improperly modified. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A method of creating a dynamic self-checking program, the method comprising:
- inserting self-checking code into the program, the self-checking code being operable to perform dynamic integrity checks on overlapping intervals of the program.
- View Dependent Claims (15)
-
16. A self-checking program comprising:
-
a first code sequence configured to perform a first integrity check on a first portion of the program while the program is running;
a second code sequence configured to perform a second integrity check on a second portion of the program while the program is running;
wherein the first portion of the program and the second portion of the program overlap at least in part, and wherein the integrity of the first code sequence is checked by at least one code sequence and the integrity of the second code sequence is checked by at least one code sequence. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
Specification