IP Library Patent Application 11689188
Patent Application
App. No. 11/689,188

Software Tamper Resistance Via Integrity-Checking Expressions

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 None
App. No.
11/689,188
Abstract

Implementation of software tamper resistance via integrity checks is described. In one implementation, a tamper resistance tool receives an input program code and generates a tamper-resistant program code using integrity checks. The integrity checks are generated by processing the input program code, and the integrity checks are inserted in various locations in the input program code. Values of the integrity checks are computed during program execution to determine whether a section of the program has been tampered with. Values of the integrity checks may be stored and accessed at any point during execution of the program.

Claims (58)

1 . A method comprising:

processing a program to generate an integrity check;

inserting the integrity check into a location in the program;

computing a value for the integrity check at runtime of the program;

accessing the value of the integrity check; and

registering tampering with the program when the value of the integrity check is false.

2 . The method of claim 1 , wherein processing includes generating the integrity check using at least one of:

a program invariant;

a program verification condition;

a program proof.

3 . The method of claim 1 , wherein processing includes learning parts of the program by Fourier machine learning.

4 . The method of claim 1 , wherein processing includes representing the program as one or more Boolean satisfiability expressions.

5 . The method of claim 1 , wherein, processing includes:

generating polynomials for the program by single static assignment remapping; and

computing Gröbner bases for the polynomials.

6 . The method of claim 5 , wherein processing further includes at least one of combining two or more of the Gröbner bases, reducing mod random primes of the Gröbner bases, and obfuscating the Gröbner bases.

7 . The method of claim 1 , wherein inserting further comprises placing the integrity checks at security-critical locations in the program.

8 . The method of claim 1 , wherein accessing occurs at a time of execution of the program occurring after a time of computing of the value for the integrity check.

9 . The method of claim 1 wherein registering includes one or more of:

terminating execution of the program;

degrading execution of the program;

unreliably performing execution of the program;

displaying an error message;

removing the tampering from the program.

10 . A computer-readable medium having a set of computer-readable instructions that, when executed, perform acts comprising:

processing a program to generate at least one integrity check;

accessing a value of the at least one integrity check, wherein the value is computed at runtime of the program; and

registering tampering with the program depending upon the value.

11 . The computer-readable medium of claim 10 having a set of computer-readable instructions that, when executed, perform acts further comprising allowing a user to input a maximum speed penalty which can be imposed on the program through generation of the at least one integrity check.

12 . The computer-readable medium of claim 10 having a set of computer-readable instructions that, when executed, perform acts further comprising iteratively computing the value of the at least one integrity check.

13 . The computer-readable medium of claim 10 having a set of computer-readable instructions that, when executed, perform acts further comprising processing the program to generate the at least one integrity check by at least one of:

generating a program invariant;

generating a program verification condition;

generating a program proof;

computing Gröbner bases for the program;

learning parts of the program by Fourier machine learning;

representing the program as Boolean satisfiability expressions.

14 . The computer-readable medium of claim 10 having a set of computer-readable instructions that, when executed, perform acts further comprising registering tampering with the program when the value indicates tampering with the program by one or more of:

terminating execution of the program;

degrading execution of the program;

unreliably executing the program;

displaying an error message.

15 . The computer-readable medium of claim 10 having a set of computer-readable instructions that, when executed, perform acts further comprising removing any effects of tampering from the program when the value indicates tampering with the program.

16 . A computing device comprising:

a memory;

one or more processors operatively coupled to the memory;

an expression generator configured to generate one or more integrity checks for a program; and

a code modifier configured to insert the one or more integrity checks at one or more locations in the program, wherein values of the one or more integrity checks can be accessed at runtime and further wherein tampering with the program can be detected based on the values.

17 . The computing device of claim 16 further comprising an obfuscator configured to obfuscate the program by inserting chaff code into the program.

18 . The computing device of claim 16 wherein, the values of the one or more integrity checks are computed at runtime.

19 . The computing device of claim 16 wherein, the expression generator is configured to generate the one or more integrity checks using at least one of:

a program invariant;

a program verification condition;

a program proof;

Gröbner bases;

Fourier machine learning;

Boolean satisfiability expressions.

20 . The computing device of claim 16 further comprising a tampering identifier configured to register tampering with the program when at least one of the one or more integrity checks has a false value.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034766/0509 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2010
From: PATANKAR, VIJAY
To: MICROSOFT CORPORATION
Reel/Frame 024117/0710 →
CORRECTED COVER SHEET TO CORRECT ASSIGNOR NAME, PREVIOUSLY RECORDED AT REEL/FRAME 019068/0441 (ASSIGNMENT OF ASSIGNOR'S INTEREST) Recorded May 9, 2007
From: JAKUBOWSKI, MARIUSZ H.; NALDURG, PRASAD G.; VENKATESAN, RAMARATHNAM
To: MICROSOFT CORPORATION
Reel/Frame 019273/0809 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2007
From: VENKATESAR, RAMARATHNAM; JAKUBOWSKI, MARIUSZ H.; NALDURG, PRASAD G.
To: MICROSOFT CORPORATION
Reel/Frame 019068/0441 →