IP Library Granted Patent US 12,137,164
Granted Patent B1
US 12,137,164 · App. 18/447,868 · Granted Nov 5, 2024

Storage-free message authenticators for error-correcting-codes

Inventors: Dongwoo Kim (Seoul, KR); Cyril Guyot (San Jose, CA)
Assignee: Sandisk Technologies, Inc.
H04L9/32G06F11/1032H03M13/152H03M13/611H04L9/0869
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 12,137,164
App. No.
18/447,868
Granted
Nov 5, 2024
Kind
B1
Abstract

Techniques for storage-free message authentication for error-correcting-codes are disclosed. A storage controller of a storage device receives a request to encode a message in a format having an error-correcting code schema that generates a parity code. A key generator generates a pseudorandom transposition of the message and the parity code as a first part of a secret key. A pseudorandom character string is determined as a second part of the secret key. The output of the pseudorandom transposition and the pseudorandom character string are combined to generate the encoded message which is returned in response to the request. The secret key associated with the message is stored in non-volatile memory.

Claims (161)

1. A system comprising:

one or more processors; and

a memory storing instructions that, when executed, cause the one or more processors to:

receive, at a storage controller of a storage device, a request to encode a message using an error-correcting code schema that generates a parity code;

generate the parity code based on the error-correcting code schema;

generate, at a key generating module on the storage device, a first parameter associated with the message, the first parameter comprising a pseudorandom transposition of characters of the message and the parity code;

determine a pseudorandom character string based on the error-correcting code schema, the pseudorandom character string having a same number of characters as the first parameter;

combine the first parameter and the pseudorandom character string to generate the encoded message;

return the encoded message in response to the request; and

store a secret key associated with the message in the memory, wherein the secret key comprises:

the first parameter; and

the pseudorandom character string as a second parameter.

2. The system of claim 1 , wherein the instructions further cause the one or more processors to:

receive, at the storage controller, a data retrieval request associated with a coded message stored in the memory;

process the data retrieval request by decoding the encoded message using the error-correcting code schema and the secret key;

responsive to the coded message being unsuccessfully decoded using the error-correcting code schema:

retrieve the message as originally encoded and stored in the storage device; and

decode the retrieved originally encoded message using the error-correcting code schema and the secret key; and

return the decoded message responsive to the data retrieval request.

3. The system of claim 1 , wherein:

the error-correcting code schema comprises a Bose-Chaudhuri-Hoquenghem (BCH) code;

the first parameter comprises a permutation of positions based on a pseudorandom function;

combining the first parameter and the pseudorandom character string comprises performing an exclusive-or (XOR) operation on the first parameter and the pseudorandom character string; and

the request to encode the message includes a plurality of parameters, the plurality of parameters including:

a z parameter indicating a number of zeroes to pad the message in encoding;

a k parameter indicating a number of characters in the message;

a n parameter indicating a number of characters in a constructed code comprising the message and the parity code; and

a t parameter indicating a maximum number of error corrections.

4. The system of claim 3 , wherein the instructions further cause the one or more processors to:

receive, at the storage controller, a data retrieval request including a coded message stored in the memory;

process the data retrieval request by decoding the coded message using the secret key, the decoding comprising:

performing an XOR operation on the coded message and the second parameter;

performing an inverse transposing operation, using the first parameter, on a result of the XOR operation on the coded message and the second parameter; and

performing a BCH decoding operation on a result of the inverse transposing operation;

responsive to the BCH decoding operation returning an invalid word:

retrieve the message as originally encoded and stored in the storage device; and

decode the retrieved encoded message based on the BCH code using the secret key; and

return the decoded message responsive to the data retrieval request.

5. The system of claim 1 , wherein the encoded message is stored in the storage device by the storage controller.

6. The system of claim 1 , wherein:

the error-correcting code schema comprises a Maximum Distance Separable (MDS)/Reed-Solomon (RS) code;

combining the first parameter and the pseudorandom character string comprises performing a modulo operation on each character of the first parameter and each character of the pseudorandom character string based on ordinal position; and

the request to encode the message includes a plurality of parameters, the plurality of parameters including:

a q parameter indicating an alphabet size of the MDS/RS code;

a k parameter indicating a number of characters in the message;

a n parameter indicating a number of characters in a constructed code comprising the message and the parity code; and

a t parameter indicating a maximum number of error corrections.

7. The system of claim 6 , wherein the instructions further cause the one or more processors to:

receive, at the storage controller, a data retrieval request including a coded message stored in the memory;

process the data retrieval request by decoding the coded message using the secret key, the decoding comprising:

performing a linear combination of each character of the coded message and each character of the second parameter based on ordinal position;

performing, for each ordinal position, a modulo operation of the linear combination and the q parameter;

performing an inverse transposing operation on a character string comprising each result of the modulo operation for each ordinal position, the inverse transposing operation on the character string based on the first parameter; and

performing an MDS/RS decoding operation on a result of the inverse transposing operation;

responsive to the MDS/RS decoding operation returning an invalid word:

retrieve the message as originally encoded and stored in the storage device; and

decode the retrieved encoded message using the secret key; and

return the decoded message responsive to the data retrieval request.

8. The system of claim 1 , wherein:

the encoded message is stored in the storage device and a plurality of other storage devices by the storage controller; and

the instructions further cause the one or more processors to:

receive, at the storage controller, a data retrieval request associated with a coded message stored in the memory;

process the data retrieval request by decoding the encoded message using the error-correcting code schema and the secret key;

responsive to the coded message being unsuccessfully decoded using the error-correcting code schema:

retrieve the message as originally encoded from one of the storage device and another storage device of the plurality of other storage devices; and

decode the retrieved originally encoded message using the error-correcting code schema and the secret key; and

return the decoded message responsive to the data retrieval request.

9. The system of claim 1 , wherein the pseudorandom character string is derived from a stored index using a pseudorandom function.

10. The system of claim 1 , wherein:

the message comprises a plurality of unique messages; and

the instructions further cause the one or more processors to:

determine a unique pseudorandom character string based on the error-correcting code schema associated with each unique message of the plurality of unique messages, each unique pseudorandom character string having a same number of characters as the first parameter;

combine the first parameter and each unique pseudorandom character string to generate a plurality of encoded messages;

return the plurality of encoded message in response to the request; and

store a plurality of unique secret keys associated with the plurality of encoded messages in a memory of the storage device accessible by the storage controller, wherein each unique secret key comprises:

the first parameter; and

the each unique pseudorandom character string as a second parameter.

11. A computer-implemented method comprising:

receiving, at a storage controller of a storage device, a request to encode a message using an error-correcting code schema that generates a parity code;

generating the parity code based on the error-correcting code schema;

generating, at a key generating module on the storage device, a first parameter associated with the message, wherein the first parameter comprises a pseudorandom transposition of characters of the message and the parity code;

determining a pseudorandom character string based on the error-correcting code schema, the pseudorandom character string having a same number of characters as the first parameter;

combining the first parameter and the pseudorandom character string to generate the encoded message;

returning the encoded message in response to the request; and

storing a secret key associated with the message in a memory of the storage device accessible by the storage controller, wherein the secret key comprises:

the first parameter; and

the pseudorandom character string as a second parameter.

12. The computer implemented method of claim 11 , further comprising:

receiving, at the storage controller, a data retrieval request associated with a coded message stored in the memory;

processing the data retrieval request by decoding the coded message using the error-correcting code schema and the secret key;

responsive to the coded message being unsuccessfully decoded using the error-correcting code schema:

retrieving the message as originally encoded and stored in the storage device; and

decoding the retrieved originally encoded message using the error-correcting code schema and the secret key; and

returning the decoded message responsive to the data retrieval request.

13. The computer-implemented method of claim 11 , wherein:

the error-correcting code schema comprises a Bose-Chaudhuri-Hoquenghem (BCH) code;

the first parameter comprises a permutation of positions based on a pseudorandom function;

combining the first parameter and the pseudorandom character string comprises performing an exclusive-or (XOR) operation on the first parameter and the pseudorandom character string; and

the request to encode the message includes a plurality of parameters, the plurality of parameters including:

a z parameter indicating a number of zeroes to pad the message in encoding;

a k parameter indicating a number of characters in the message;

a n parameter indicating a number of characters in a constructed code comprising the message and the parity code; and

a t parameter indicating a maximum number of error corrections.

14. The computer-implemented method of claim 13 , further comprising:

receiving, at the storage controller, a data retrieval request associated with a coded message stored in the memory;

processing the data retrieval request by decoding the coded message using the secret key, the decoding comprising:

performing an XOR operation on the coded message and the second parameter;

performing an inverse transposing operation, using the first parameter, on a result of the XOR operation on the coded message and the second parameter; and

performing a BCH decoding operation on a result of the inverse transposing operation;

responsive to the BCH decoding operation returning an invalid word:

retrieving the message as originally encoded and stored in the storage device; and

decoding the retrieved encoded message based on the BCH code using the secret key; and

returning the decoded message responsive to the data retrieval request.

15. The computer-implemented method of claim 11 , wherein the encoded message is stored in the storage device by the storage controller.

16. The computer-implemented method of claim 11 , wherein:

the error-correcting code schema comprises a Maximum Distance Separable (MDS)/Reed-Solomon (RS) code;

combining the first parameter and the pseudorandom character string comprises performing a modulo operation on each character of the first parameter and each character of the pseudorandom character string based on ordinal position; and

the request to encode the message includes a plurality of parameters, the plurality of parameters including:

a q parameter indicating an alphabet size of the MDS/RS code;

a k parameter indicating a number of characters in the message;

a n parameter indicating a number of characters in a constructed code comprising the message and the parity code; and

a t parameter indicating a maximum number of error corrections.

17. The computer-implemented method of claim 16 , further comprising:

receiving, at the storage controller, a data retrieval request associated with a coded message stored in the memory;

processing the data retrieval request by decoding the coded message using the secret key, the decoding comprising:

performing a linear combination of each character of the coded message and each character of the second parameter based on ordinal position;

performing, for each ordinal position, a modulo operation of the linear combination and the q parameter;

performing an inverse transposing operation on a character string comprising each result of the modulo operation for each ordinal position, the inverse transposing operation on the character string based on the first parameter; and

performing an MDS/RS decoding operation on a result of the inverse transposing operation;

responsive to the MDS/RS decoding operation returning an invalid word:

retrieving the message as originally encoded and stored in the storage device; and

decoding the retrieved originally encoded message using the secret key; and

returning the decoded message responsive to the data retrieval request.

18. The computer implemented method of claim 11 , wherein:

the encoded message is stored in the storage device and a plurality of other storage devices by the storage controller; and

the method further comprises:

receiving, at the storage controller, a data retrieval request associated with a coded message stored in the memory;

processing the data retrieval request by decoding the encoded message using the error-correcting code schema and the secret key;

responsive to the coded message being unsuccessfully decoded using the error-correcting code schema:

retrieving the message as originally encoded from one of the storage device and another storage device of the plurality of other storage devices; and

decoding the retrieved originally encoded message using the error-correcting code schema and the secret key; and

returning the decoded message responsive to the data retrieval request.

19. The computer implemented method of claim 11 , wherein:

the message comprises a plurality of unique messages; and

the method further comprises:

determining a unique pseudorandom character string based on the error-correcting code schema associated with each unique message of the plurality of unique messages, each unique pseudorandom character string having a same number of characters as the first parameter;

combining the first parameter and each unique pseudorandom character string to generate a plurality of encoded messages;

returning the plurality of encoded message in response to the request; and

storing a plurality of unique secret keys associated with the plurality of encoded messages in a memory of the storage device accessible by the storage controller, wherein each unique secret key comprises:

the first parameter; and

the each unique pseudorandom character string as a second parameter.

20. A system, comprising:

means for receiving, at a storage controller of a storage device, a request to encode a message using an error-correcting code schema that generates a parity code;

means for generating the parity code based on the error-correcting code schema;

means for generating, at a key generating module on the storage device, a first parameter associated with the message, wherein the first parameter comprises a pseudorandom transposition of characters of the message and the parity code;

means for determining a pseudorandom character string based on the error-correcting code schema, the pseudorandom character string having a same number of characters as the first parameter;

means for combining the first parameter and the pseudorandom character string to generate the encoded message;

means for returning the encoded message in response to the request; and

means for storing a secret key associated with the message in a memory of the storage device accessible by the storage controller, wherein the secret key comprises:

the first parameter; and

the pseudorandom character string as a second parameter.

Assignments (8)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL Recorded Nov 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065657/0158 →
PATENT COLLATERAL AGREEMENT- A&R Recorded Nov 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065656/0649 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 10, 2023
From: KIM, DONGWOO; GUYOT, CYRIL
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 064557/0409 →
Continuity (1)
Provisional Application 63510492 · Jun 27, 2023
Cited By (1)
US 12,393,479