IP Library Granted Patent US 8,713,326
Granted Patent B2
US 8,713,326 · App. 13/722,193 · Granted Apr 29, 2014

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,713,326
App. No.
13/722,193
Granted
Apr 29, 2014
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 (19)

1. A method of creating a tamper-resistant software program on a non-transitory computer-readable medium, the method comprising:

including a plurality of self-checking code sequences in the source code of the program, each self-checking code sequence being configured to calculate a function of a portion of the program;

including in the program one or more code sequences configured to trigger a tamper response mechanism when an improper modification of the program is detected by at least one of the plurality of self-checking code sequences; and

writing the program onto a non-transitory computer readable medium.

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

3. The method of claim 1 , wherein at least some of the plurality of self-checking code sequences are assigned to overlapping portions of the program such that a graph representing the assignment of said self-checking code sequences to overlapping portions of the program is strongly connected.

4. The method claim 1 , wherein at least some of the plurality of self-checking code sequences are assigned to overlapping portions of the program such that the integrity of at least one self-checking code sequence is checked, at least in part, by at least one other self-checking code sequence.

5. The method of claim 1 , wherein the function that at least one self-checking code sequence is operable to calculate comprises a hash function.

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

7. The method of claim 5 , wherein the hash function is relatively lightweight.

8. A self-checking program stored on a non-transitory computer-readable medium, the self-checking program comprising:

a plurality of self-checking code sequences, each self-checking code sequence being configured to calculate a function of a portion of the program; and

one or more code sequences configured to trigger a tamper response mechanism when an improper modification of the program is detected by at least one of the plurality of self-checking code sequences.

9. The self-checking program of claim 8 , wherein at least some of the plurality of self-checking code sequences are assigned to overlapping portions of the program in a relatively random fashion.

10. The self-checking program of claim 8 , wherein at least some of the plurality of self-checking code sequences are assigned to overlapping portions of the program such that a graph representing the assignment of said self-checking code sequences to overlapping portions of the program is strongly connected.

11. The self-checking program of claim 8 , wherein the function that at least one self-checking code sequence is operable to calculate comprises a hash function.

12. The self-checking program of claim 11 , wherein the hash function is invertible.

13. The self-checking program of claim 11 , wherein the hash function is relatively lightweight.

14. The self-checking program of claim 8 , wherein at least one self-checking code sequence is operable to check, at least in part, the integrity of at least one other self-checking code sequence.

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 →