Method and apparatus for data encryption using a standardized data storage and retrieval protocol
AssigneeGoke US Research Laboratory
InventorsSteven Schauer, Xinhai Kang, Engling Yeo
Life of this patent
Estimating the term…
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.
Claims19
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.
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.
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.
Dependencies are inferred from the claim text.