IP Library Granted Patent US 12,166,873
Granted Patent B2
US 12,166,873 · App. 17/189,927 · Granted Dec 10, 2024

Updateable encryption in self encrypting drives

Inventors: Hamza Jeljeli (Singapore, SG); Kian Beng Lim (Singapore, SG); Saravanan Nagarajan (Singapore, SG)
Assignee: Seagate Technology LLC
H04L9/0891H04L9/0863H04L9/0894
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,166,873
App. No.
17/189,927
Granted
Dec 10, 2024
Kind
B2
Abstract

A method of rotating a set of keys, having a media encryption key (MEK) and a current media encryption key encryption key (MEKEK) encrypted and stored in a self-encrypting drive (SED) having data encrypted with the MEK (MEK(data)), includes decrypting the stored MEK and the current MEKEK. A new MEK (MEK′) and a new MEKEK (MEKEK′) are generated. The MEKEK′ is encrypted to replace the current encrypted MEKEK. A concatenation of the MEK and the MEK′ is encrypted with MEKEK′. The encrypted data MEK(data) is re-encrypted with MEK′.

Claims (116)

1. A method of rotating a set of keys, having a media encryption key (MEK) and a current media encryption key encryption key (MEKEK) encrypted and stored in a self-encrypting drive (SED) having data encrypted with the MEK (MEK(data)), the method comprising:

decrypting, in the SED, the stored MEK and the current MEKEK, the MEK comprising a MEK string having a combination of nested MEK iterations and null values, and wherein the MEK string has a fixed length of an integer multiple, and wherein decrypting the stored MEK comprises decrypting the MEK string;

generating, in the SED, a new-media encryption key (MEK′) and a new media encryption key encryption key (MEKEK′);

encrypting, in the SED, the MEKEK′ to replace the current encrypted MEKEK;

concatenating, in the SED, the MEK and the MEK′ to obtain a concatenated key;

encrypting, in the SED, the concatenated key with MEKEK′, and storing, in the SED, the encrypted concatenated key over ciphertext comprising MEK encrypted with MEKEK;

re-encrypting, in the SED, the already-encrypted data MEK(data) in the SED with MEK′ without decrypting the MEK(data);

storing the re-encrypted data over the MEK(data);

refreshing the MEK string, wherein refreshing comprises:

generating a new MEK iteration and a new MEKEK;

determining a number of re-encryptions of the encrypted data that has previously occurred, as indicated by a number of non-null MEKs in the MEK string;

when the number of re-encryptions is less than a predetermined number N of re-encryptions:

concatenating the new MEK iteration with all nested MEK iterations of the decrypted MEK string;

encrypting the concatenated new MEK iteration and all nested MEK iterations with nulls to fill out a remainder of the MEK string;

encrypting the new MEKEK to replace the current encrypted MEKEK; and

re-encrypting the encrypted data with the new MEK.

2. The method of claim 1 , wherein decrypting the MEK comprises decrypting all nested MEK iterations in the MEK string.

3. The method of claim 1 , wherein encrypting a concatenation of the MEK and the MEK′ comprises encrypting all the nested MEK iterations from the MEK string with the MEK′.

4. The method of claim 1 , wherein decrypting the MEK comprises:

deriving a master key (MK) from a user password (PIN);

decrypting the current MEKEK from the encrypted MEKEK (MK(MEKEK)) by decrypting MK(MEKEK) with MK; and

decrypting the MEK from the encrypted MEK (MEKEK(MEK)) by decrypting MEKEK(MEK) with MEKEK.

5. The method of claim 1 , wherein refreshing further comprises:

when the number of re-encryptions is not less than N:

removing (N−1) layers of encryption from the encrypted data using the (N−1) newest MEK iterations;

erasing the N middle MEK iterations from the MEK string;

concatenating the new MEK and all remaining MEK iterations of the decrypted MEK string;

encrypting the concatenated MEK string with nulls to fill out a remainder of the MEK string;

encrypting the new MEKEK to replace the current encrypted MEKEK; and

re-encrypting the encrypted data with the new MEK; and

storing the encrypted current MEKEK, encrypted MEK string, and re-encrypted data in the SED.

6. The method of claim 1 , wherein refreshing further comprises:

when the number of re-encryptions is not less than N:

removing a last nesting layer of encryption from the encrypted data using the newest MEK iteration;

erasing the (N+1)th MEK iteration from the string of MEK iterations;

shifting the new MEK to the (N+1)th MEK iteration of the MEK string;

encrypting the MEK string;

encrypting the new MEKEK to replace the current encrypted MEKEK; and

re-encrypting the encrypted data with the new MEK; and

storing the encrypted current MEKEK, encrypted MEK string, and re-encrypted data in the SED.

7. A method of updating a key in a self-encrypting drive (SED) storing encrypted data MEK(data), comprising:

deriving, in the SED, a master key (MK) from a user password (PIN);

decrypting, in the SED, wrapping keys comprising a media encryption key (MEK) and a media encryption key encryption key (MEKEK) from stored ciphertext MEKEK(MEK) and MK(MEKEK) using the MK;

generating, in the SED, new wrapping keys MEK′ and MEKEK′;

re-encrypting, in the SED, the already-encrypted data MEK(data) in the SED with MEK′ without decrypting the MEK(data) to obtain ciphertext MEK′(MEK(data));

encrypting, in the SED, MEKEK′ with MK to obtain new ciphertext MK(MEKEK′);

encrypting, in the SED, a concatenation of MEK and MEK′ with MEKEK′ in a MEK string to obtain new ciphertext MEKEK′(MEK′, MEK), wherein encrypting a concatenation comprises:

concatenating MEK and MEK′ in the MEK string; and

encrypting the MEK string with new wrapping key MEKEK′; and

wherein concatenating further comprises:

providing a fixed length for the MEK string, the fixed length being an integer multiple of a size of an MEK iteration; and

padding the MEK string with null values for a remaining length of the MEK string after concatenating the MEK and MEK′;

storing, in the SED, ciphertext MEK′(MEK(data)), ciphertext MK(MEKEK′), and ciphertext MEKEK′(MEK′, MEK) in the SED such that MEK′(MEK(data)) replaces MEK(data) and MEKEK′(MEK′, MEK) replaces MEKEK(MEK);

refreshing the stored MEK, wherein the refreshing comprises:

generating a new MEK iteration and a new MEKEK;

determining a number of re-encryptions of the encrypted data that has previously occurred, as indicated by a number of non-null MEKs in the MEK string;

when the number of re-encryptions is less than a predetermined number N of re-encryptions:

concatenating the new MEK iteration and all MEK iterations of the decrypted MEK string into a new MEK string;

encrypting the new MEK string with nulls to fill out a remainder of the new MEK string;

encrypting the new MEKEK to replace the current encrypted MEKEK; and

re-encrypting the encrypted data with the new MEK.

8. The method of claim 7 , and further comprising:

when an additional update of a key is desired, deriving the master key (MK) from the user password (PIN);

decrypting the current MEKEK from MK(MEKEK′) with the MK;

decrypting MEK′ and MEK from MEKEK′(MEK′, MEK) with the current MEKEK;

generating new wrapping keys MEK″ and MEKEK″;

re-encrypting MEK′(MEK(data)) with MEK″ to obtain ciphertext MEK″(MEK′(MEK(data)));

encrypting MEKEK″ with MK to obtain new ciphertext MK(MEKEK″);

encrypting a concatenation of all MEK iterations with MEKEK″ to obtain ciphertext MEKEK″(MEK″, MEK′, MEK); and

storing ciphertext MEK″(MEK′((MEK(data))), ciphertext MK(MEKEK″), and ciphertext MEKEK″(MEK″, MEK′, MEK) in the SED.

9. The method of claim 7 , and further comprising:

when the MEK is to be updated, updating the MEK string additional times by:

generating a new MEK and a new MEKEK;

concatenating all decrypted MEK iterations from the MEK string with the new MEK and nulls to fill out a remainder of the MEK string into a new MEK string;

encrypting the new MEK string with the new MEKEK to replace the current encrypted MEKEK;

encrypting the new MEKEK with the MK; and

re-encrypting user data with the new current MEK.

10. The method of claim 7 , wherein refreshing further comprises:

when the number of re-encryptions is not less than N:

removing (N−1) layers of encryption from the encrypted data using the (N−1) newest MEK iterations;

erasing the N middle MEK iterations from the MEK string;

concatenating the new MEK and all remaining MEK iterations of the decrypted MEK string;

encrypting the concatenated MEK string with nulls to fill out a remainder of the MEK string;

encrypting the new MEKEK to replace the current encrypted MEKEK; and

re-encrypting the encrypted data with the new MEK; and

storing the encrypted current MEKEK, encrypted MEK string, and re-encrypted data in the SED.

11. The method of claim 7 , wherein refreshing further comprises:

when the number of re-encryptions is not less than N:

removing a last nesting layer of encryption from the encrypted data using the newest MEK iteration;

erasing the (N+1)th MEK iteration from the string of MEK iterations;

shifting the new MEK to the (N+1)th MEK iteration of the MEK string;

encrypting the MEK string;

encrypting the new MEKEK to replace the current encrypted MEKEK; and

re-encrypting the encrypted data with the new MEK; and

storing the encrypted current MEKEK, encrypted MEK string, and re-encrypted data in the SED.

12. A method of refreshing a nested concatenation of a plurality of media encryption key (MEK) iterations and a current media encryption key encryption key (MEKEK) stored in encrypted form, the media encryption key iterations used for nested encryption and re-encryption of user data without decryption in a self-encrypting drive (SED) in which re-encrypted user data is stored over previously-encrypted user data, the method comprising:

decrypting the plurality of media encryption key iterations to a MEK string, wherein the plurality of media encryption key iterations is stored in a fixed length MEK string having a length that is (N+2) times a length of an MEK in the MEK string, and comprising all previous MEK iterations and null-value MEK iterations for remaining space of the fixed length MEK string;

generating a new media encryption key and a new media encryption key encryption key;

determining, in the SED in which the re-encrypted user data is stored over the previously-encrypted user data, a number of re-encryptions of the user data using a number of non-null MEK entries in the decrypted MEK string; and

refreshing the stored MEK string, wherein refreshing comprises:

generating a new MEK and a new MEKEK;

when the number of re-encryptions is less than a predetermined number N of re-encryptions:

concatenating the new MEK and all MEK iterations of the decrypted MEK string;

encrypting the concatenated new MEK and MEK iterations with nulls to fill out a remainder of the MEK string;

encrypting the new MEKEK to replace the current encrypted MEKEK; and

re-encrypting the encrypted data with the new MEK.

13. The method of claim 12 , wherein refreshing further comprises:

when the number of re-encryptions is not less than N:

removing (N−1) layers of encryption from the encrypted data using the (N−1) newest MEK iterations;

erasing the N middle MEK iterations from the MEK string[ ];

concatenating the new MEK and all remaining MEK iterations of the decrypted MEK string;

encrypting the concatenated new MEK and MEK iterations with nulls to fill out a remainder of the MEK string;

encrypting the new MEKEK to replace the current encrypted MEKEK; and

re-encrypting the encrypted data with the new MEK; and

storing the encrypted current MEKEK, encrypted MEK string, and re-encrypted data in the SED.

14. The method of claim 12 , wherein refreshing further comprises: when the number of re-encryptions is not less than N: removing a last nesting layer of encryption from the encrypted data using the newest MEK iteration; erasing the (N+1)th MEK iteration from the string of MEK iterations; shifting the new MEK to the (N+1)th MEK iteration of the MEK string; encrypting the MEK string; encrypting the new MEKEK to replace the current encrypted MEKEK; and re-encrypting the encrypted data with the new MEK; and storing the encrypted MEKEK, encrypted MEK string, and re-encrypted data in the SED.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 2, 2021
From: JELJELI, HAMZA; LIM, KIAN BENG; NAGARAJAN, SARAVANAN
To: SEAGATE TECHNOLOGY LLC
Reel/Frame 055460/0770 →
Continuity (1)
Related Publication 20220286282A1 · Sep 8, 2022