# US 2017/0255779 A1 · Software integrity checking systems and methods

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2017/0255779 A1
- Document ID: US20170255779A1
- Status: Published application
- Kind: A1
- Application number: 15/452,319
- Filed: 2017-03-07
- Published: 2017-09-07
- Earliest claimed: 2016-03-07
- Assignees: Intertrust Technologies Corporation
- Applicants: Intertrust Technologies Corporation
- Inventors: Marko CAKLOVIC
- Web page: https://patentgrep.com/patent/US20170255779A1

## CPC

- G06F 21/54: by adding security routines or objects to programs
- G06F 21/51: at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
- G06F 21/57: Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F 21/64: Protecting data integrity, e.g. using checksums, certificates or signatures
- G06F 2221/033: Test or assess software
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

This disclosure relates to systems and methods generating and distributing protected software applications. In certain embodiments, integrity checking mechanisms may be implemented using integrity checking code in software code prior to compilation into machine code. Following compilation and execution of the application, the introduced code may check the integrity of the application by determining whether the application behaves and/or otherwise functions as expected. By introducing integrity checking in this manner, integrity checking techniques may be injected into the application prior to compilation into machine code and/or independent of the particular manner in which the application is compiled.

## Claims

### Claim 1

A method for verifying the integrity of an application performed by a user device comprising a processor and a non-transitory computer-readable medium storing instructions that, when executed by the processor, cause the processor to perform the method, the method comprising:
receiving an application from an application store system, the application comprising one or more functional integrity checks;
receiving a request to perform an initial execution of the application;
in response to receiving the request to perform the initial execution of the application:
executing the one or more functional integrity checks of the application to verify that one or more portions of the application associated with the one or more functional integrity checks function according to a defined behavior;
generating, based on verifying that the one or more portions of the application function according the defined behavior, one or more first integrity check values;
storing the one or more first integrity check values on the user device; and
allowing, based on the verifying that the one or more portions of the application function according the defined behavior, the initial execution of the application to proceed.

### Claim 2 (depends on 1)

The method of claim 1, wherein the one or more functional integrity checks comprise code appended to the application.

### Claim 3 (depends on 1)

The method of claim 1, wherein the one or more functional integrity checks comprise code injected into a plurality of locations in the application.

### Claim 4 (depends on 1)

The method of claim 1, wherein the one or more functional integrity checks comprise obfuscated code.

### Claim 5 (depends on 1)

The method of claim 1, wherein the request to perform an initial execution of the application comprises a request to install the application on the user device.

### Claim 6 (depends on 1)

The method of claim 1, wherein executing the one or more functional integrity checks comprises executing the one or more functional integrity checks in response to a first initialization of the application on the user device.

### Claim 7 (depends on 1)

The method of claim 1, wherein storing the one or more first integrity check values on the user device comprises storing the one or more first integrity check values in a secure storage space of the user device.

### Claim 8 (depends on 1)

The method of claim 1, wherein storing the one or more first integrity check values on the user device comprises inserting the one or more first integrity check values in one or more locations of the application.

### Claim 9 (depends on 1)

The method of claim 1, wherein the application further comprises one or more comparison integrity checks.

### Claim 10 (depends on 9)

The method of claim 9, wherein the one or more first integrity check values comprise at least one result of a first operation performed on at least one portion of the one or more portions of the application.

### Claim 11 (depends on 10)

The method of claim 10, wherein the first operation comprises a hashing operation and the one or more first integrity check values comprise one or more hash values.

### Claim 12 (depends on 10)

The method of claim 10, wherein the method further comprises:
receiving a request to perform a subsequent execution of the application; and
in response to receiving the request to perform the subsequent execution of the application, executing the one or more comparison integrity checks.

### Claim 13 (depends on 10)

The method of claim 10, wherein executing the one or more comparison integrity checks comprises:
generating one or more second integrity check values;
determining that the one or more second integrity check values match corresponding values of the one or more first integrity check values; and
allowing, based on determining that the one or more second integrity check values match corresponding values of the one or more first integrity check values, the subsequent execution of the application to proceed.

### Claim 14 (depends on 13)

The method of claim 13, wherein generating the one or more second integrity check values comprises performing a second operation on the at least one portion of the one or more portions of the application.

### Claim 15 (depends on 14)

The method of claim 14, wherein the one or more first integrity check values and the one or more second integrity check values comprise hash values, and wherein determining that the one or more second integrity check values match corresponding values of the one or more first integrity check values comprises comparing the hash values.

### Claim 16 (depends on 1)

The method of claim 1, wherein the application is compiled by the application store system.
