Securing a flash memory block in a secure device system and method
First Claim
Patent Images
1. A method comprising:
- encrypting data of a versionable file having an associated file version number, the encrypting based on a key stored in a security kernel;
storing the encrypted data as stored data in one or more flash memory data blocks of a flash memory device that includes a flash header and flash memory data blocks;
updating a flash header global version number and a security kernel global version number;
generating a cryptographic message authentication code (MAC) covering the data and informational variables, wherein the informational variables are generated by or accessible to the operating system software, wherein at least some of the variables are not stored on the flash device;
storing the MAC in the flash header and the one or more flash memory data blocks;
storing the updated flash header global version number in the flash header;
requesting in the clear a key handle to the key in the security kernel and storing the updated security kernel global version number in a key/signature store in the security kernel;
generating a new MAC for the one or more flash memory data blocks using the file version number as a parameter;
storing the new MAC in the one or more flash memory data blocks;
retrieving the encrypted data and the MAC from the one or more flash memory data blocks;
performing a validation check on the retrieved data using the MAC;
rejecting the retrieved data if the retrieved data fails the validation check;
if the retrieved data passes the validation check;
accepting the retrieved data;
decrypting the retrieved data.
4 Assignments
0 Petitions
Accused Products
Abstract
A technique for securing a flash memory block in a secure device system involves cryptographic techniques including the generation of a Message Authentication Code (MAC). The MAC may be generated each time a file is saved to one or more data blocks of a flash memory device and stored with the file'"'"'s metadata and to each of the data blocks. A technique for reading and storing versioned files may be employed when applications utilize versioning.
-
Citations
23 Claims
-
1. A method comprising:
-
encrypting data of a versionable file having an associated file version number, the encrypting based on a key stored in a security kernel; storing the encrypted data as stored data in one or more flash memory data blocks of a flash memory device that includes a flash header and flash memory data blocks; updating a flash header global version number and a security kernel global version number; generating a cryptographic message authentication code (MAC) covering the data and informational variables, wherein the informational variables are generated by or accessible to the operating system software, wherein at least some of the variables are not stored on the flash device; storing the MAC in the flash header and the one or more flash memory data blocks; storing the updated flash header global version number in the flash header; requesting in the clear a key handle to the key in the security kernel and storing the updated security kernel global version number in a key/signature store in the security kernel; generating a new MAC for the one or more flash memory data blocks using the file version number as a parameter; storing the new MAC in the one or more flash memory data blocks; retrieving the encrypted data and the MAC from the one or more flash memory data blocks; performing a validation check on the retrieved data using the MAC; rejecting the retrieved data if the retrieved data fails the validation check; if the retrieved data passes the validation check; accepting the retrieved data; decrypting the retrieved data. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system comprising:
-
a flash memory device including at least one flash memory block; a flash memory device driver embodied in a computer-readable medium; a security kernel embodied in a computer-readable medium, the security kernel comprising a key/signature store; wherein, in operation; the security kernel; generates a MAC using a plurality of variables accessible to operating system software; receives from the flash memory device driver a request in the clear for a key handle to a key stored in the key/signature store; stores an updated security kernel global version number based on the request in the clear; generates a new MAC for the flash memory block using a file version number as a parameter; performs a validation check using the new MAC; the flash memory device driver facilitates; sending the request in the clear for the key handle; sending the MAC to the flash memory device for storage in the flash memory block; storing the MAC in the flash header of the flash memory device; storing an updated flash header global version number in the flash header; receiving the MAC from the flash memory block. - View Dependent Claims (9, 10, 11, 12)
-
-
13. A method comprising:
-
reading a file version number associated with a versionable file; storing file data in one or more flash memory blocks of a flash memory device; updating a copy of a global version number on the flash memory device, wherein the global version number is associated with all versioned files stored, at least in part, on the flash memory device; receiving, in the clear, a key handle of a key stored in a secure kernel, the key used to encrypt data; updating, using the key, the global version number in non-volatile memory of the secure kernel; generating a MAC, to protect the global version number, using a plurality of variables accessible to operating system software; storing the MAC in the one or more flash memory blocks of the flash memory device; storing a copy of the updated global version number in the one or more flash memory blocks of the flash memory device; storing, using the key, the global version number in non-volatile memory of the security kernel. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
-
Specification