# US 12,216,919 B2 · External memory data integrity validation

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

- Number: US 12,216,919 B2
- Document ID: US12216919B2
- Status: Granted
- Kind: B2
- Application number: 18/514,547
- Filed: 2023-11-20
- Published: 2024-03-14
- Granted: 2025-02-04
- Earliest claimed: 2021-11-16
- Assignees: Texas Instruments Incorporated
- Applicants: Texas Instruments Incorporated
- Inventors: Barak Cherches; Uri Weinrib
- Web page: https://patentgrep.com/patent/US12216919B2

## CPC

- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- 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 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 21/64: Protecting data integrity, e.g. using checksums, certificates or signatures
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In some examples, a method includes determining, during a boot sequence of a controller, a hash value for data of a block of a flash storage device, the block including executable code, determining a bit pattern based on a randomly generated number, extracting a subset of data bits of the hash value according to the bit pattern to obtain a snippet, and storing the snippet to a secure storage device.

## Claims

### Claim 1

A device comprising:
a first storage; and
a processing circuit configured to:
determine, during a boot or startup sequence of a controller, a first authentication value for a first block of a second storage, the first block of the second storage including executable code;
store a first snippet in the first storage, the first snippet being based on the first authentication value;
determine, at run-time of the controller, data integrity of the first block, wherein determining the data integrity of the first block comprises:
determining a second authentication value of the first block, and
comparing a second snippet with the first snippet to generate a comparison result, the second snippet being based on the second authentication value,
responsive to the comparison result indicating the first and second snippets do not match, halt or prevent the executable code from running in the controller, or prevent the controller from receiving the executable code, or provide a fault signal; and
responsive to the comparison result indicating the first and second snippets match, allow the controller to execute the executable code.

### Claim 2 (depends on 1)

The device of claim 1, wherein the processing circuit is configured to generate the first snippet by selecting a portion of the first authentication value based on a first bit pattern.

### Claim 3 (depends on 2)

The device of claim 2, wherein the first bit pattern is based on a pseudorandom number.

### Claim 4 (depends on 2)

The device of claim 2, wherein selecting the portion of the first authentication value comprises preserving bits of the first authentication value corresponding to asserted bits of the first bit pattern.

### Claim 5 (depends on 2)

The device of claim 2, wherein the processing circuit is configured to generate the second snippet by selection a portion of the second authentication value based on the first bit pattern.

### Claim 6 (depends on 2)

The device of claim 2, wherein the processing circuit is configured to, responsive to a reset of the processing circuit, refresh the first snippet based on the first authentication value and a second bit pattern.

### Claim 7 (depends on 6)

The device of claim 6, wherein the second bit pattern has a length that is different from a length of the first bit pattern.

### Claim 8 (depends on 2)

The device of claim 2, wherein a length of the first bit pattern is programable.

### Claim 9 (depends on 2)

The device of claim 2, wherein the processing circuit is configured to generate a third snippet by selecting a portion of a third authentication value for a second block of the second storage based on a second bit pattern, the second bit pattern having a length that is different from a length of the first bit pattern.

### Claim 10 (depends on 9)

The device of claim 9, wherein the processing circuit is configured to store the third snippet in the first storage.

### Claim 11 (depends on 1)

The device of claim 1, wherein the processing circuit is configured to generate the first authentication value using a hash function.

### Claim 12 (depends on 1)

The device of claim 1, wherein the processing circuit is configured to, responsive to a reset of the processing circuit, refresh the first snippet to a different value.

### Claim 13 (depends on 12)

The device of claim 12, wherein the processing circuit is configured to refresh the first snippet without the controller performing a boot sequence.

### Claim 14 (depends on 1)

The device of claim 1, wherein the processing circuit is configured to, responsive to the comparison result indicating the first and second snippets do not match, halt the executable code from running in the controller.

### Claim 15 (depends on 1)

The device of claim 1, wherein the processing circuit is configured to, responsive to the comparison result indicating the first and second snippets do not match, prevent the executable code from running in the controller.

### Claim 16 (depends on 1)

The device of claim 1, wherein the processing circuit is configured to, responsive to the comparison result indicating the first and second snippets do not match, prevent the controller from receiving the executable code.

### Claim 17 (depends on 1)

The device of claim 1, wherein the processing circuit is configured to, responsive to the comparison result indicating the first and second snippets do not match, provide the fault signal.

### Claim 18 (depends on 1)

The device of claim 1, wherein the first snippet comprises fewer than all bits of the first block.

### Claim 19 (depends on 1)

The device of claim 1, wherein the first snippet is encrypted.

### Claim 20 (depends on 1)

The device of claim 1, wherein the first storage and the processing circuit are integrated in an integrated circuit.

### Claim 21 (depends on 1)

The device of claim 1, wherein the first authentication value is a first hash value, and wherein the second authentication value is a second hash value.

### Claim 22 (depends on 1)

The device of claim 1, wherein the first storage is a random-access memory (RAM).

### Claim 23 (depends on 1)

The device of claim 1, wherein the device comprises the controller, and wherein the second storage is external to the controller.

### Claim 24 (depends on 23)

The device of claim 23, wherein the second storage is in a package that is separate from a package of the controller.

### Claim 25 (depends on 1)

The device of claim 1, wherein the second storage is a flash memory.

### Claim 26 (depends on 1)

The device of claim 1, wherein the first authentication value is based on a pseudorandom number.

### Claim 27 (depends on 26)

The device of claim 26, wherein the processing circuit is configured to receive a first pseudorandom number from the controller, wherein the first authentication value is based on the first pseudorandom number.

### Claim 28 (depends on 26)

The device of claim 26, wherein the processing circuit is configured to generate the pseudorandom number.

### Claim 29 (depends on 1)

The device of claim 1, wherein the processing circuit is configured to determine the first authentication value based on a unique identifier of the second storage.

### Claim 30 (depends on 1)

The device of claim 1, wherein the processing circuit is configured to generate the second snippet in response to a data request from the controller.
