US2020050800A1PendingUtilityA1

Method and apparatus for data encryption using a standardized data storage and retrieval protocol

58
Assignee: GOKE US RES LABPriority: Feb 27, 2018Filed: Oct 21, 2019Published: Feb 13, 2020
Est. expiryFeb 27, 2038(~11.6 yrs left)· nominal 20-yr term from priority
G06F 21/72G06F 21/79G06F 13/4282G06F 21/76H04L 9/0897G06F 2213/0026G06F 21/602H04L 9/0894
58
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A system, method and apparatus for encrypting data. A host processor and host memory are coupled to a block I/O device. The host processor issues encryption and decryption commands to the block I/O device in accordance with a high-speed data storage and retrieval protocol. The block I/O device performs encryption on data specified in the encryption command, thus relieving the host processor of performing the encryption and freeing the host processor for other tasks.

Claims

exact text as granted — not AI-modified
We claim: 
     
         1 . A block I/O device, comprising:
 a host interface for transporting data and commands to and from a host coupled to the host interface via a high-speed data bus in accordance with a high-speed data storage and retrieval protocol;   a memory for storing processor-executable instructions, an encryption index key table, and a first encryption algorithm; and   a controller coupled to the host interface and the memory, for executing the processor-executable instructions that causes the block I/O device to:
 receive, by the controller via the host interface, an encryption command comprising a modified version of a standard command defined by the high-speed data storage and retrieval protocol; 
 retrieve, by the controller, an encryption key index value from a first field of the encryption command, the first field used in other commands from the host for functions other than encryption; 
 retrieve, by the controller via the host interface, unencrypted data in a memory location identified by the encryption command; 
 retrieve, by the controller, a first encryption key of two or more encryption keys stored in the encryption index key table based on the encryption key index value; 
 encrypt, by the controller, the unencrypted data in accordance with the first encryption key and the first encryption algorithm, to produce encrypted data. 
   
     
     
         2 . The block I/O device of  claim 1 , wherein the processor-executable instructions further causes the block I/O device to:
 provide, by the controller via the host interface, a notification to the host that the encryption command has been completed.   
     
     
         3 . The block I/O device of  claim 2 , wherein the high-speed data storage and retrieval protocol comprises an NVMe data storage and retrieval protocol and the notification comprises an entry into a completion queue in accordance with the NVMe data storage and retrieval protocol. 
     
     
         4 . The block I/O device of  claim 1 , wherein the high-speed data storage and retrieval protocol comprises an NVMe protocol, and the first field of the encryption command comprises a Namespace ID field of a Vendor Specific Command. 
     
     
         5 . The block I/O device of  claim 1 , further comprising:
 programmable circuitry coupled to the controller to perform the encryption instead of the controller;   wherein the processor-executable instructions further causes the block I/O device to:
 receive, by the controller via the host interface, an administrative command from the host to download a second encryption algorithm from the host; 
 download, by the controller via the host interface, the second encryption algorithm; 
 store, by the controller, the second encryption algorithm in the memory; and 
 use, by the controller, the second encryption algorithm to encrypt further unencrypted data in a subsequent encryption command. 
   
     
     
         6 . The block I/O device of  claim 5 , wherein the programmable circuitry comprises an embedded FPGA. 
     
     
         7 . The block I/O device of  claim 1 , wherein the block I/O device comprises a solid state drive, further comprising:
 a mass storage device coupled to the controller for storing the encrypted data.   
     
     
         8 . A computer system, comprising:
 a host computer, comprising:
 a host processor for generating an encryption command, the encryption command comprising an encryption key index value placed into a first field of the encryption command, the first field used in other commands for functions other than encryption; 
 a host memory for storing first processor-executable instructions and unencrypted data; and 
 a data bus coupled to the processor and the memory for providing the unencrypted data to one or more block I/O devices coupled to the data bus; 
   
       and
 a first block I/O device coupled to the host computer via the data bus, the first block I/O device comprising:
 a host interface for sending and receiving data and commands from the host processor in accordance with a high-speed data storage and retrieval protocol; 
 a memory for storing second processor-executable instructions, an encryption index key table, and a first encryption algorithm; and 
 a controller coupled to the host interface and the memory, for executing the second processor-executable instructions that causes the block I/O device to:
 receive, by the controller via the host interface, the encryption command in accordance with the high-speed data storage and retrieval protocol; 
 retrieve, by the controller, the encryption key index value from the first field of the encryption command; 
 retrieve, by the controller via the host interface, the unencrypted data from the host memory; 
 retrieve, by the controller, a first encryption key of two or more encryption keys stored in the encryption index key table based on the encryption key index value; 
 encrypt, by the controller, the unencrypted data in accordance with the first encryption key and the first encryption algorithm to produce encrypted data. 
 
 
 
     
     
         9 . The computer system of  claim 8 , wherein the second processor-executable instructions further causes the computer system to:
 provide, by the controller via the host interface, a notification to the host processor that the encryption command has been completed.   
     
     
         10 . The computer system of  claim 9 , wherein the high-speed data storage and retrieval protocol comprises an NVMe data storage and retrieval protocol and the notification comprises an entry into a completion queue of the host memory in accordance with the NVMe data storage and retrieval protocol. 
     
     
         11 . The computer system of  claim 8 , wherein the high-speed data storage and retrieval protocol comprises an NVMe protocol, and the first field of the encryption command comprises a Namespace ID field of a Vendor Specific Command. 
     
     
         12 . The computer system of  claim 9 , wherein the block I/O device further comprises:
 programmable circuitry coupled to the controller to perform the encryption instead of the controller;   wherein the second processor-executable instructions further causes the block I/O device to:
 receive, by the controller via the host interface, an administrative command from the host processor to download a second encryption algorithm from the host processor; 
 download, by the controller via the host interface, the second encryption algorithm; 
 store, by the controller, the second encryption algorithm in the memory; and 
 use, by the controller, the second encryption algorithm to encrypt further unencrypted data in a subsequent encryption command. 
   
     
     
         13 . The computer system of  claim 12 , wherein the programmable circuitry comprises an embedded FPGA. 
     
     
         14 . The computer system of  claim 9 , wherein the block I/O device comprises a solid state drive, further comprising:
 a mass storage device coupled to the controller for storing the encrypted data.   
     
     
         15 . A method, performed by a block I/O device coupled to a host, comprising:
 receiving, by a controller via a host interface in the block I/O device, an encryption command, the encryption command comprising an encryption key index value stored in a first field of the command;   retrieving, by the controller, the encryption key index value from the first field of the encryption command;   receiving, by the controller via the host interface, unencrypted data from the host;   retrieving, by the controller, a first encryption key of two or more encryption keys stored in the encryption index key table based on the encryption key index value;   encrypting, by the controller, the unencrypted data in accordance with the first encryption key and a first encryption algorithm stored in a memory coupled to the controller, to produce encrypted data.   
     
     
         16 . The method of  claim 15 , further comprising:
 providing, by the controller via the host interface, a notification to the host that the encryption command has been completed.   
     
     
         17 . The method of  claim 15 , wherein the first field of the encryption command comprises a Namespace ID field of a Vendor Specific Command as defined by an NVMe protocol. 
     
     
         18 . The method of  claim 15 , further comprising:
 receiving, by the controller via the host interface, an administrative command from the host to download a second encryption algorithm from the host;   downloading, by the controller via the host interface, the second encryption algorithm;   storing, by the controller, the second encryption algorithm in the memory; and   using, by the controller, the second encryption algorithm to encrypt further unencrypted data in a subsequent encryption command.   
     
     
         19 . The method of  claim 15 , wherein the block I/O device comprises a solid state drive coupled to the controller, the method further comprising:
 storing, by the controller, the encrypted data in the mass storage device.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.