Software self-checking systems and methods
First Claim
Patent Images
1. A non-transitory computer-readable storage medium storing programming instructions that, if executed by a processor of a computer system, are operable to cause the computer system to perform a method of determining an integrity of a program, the method comprising:
- performing, using a first self-checking code sequence included in the program during execution of the program, a check of the integrity of a first portion of the program;
determining, based on the check of the integrity of the first portion of the program by the first self-checking code sequence, that the first portion of the program has been modified;
performing, using a second self-checking code sequence included in the program during execution of the program, a check of the integrity of a second portion of the program, the second portion of the program comprising a tamper response mechanism;
determining, based on the check of the integrity of the second portion of the program by the second self-checking code sequence, that the second portion of the program has not been modified; and
triggering the tamper response mechanism based on determining that the first portion of the program has been modified and that the second portion of the program has not been 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 they are compatible with copy-specific static watermarking and other tamper-resistance techniques.
-
Citations
21 Claims
-
1. A non-transitory computer-readable storage medium storing programming instructions that, if executed by a processor of a computer system, are operable to cause the computer system to perform a method of determining an integrity of a program, the method comprising:
-
performing, using a first self-checking code sequence included in the program during execution of the program, a check of the integrity of a first portion of the program; determining, based on the check of the integrity of the first portion of the program by the first self-checking code sequence, that the first portion of the program has been modified; performing, using a second self-checking code sequence included in the program during execution of the program, a check of the integrity of a second portion of the program, the second portion of the program comprising a tamper response mechanism; determining, based on the check of the integrity of the second portion of the program by the second self-checking code sequence, that the second portion of the program has not been modified; and triggering the tamper response mechanism based on determining that the first portion of the program has been modified and that the second portion of the program has not been modified. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
Specification