# US 2018/0024781 A1 · Security extensions for non-volatile memory

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

- Number: US 2018/0024781 A1
- Document ID: US20180024781A1
- Status: Published application
- Kind: A1
- Application number: 15/385,810
- Filed: 2016-12-20
- Published: 2018-01-25
- Earliest claimed: 2016-07-20
- Assignees: Atmel Corporation
- Applicants: Atmel Corporation
- Inventors: Frode Milch Pedersen; Ian Fullerton; Joseph Martinez; Martin Olsson
- Web page: https://patentgrep.com/patent/US20180024781A1

## CPC

- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 3/062: {Securing storage systems}
- 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 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 21/6218: {to a system of files or objects, e.g. local or distributed file system or database}
- G06F 2212/1052: Security improvement
- G06F 2212/72: Details relating to flash memory management
- G06F 2212/7201: Logical to physical mapping or translation of blocks or pages
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The disclosed embodiments provide security extensions for memory (e.g., non-volatile memory) by means of address and data scrambling and differential data storage to minimize exposure to side channel attacks and obfuscate the stored data. The scrambling function maximizes reverse engineering costs when recovering sequences of secret keys.

## Claims

### Claim 1

A memory system comprising:
memory;
a memory controller coupled to the memory and operable to:
receive a memory address and write data;
determine that the memory address accesses a secure data region in the non-volatile memory;
responsive to the determining, differentially expand the write data; and
write the expanded write data to the secure data region at the memory address.

### Claim 2 (depends on 1)

The memory system of claim 1, further comprising:
responsive to the determining, differentially expanding and scrambling the write data.

### Claim 3 (depends on 1)

The memory system of claim 1, further comprising:
a register operable to store data indicating a size of the secure data region in the memory.

### Claim 4 (depends on 1)

The memory system of claim 1, wherein the memory controller is further operable to:
receive a memory address;
determine that the memory address accesses the secure data region in the memory;
responsive to the determining:
obtain differentially expanded read data from the memory at the memory address in the secure data region;
compress the differentially expanded read data to its pre-expanded form; and
provide access to the read data.

### Claim 5 (depends on 4)

The memory system of claim 4, further comprising:
checking the integrity of the read data.

### Claim 6 (depends on 4)

The memory system of claim 4, further comprising:
responsive to the determining, descrambling the read data.

### Claim 7 (depends on 1)

The memory system of claim 1, wherein the memory is non-volatile memory.

### Claim 8

A memory controller comprising:
non-volatile memory;
a processor coupled to the non-volatile memory and operable to:
receive a memory address and write data;
determine that the memory address accesses a secure data region in the non-volatile memory;
responsive to the determining, differentially expand the write data; and
write the expanded write data to the secure data region at the memory address.

### Claim 9 (depends on 8)

The memory controller of claim 8, further comprising:
responsive to the determining, differentially expanding and scrambling the write data.

### Claim 10 (depends on 8)

The memory controller of claim 8, further comprising:
a register operable to store data indicating a size of the secure data region in the non-volatile memory.

### Claim 11 (depends on 8)

The memory controller of claim 8, wherein the processor is further operable to:
receive the memory address;
determine that the memory address accesses the secure data region in the non-volatile memory;
responsive to the determining:
obtain differentially expanded read data from the non-volatile memory at the memory address in the secure data region;
compress the differentially expanded read data to its pre-expanded form; and
provide access to the read data.

### Claim 12 (depends on 8)

The memory controller of claim 8, further comprising:
checking the integrity of the read data.

### Claim 13 (depends on 8)

The memory controller of claim 8, further comprising:
responsive to the determining, descrambling the read data.

### Claim 14

A method comprising:
receiving, by a memory controller, a memory address and write data;
determining, by the memory controller, that the memory address accesses a secure data region in memory;
responsive to the determining:
differentially expanding the write data; and
writing the expanded write data to the secure data region at the memory address.

### Claim 15 (depends on 14)

The method of claim 14, further comprising:
responsive to the determining, differentially expanding and scrambling the write data.

### Claim 16 (depends on 14)

The method of claim 14, further comprising:
storing, by a register in the memory controller, data indicating a size of the secure data region in the memory.

### Claim 17 (depends on 14)

The method of claim 14, further comprising:
receiving the memory address;
determining that the memory address accesses the secure data region in the memory;
responsive to the determining:
obtaining differentially expanded read data from the memory at the memory address in the secure data region;
compressing the differentially expanded read data to its pre-expanded form; and
providing access to the read data.

### Claim 18 (depends on 14)

The method of claim 14, further comprising:
checking the integrity of the read data.

### Claim 19

A non-transitory, computer-readable storage medium having instructions stored thereon, which, when executed one or more processors, causes the one or more processors to perform operations comprising:
receiving, by a memory controller, a memory address and write data;
determining, by the memory controller, that the memory address accesses a secure data region in memory embedded in or coupled to the memory controller;
responsive to the determining:
differentially expanding the write data; and
writing the expanded write data to the secure data region at the memory address.

### Claim 20 (depends on 19)

The non-transitory, computer-readable storage medium of claim 19, further comprising:
determining that the memory address accesses the secure data region in the memory;
responsive to the determining:
obtaining differentially expanded read data from the memory at the memory address in the secure data region;
compressing the differentially expanded read data to its pre-expanded form; and
providing access to the read data.
