IP Library Granted Patent US 8,001,388
Granted Patent B2
US 8,001,388 · App. 12/504,567 · Granted Aug 16, 2011

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,001,388
App. No.
12/504,567
Granted
Aug 16, 2011
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 it they are compatible with copy-specific static watermarking and other tamper-resistance techniques.

Claims (26)

1. A method comprising:

(a) inserting a plurality of correctors into object code of a program embodied on a non-transitory computer-readable medium;

(b) assigning self-checking code sequences to overlapping portions of the program, each of said portions containing at least one corrector, wherein each self-checking code sequence is operable to calculate a function of at least one of said portions; and

(c) assigning values to the correctors, the value of each corrector being chosen such that the function calculated by self-checking code sequence assigned to a given portion of the program containing a given corrector results in a predefined value when the given portion has not been improperly modified.

2. The method as in claim 1 , in which the self-checking code sequences are distributed in a relatively uniform fashion throughout the program's object code.

3. The method as in claim 2 , in which the plurality of correctors are inserted between basic blocks of the program's object code.

4. The method as in claim 1 , further comprising:

inserting watermark values into the program.

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

6. The method as in claim 5 , further comprising:

determining whether a graph representing the assignment of self-checking code sequences to overlapping portions of the program is strongly connected; and

repeating step (b) if the graph is not strongly connected.

7. The method as in claim 1 , in which the function that each self-checking code sequence is operable to calculate is a hash function.

8. The method as in claim 7 , in which the hash function is invertible.

9. The method as in claim 8 , in which the hash function is relatively lightweight.

10. The method as in claim 7 , in which a first class of said self-checking code sequences calculates a first hash function and a second class of said self-checking code sequences calculates a second hash function that differs at least in part from the first hash function.

11. The method as in claim 10 , in which a plurality of the first class of self-checking code sequences are customized, such that each of said plurality of customized self-checking code sequences differs, at least in part, from other self-checking code sequences in the first class.

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

13. A non-transitory computer-readable medium storing instructions that, when executed by a processor, are configured to cause the processor to perform a method including:

calculating, utilizing a self-checking code sequence assigned to a first portion of a plurality of overlapping portions of a program, a function of the first portion, said portion containing a corrector having an assigned value chosen such that the function calculated by the self-checking code sequence results in a predefined value when the portion has not been improperly modified; and

triggering a tamper response mechanism if the functioned calculated by the self-checking code sequence does not result in the predefined value.

14. The non-transitory computer-readable medium as in claim 13 , wherein the non-transitory computer-readable medium further stores instructions that, when executed by the processor, are configured to cause the processor to:

insert watermark values into the program.

15. The non-transitory computer-readable medium as in claim 13 , wherein the function calculated utilizing the self-checking code sequence is a hash function.

16. The non-transitory computer-readable medium as in claim 15 , which the hash function is invertible.

17. The non-transitory computer-readable medium as in claim 16 , in which the hash function is relatively lightweight.

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 →