IP Library Granted Patent US 8,352,747
Granted Patent B2
US 8,352,747 · App. 13/208,768 · Granted Jan 8, 2013

Software self-checking systems and methods

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,352,747
App. No.
13/208,768
Granted
Jan 8, 2013
Kind
B2
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.

Claims (43)

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.

2. The method of claim 1 , further comprising:

inserting watermark values into the program.

3. The method of claim 1 , wherein the self-checking code sequences are further operable to trigger a tamper response mechanism when an improper modification of the program is detected.

4. The method of claim 1 , wherein the self-checking code sequences are assigned to overlapping portions of the program in a relatively random fashion.

5. The method of claim 4 , wherein the self-checking code sequences are assigned to overlapping portions of the program such that a graph representing the assignment of self-checking code sequences to overlapping portions of the program is strongly connected.

6. The method of claim 1 , wherein the function that each self-checking code sequence is operable to calculate comprises a hash function.

7. The method of claim 6 , wherein the hash function is invertible.

8. The method of claim 6 , wherein the hash function is relatively lightweight.

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.

10. The self-checking software program of claim 9 , created by a method further comprising: inserting watermark values into the program.

11. The self-checking software program of claim 9 , wherein the self-checking code sequences are further operable to trigger a tamper response mechanism when an improper modification of the program is detected.

12. The self-checking software program of claim 9 , wherein the self-checking code sequences are assigned to overlapping portions of the program in a relatively random fashion.

13. The self-checking software program of claim 12 , wherein the self-checking code sequences are assigned to overlapping portions of the program such that a graph representing the assignment of self-checking code sequences to overlapping portions of the program is strongly connected.

14. The self-checking software program of claim 9 , wherein the function that each self-checking code sequence is operable to calculate comprises a hash function.

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.

16. The system of claim 15 , wherein the instructions are further configured to cause the processor to insert a plurality of watermark values into the program.

17. The system of claim 15 , wherein the self-checking code sequences are further operable to trigger a tamper response mechanism when an improper modification of the program is detected.

18. The system of claim 15 , wherein the self-checking code sequences are assigned to overlapping portions of the program in a relatively random fashion.

19. The system of claim 18 , wherein the self-checking code sequences are assigned to overlapping portions of the program such that a graph representing the assignment of self-checking code sequences to overlapping portions of the program is strongly connected.

20. The system of claim 15 , wherein the function that each self-checking code sequence is operable to calculate comprises a hash function.

Assignments (4)
PATENT ASSIGNMENT Recorded May 27, 2025
From: INTERTRUST TECHNOLOGIES CORPORATION
To: INNOVATION TECHNOLOGIES PARTNERS LP
Reel/Frame 071408/0320 →
RELEASE OF SECURITY INTEREST Recorded Feb 14, 2023
From: ORIGIN FUTURE ENERGY PTY LTD.
To: INTERTRUST TECHNOLOGIES CORPORATION
Reel/Frame 062747/0742 →
SECURITY INTEREST Recorded Mar 18, 2020
From: INTERTRUST TECHNOLOGIES CORPORATION
To: ORIGIN FUTURE ENERGY PTY LTD
Reel/Frame 052189/0343 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2019
From: HORNE, WILLIAM; MATHESON, LESLEY; SHEEHAN, CASEY; TARJAN, ROBERT
To: INTERTRUST TECHNOLOGIES CORPORATION
Reel/Frame 049580/0948 →