Software self-checking systems and methods
First Claim
Patent Images
1. A method of creating a self-checking software program on a non-transitory computer-readable medium, the method comprising:
- creating a plurality of self-checking code sequences operable to calculate a function of a portion of the program, each self-checking code sequence having an interval start field and an interval end field;
inserting the plurality of self-checking code sequences into the program source code;
inserting a plurality of correctors, each having a corrector value field, into the program executable;
assigning the self-checking code sequences to portions of the program, each of the portions containing at least one corrector;
locating the self-checking code sequences and setting the interval start field and the interval end field to values corresponding to the start of the portion of the program and the end of the portion of the program, respectively;
locating the correctors and setting the corrector value field of each such that the function calculated by the self-checking code sequence results in a predefined value when the portion of the program has not been improperly modified; and
writing the self-checking software program onto a non-transitory computer-readable medium.
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 they are compatible with copy-specific static watermarking and other tamper-resistance techniques.
-
Citations
20 Claims
-
1. A method of creating a self-checking software program on a non-transitory computer-readable medium, the method comprising:
-
creating a plurality of self-checking code sequences operable to calculate a function of a portion of the program, each self-checking code sequence having an interval start field and an interval end field; inserting the plurality of self-checking code sequences into the program source code; inserting a plurality of correctors, each having a corrector value field, into the program executable; assigning the self-checking code sequences to portions of the program, each of the portions containing at least one corrector; locating the self-checking code sequences and setting the interval start field and the interval end field to values corresponding to the start of the portion of the program and the end of the portion of the program, respectively; locating the correctors and setting the corrector value field of each such that the function calculated by the self-checking code sequence results in a predefined value when the portion of the program has not been improperly modified; and writing the self-checking software program onto a non-transitory computer-readable medium. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A self-checking software program, stored on a non-transitory computer-readable medium, created by a method comprising:
-
creating a plurality of self-checking code sequences operable to calculate a function of a portion of the program, each self-checking code sequence having an interval start field and an interval end field; inserting the plurality of self-checking code sequences into the program source code; inserting a plurality of correctors, each having a corrector value field, into the program executable; assigning the self-checking code sequences to portions of the program, each of the portions containing at least one corrector; and locating the self-checking code sequences and setting the interval start field and the interval end field to values corresponding to the start of the portion of the program and the end of the portion of the program, respectively; and locating the correctors and setting the corrector value field of each such that the function calculated by the self-checking code sequence results in a predefined value when the portion of the program has not been improperly modified. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. A system configured to create a self-checking software program comprising:
-
a processor; and a first non-transitory computer-readable storage medium communicatively coupled to the processor storing instructions that, when executed by the processor, cause the processor to; create a plurality of self-checking code sequences operable to calculate a function of a portion of the program, each self-checking code sequence having an interval start field and an interval end field; insert the plurality of self-checking code sequences into the program source code; insert a plurality of correctors, each having a corrector value field into the program executable; assign the self-checking code sequences to portions of the program, each of the portions containing at least one corrector; locate the self-checking code sequences and set the interval start field and the interval end field to values corresponding to the start of the portion of the program and the end of the portion of the program, respectively; locate the correctors and set the corrector value field of each such that the function calculated by the self-checking code sequence results in a predefined value when the portion of the program has not been improperly modified; and write the self-checking software program onto a second non-transitory computer-readable medium. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification