IP Library Granted Patent US 9,304,944
Granted Patent B2
US 9,304,944 · App. 13/434,556 · Granted Apr 5, 2016

Secure memory access controller

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 9,304,944
App. No.
13/434,556
Granted
Apr 5, 2016
Kind
B2
Abstract

A memory access circuit and a corresponding method are provided. The memory access circuit includes a crypto block in communication with a memory that encrypts data of a data block on a block basis. The memory access circuit also includes a fault injection block configured to inject faults to the data in the data block. The memory access circuit further includes a data scrambler and an address scrambler. The data scrambler is configured to scramble data in the memory by shuffling data bits within the data block in a plurality of rounds and mash the shuffled data bits with random data. The address scrambler is configured to distribute the scrambled data across the memory. A memory system including the memory access circuit is also disclosed to implement the corresponding method.

Claims (50)

1. A circuit, comprising:

cryptographic circuitry in communication with a memory, the memory configured to store segments that include data blocks, the cryptographic circuitry configured to encrypt data of the data blocks on a block basis;

fault injection circuitry configured to inject faults into the data blocks;

a data scrambler configured to generate scrambled data in the memory by shuffling data bits within the data blocks with multiple rounds of shuffling; and

an address scrambler configured to distribute the scrambled data across the segments by inter-segment permutation and further configured to select among multiple generator polynomials as a denominator of a modulo operation for distributing the scrambled data from the data blocks and segments.

2. The circuit of claim 1 , wherein the address scrambler is configured to distribute the scrambled data across the segments by permutation operations that randomly map a logical memory address to a physical memory location using at least one of the multiple generator polynomials as the denominator, and using an alteration function configured to alter the logical memory address in a numerator of the modulo operation.

3. The circuit of claim 1 , further comprising:

a memory controller, a processor, and a system bus; wherein:

the memory controller is configured to control accesses to the memory and communicate data over the system bus with the processor.

4. The circuit of claim 3 , further comprising an address translation unit in communication with the memory controller, the address translation unit configured to map plain text windows to cipher text windows in the memory.

5. The circuit of claim 3 , wherein the data scrambler is configured such that a symmetric inverse function is operable to restore the shuffled data bits back to an original form.

6. The circuit of claim 5 , wherein:

the memory comprises a dynamic random-access memory (DRAM); and

the DRAM comprises a secured data area configured to store secured data that is ciphered by the cryptographic circuitry, authenticated by the memory controller, and scrambled by the data scrambler.

7. The circuit of claim 6 , wherein the fault injection block is configured to flip bits of the secured data as determined by a plurality of hash functions.

8. The circuit of claim 1 , wherein the address scrambler is configured to:

calculate a mash value and a control signal; and

control the data scrambler based on the mash value and the control signal.

9. A method comprising:

injecting, with a processor, faults into data blocks in a memory, the memory configured to store segments that include the data blocks;

scrambling data in the data blocks to create scrambled data by shuffling data bits within the data blocks with multiple rounds of shuffling;

selecting among multiple generator polynomials as a denominator of a modulo operation for distributing the scrambled data from the data blocks and segments; and

distributing, by an address scrambler of a memory access circuit, the scrambled data across the segments by inter-segment permutation, according to the generator polynomials.

10. The method of claim 9 further comprising distributing the scrambled data across the segments by permutation operations that randomly map a logical memory address to a physical memory location using at least one of the multiple generator polynomials as the denominator, and using an alteration function configured to alter the logical memory address in a numerator of the modulo operation.

11. The method of claim 10 , further comprising:

encrypting the data in the memory on a block basis;

controlling access to data in the memory with a memory controller; and

mapping plain text windows to cipher text windows by an address translation unit.

12. The method of claim 11 wherein the address translation unit communicates with the memory controller.

13. The method of claim 11 , further comprising restoring the shuffled data bits back to an original form by a data scrambler using a symmetric inverse function.

14. The method of claim 13 , further comprising ciphering, authenticating and scrambling the data in a secured data area having secured data.

15. The method of claim 14 , further comprising flipping bits of the secured data, the bits determined by a hash function.

16. The method of claim 9 further comprising:

calculating, by the address scrambler, a mash value and a control signal; and

shuffling data bits based on the mash value and the control signal.

17. A system, comprising:

a memory configured store data accessible by a processor through a memory controller, the memory configured to store segments that include data blocks; and

an inline memory access circuit between the memory controller and a system bus coupled with the processor,

wherein the inline memory access circuit comprises:

cryptographic circuitry in communication with the memory that encrypts data on a block basis so that a key length for each of the data blocks is independent and random;

fault injection circuitry configured to inject faults into the memory;

a data scrambler configured to generate scrambled data by shuffling data bits within the data blocks in multiple rounds of shuffling, and mix the shuffled data with random data; and

an address scrambler configured to distribute the scrambled data across the segments of the memory by inter-segment permutation that maps a logical memory address to a physical memory location in a random manner,

wherein the inline memory access circuit is configured to select among multiple generator polynomials as a denominator of a modulo operation for distributing the scrambled data from the data blocks and segments.

18. The system of claim 17 , further comprising an address translation unit in communication with the memory controller that maps plain text windows to cipher text windows in the memory.

19. The system of claim 17 , wherein the data scrambler is configured such that a symmetric inverse function is operable to restore the shuffled data back to an original form; and

wherein the address scrambler is configured such that a block address and a segment address are transformed to a new block address and a new segment address using different generator polynomials of different degrees.

20. The system of claim 17 , wherein:

the memory comprises a dynamic random-access memory (DRAM); and

the DRAM comprises a secured data area configured to store secured data that is ciphered by the cryptographic circuitry, authenticated by the memory controller, and scrambled by the data scrambler.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE RECEIVING PARTY STREET ADDRESS PREVIOUSLY RECORDED ON REEL 72822 FRAME 542. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Dec 1, 2025
From: NXP B.V.
To: TAIWAN SEMICONDUCTOR MANUFACTURING COMPANY, LIMITED
Reel/Frame 073823/0909 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 7, 2025
From: NXP B.V.
To: TAIWAN SEMICONDUCTOR MANUFACTURING COMPANY LIMITED
Reel/Frame 072822/0542 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2016
From: BROADCOM CORPORATION
To: NXP B.V.
Reel/Frame 039901/0237 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Aug 10, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 039646/0092 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2012
From: PONG, FONG; SPADA, ERIC; SCHRAMM, KAREN
To: BROADCOM CORPORATION
Reel/Frame 027960/0450 →