IP Library Granted Patent US 11,271,721
Granted Patent B2
US 11,271,721 · App. 16/363,103 · Granted Mar 8, 2022

Distributed secure array using intra-dice communications to perform data attestation

Inventors: Alberto Troia (Munich, DE); Antonino Mondello (Messina, IT)
Assignee: Micron Technology, Inc.
H04L9/0643H04L9/3236
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 11,271,721
App. No.
16/363,103
Granted
Mar 8, 2022
Kind
B2
Abstract

Techniques for calculating a hash value of a single secure array of memory blocks in a sequential set of dice. The array can be defined by a set of address-size pairs. Each pair provides a pointer by including an address of a memory block and a size of the block. The hash value can be calculated by: for each die that is not the last die, partially applying a hash function, without final padding, to the memory blocks of the secure array in the die to generate a partial digest. And, for the last die, fully applying the hash function, with the final padding, to the memory blocks of the secure array in the last die to generate the hash value of the secure array, which can include adding an accumulation of partial digests to data from the last die as a basis for the generation of the hash value.

Claims (65)

1. A method, comprising:

receiving a request for calculating a hash value of a secure array of memory blocks in a sequential set of dice,

the set of dice comprising at least a first die and a last die,

the secure array defined by a set of address-size pairs for the memory blocks, and

each pair of the address-size pairs comprising an address of a memory block in the secure array and a size of the block such that the pair provides a pointer to the block; and

in response to receiving the request, calculating the hash value of the secure array, by:

for each particular die of the set of dice that is not the last die:

partially applying a hash function, without final padding of the hash function, to the memory blocks of the secure array in the particular die to generate a partial digest for the particular die; and

communicating, to a subsequent die of the set of dice, the partial digest of the particular die; and

for the last die in the set of dice, fully applying the hash function, with the final padding, to the memory blocks of the secure array in the last die to generate a complete digest for the last die that includes the hash value of the secure array.

2. The method of claim 1 , further comprising:

for each particular die of the set of dice that is not the first die or the last die:

receiving by the particular die, from a preceding die of the set, the partial digest of the first die or an accumulation of partial digests of all or a subset of preceding dice in the set; and

in the partially applying of the hash function, adding the partial digest of the first die or the accumulation of partial digests to a pre-processed message comprising data from the memory blocks of the particular die as a basis for the generation of the partial digest for the particular die; and

for the last die in the set of dice:

receiving by the last die, the accumulation of partial digests of all or the subset of preceding dice in the set; and

in the fully applying of the hash function, adding the partial digest of the first die or the accumulation of partial digests to a pre-processed message comprising data from the memory blocks of the last die as a basis for the generation of the complete digest of the last die and the hash value of the secure array.

3. The method of claim 2 , wherein the hash function comprises SHA256, and wherein, for each particular die of the set of dice that is not the last die, the partially applying of the hash function comprises applying the function without final padding of SHA256.

4. The method of claim 3 , wherein, for each particular die of the set of dice that is not the last die, the partially applying of the hash function comprises adding to the pre-processed message of the particular die, with additional padding, the partial digest of the first die or the accumulation of partial digests.

5. The method of claim 2 , wherein the hash function comprises SHA256, and wherein, for the last die, the fully applying of the hash function comprises:

adding to the pre-processed message of the last die, with additional padding, the partial digest of the first die or the accumulation of partial digests; and

applying the function with final padding of SHA256.

6. The method of claim 1 , further comprising validating the hash value of the secure array by comparing the hash value to a validation code.

7. The method of claim 6 , further comprising, when the validation of the hash value of the secure array fails by not matching the validation code, restoring data defined by the secure array from a secure memory region.

8. The method of claim 7 , wherein the secure memory region is in the set of dice.

9. The method of claim 6 , further comprising, when the validation of the hash value of the secure array is successful by matching the validation code, then logging the successful validation of the secure array.

10. The method of claim 1 , wherein the set of dice are within a packaged memory device.

11. The method of claim 10 , wherein the set of dice are stacked.

12. The method of claim 1 , wherein the set of dice are distributed across multiple memory devices in a computer system.

13. The method of claim 12 , wherein the computer system comprises multiple computers that are distributed over a computer network comprising a local area network, a wide area network, or a combination thereof.

14. A method, comprising:

receiving a request for validation of a secure array of memory blocks in a sequential set of dice,

the sequential set of dice comprising a first die, at least one intermediate die, and a last die,

the secure array defined by a set of address-size pairs for the memory blocks, and

each pair of the address-size pairs comprising an address of a memory block in the secure array and a size of the block such that the pair provides a pointer to the block; and

in response to receiving the request, calculating a hash value of the secure array, by:

for the first die:

partially applying a hash function, without final padding of the hash function, to the memory blocks of the secure array in the first die to generate a partial digest of the first die; and

communicating, to a subsequent die of the set of dice, the partial digest of the first die;

for each particular die of the at least one intermediate die:

receiving the partial digest of the first die or an accumulation of partial digests from all or a subset of preceding dice in the set;

partially applying the hash function, without the final padding, to the memory blocks of the secure array in the particular die to generate a partial digest for the particular die,

the partially applying of the hash function for the particular die comprising adding the partial digest of the first die or the accumulation of partial digests to a pre-processed message comprising data from the memory blocks of the particular die as a basis for the generation of the partial digest for the particular die; and

communicating, to the subsequent die of the set of dice, the partial digest of the particular die; and

for the last die in the set of dice:

receiving the accumulation of partial digests from all or the subset of preceding dice in the set; and

fully applying the hash function, with the final padding, to the memory blocks of the secure array in the last die to generate a complete digest for the last die that includes the hash value of the secure array,

the fully applying of the hash function comprising adding the accumulation of partial digests to a pre-processed message comprising data from the memory blocks of the last die as a basis for the generation of the complete digest of the last die and the hash value of the secure array.

15. The method of claim 14 , wherein the hash function comprises SHA256, and wherein, for each particular die of the set of dice that is not the last die, the partially applying of the hash function comprises applying the function without final padding of SHA256.

16. The method of claim 15 , wherein, for each particular die of the set of dice that is not the last die, the partially applying of the hash function comprises adding to the pre-processed message of the particular die, with additional padding, the partial digest of the first die or the accumulation of partial digests.

17. The method of claim 14 , wherein the hash function comprises SHA256, and wherein, for the last die, the fully applying of the hash function comprises:

adding to the pre-processed message of the last die, with additional padding, the accumulation of partial digests; and

applying the function with final padding of SHA256.

18. The method of claim 14 , further comprising validating the hash value of the secure array by comparing the hash value to a validation code.

19. The method of claim 18 , further comprising, when the validation of the hash value of the secure array fails by not matching the validation code, restoring data defined by the secure array from a secure memory region in the set of dice.

20. A non-transitory computer-readable storage medium tangibly encoded with computer-executable instructions, that when executed by a processor of a computing device, causes the processor to perform a method, the method comprising:

receiving a request for calculating a hash value of a secure array of memory blocks in a sequential set of dice,

the set of dice comprising at least a first die and a last die,

the secure array defined by a set of address-size pairs for the memory blocks, and

each pair of the address-size pairs comprising an address of a memory block in the secure array and a size of the block such that the pair provides a pointer to the block; and

in response to receiving the request, calculating the hash value of the secure array, by:

for each particular die of the set of dice that is not the last die:

partially applying a hash function, without final padding of the hash function, to the memory blocks of the secure array in the particular die to generate a partial digest for the particular die; and

communicating, to a subsequent die of the set of dice, the partial digest of the particular die; and

for the last die in the set of dice, fully applying the hash function, with the final padding, to the memory blocks of the secure array in the last die to generate a complete digest for the last die that includes the hash value of the secure array.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Nov 15, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 051041/0317 →
RELEASE OF SECURITY INTEREST Recorded Oct 14, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050724/0392 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2019
From: TROIA, ALBERTO; MONDELLO, ANTONINO
To: MICRON TECHNOLOGY, INC.
Reel/Frame 049025/0177 →
SUPPLEMENT NO. 12 TO PATENT SECURITY AGREEMENT Recorded Apr 19, 2019
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 048948/0677 →
SUPPLEMENT NO. 3 TO PATENT SECURITY AGREEMENT Recorded Apr 19, 2019
From: MICRON TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 048951/0902 →