The disclosed technology relates generally to electronic computer systems, and more particularly to data protection and validation in such systems.
The present disclosure, in accordance with one or more various embodiments, is described in detail with reference to the following figures. The figures are provided for purposes of illustration only and merely depict typical or example embodiments.
The figures are not exhaustive and do not limit the present disclosure to the precise form disclosed.
Various embodiments of the disclosed technology provide multilayer data protection for memory devices. Current volatile memory devices generally include buffer and register logic that may be modified by an attacker to observe or modify the data stored in the memory devices. The disclosed technology provides a memory controller that implements a multilayer strategy to defeat such attacks.
During a write operation, the memory controller may first generate an authentication code based on the data to be written to the memory device. Next, the memory controller may concatenate the data and authentication code, and encrypt the concatenation. Finally, the encrypted concatenation may be written to the memory device. Although an attacker may gain access to the data stored in the memory device, that data will be encrypted, and therefore will be of no use to the attacker. A similar process may be used during a read operation, where the authentication code may be used to verify the data has not been modified by an attacker.
The technology described herein provides several advantages. Implementation of the disclosed technology eliminates the need for a secure channel to the memory devices. Instead, the data is protected through generation of an authentication code, and encryption of the data and authentication code. The elimination of the secure data channel reduces the total cost of the memory system for a secure platform.
The memory controller 102 may store an encryption key 122. The memory controller 102 may use the encryption key 122 to encrypt data written to the memory module 120, and to decrypt data read from the memory module 120, for example as described below. The encryption key 122 may be provisioned with the memory controller 102, provided by the processor 140, or a combination thereof. When provided by the processor 140, the encryption key 122 may be supplied via the system bus 114, via a separate management channel 116, or the like. The memory controller 102 may store a plurality of encryption keys 122. For example, different encryption keys 122 may be used with different processes, different users, and the like, or combinations thereof.
The memory controller 120 may store a hash function 124. The memory controller 120 may use the hash function 124 to generate authentication codes for data written to the memory module 120, and to validate data read from the memory module 120. The hash function 124 may be provisioned with the memory controller 102, provided by the processor 140, or a combination thereof. When provided by the processor 140, the hash function 124 may be supplied via the system bus 114, via a separate management channel 116, or the like. The memory controller 120 may store multiple hash functions 124. For example, different hash functions 124 may be used with different processes, different users, and the like, or combinations thereof.
The DRAMs 104 may feature extra bits that may be employed by embodiments of the disclosed technology. For example, the DRAMs 104 may be connected to the memory controller using a 40 bit wide data bus, providing 32 bits for data and 8 bits for error correction or an authentication code. This provides about 3 extra bits per transfer for authentication code storage compared to a 72 bit wide data bus. Embodiments of the disclosed technology may employ the extra bits to store an authentication code that is generated based on the data in the data line, for example as described below.
Referring again to
In some embodiments, the memory module 120 of
Referring to
Memory controller 102 may use logic 208 to generate an authentication code based on the received data. For example, the authentication code may be generated by hashing the data. In one implementation, the hash may be a modulo 256 hash. However, other hash functions, and other functions may be used to generate the authentication code.
Memory controller 102 may use logic 210 to encrypt the data and the authentication code. In some embodiments, the data and the authentication code may be encrypted using a private key that is stored within the memory controller 102. In such embodiments, because the private key is not stored in the DRAMs 104, register 106, or buffers 108, that private key is not available to an attacker, thereby enhancing the security of the data stored in the DRAMs 104.
The data and authentication code may be concatenated prior to encryption. Any encryption technique may be used. Of course, the strength of the data protection will increase with the strength of the encryption used. In embodiments where a checksum is received with the data, the data, authentication code, and checksum may be encrypted together. The data, authentication code, and checksum may be concatenated prior to encryption.
Memory controller 102 may use logic 212 to generate an error correction code for the encrypted data and authentication code. In embodiments where a checksum is received with the data, and encrypted with the data and authentication code, the error correction code may be generated for the encrypted data, authentication code, and checksum. Memory controller 102 may use logic 214 to write the encrypted data and authentication code, and the error correction code, to the memory device 104. For example, the memory controller 102 may provide a memory address, and a write command, over the command/address bus 112, to the register 106, while providing the encrypted data and authentication code to a buffer 108 over a data bus 110.
Referring to
Memory controller 102 may use logic 308 to read an error correction code for the encrypted data and authentication code. Memory controller 102 may use logic 310 to check the encrypted data and authentication code according to the error correction code. This check may be implemented according to conventional techniques.
Memory controller 102 may use logic 312 to decrypt the encrypted data and authentication code. The encrypted data, authentication code and checksum (if one) may be decrypted using a private key that is stored in the memory controller 102.
Memory controller 102 may use logic 314 to authenticate the data according to the authentication code. For example, the function used to generate the authentication code during write operations may be applied to the decrypted data, and the results compared to the decrypted authentication code. This process ensures the data has not been modified by an attacker.
Referring again to
Referring again to
Referring to
Referring again to
Referring again to
Referring to
Memory controller 102 may decrypt the encrypted data and authentication code, at 508 and 714. The encrypted data, authentication code and checksum (if one) may be decrypted using a private key that is stored in the memory controller 102. The resulting decrypted cache line and authentication code are shown at 716.
Memory controller 102 may authenticate the data according to the authentication code, at 510. For example, the hash function 718 used to generate the authentication code during write operations may be applied to the decrypted data, and the results compared to the decrypted authentication code, verifying that the computed authentication value of the cache line after decode matches the decoded authentication value from the packet. This process ensures the data has not been modified by an attacker. The cache line may then be provided to the processor 140, at 720.
As used herein, a circuit might be implemented utilizing any form of hardware, software, or a combination thereof. For example, one or more processors, controllers, ASICs, PLAs, PALs, CPLDs, FPGAs, logical components, software routines or other mechanisms might be implemented to make up a circuit. In implementation, the various circuits described herein might be implemented as discrete circuits or the functions and features described can be shared in part or in total among one or more circuits. Even though various features or elements of functionality may be individually described or claimed as separate circuits, these features and functionality can be shared among one or more common circuits, and such description shall not require or imply that separate circuits are required to implement such features or functionality. Where a circuit is implemented in whole or in part using software, such software can be implemented to operate with a computing or processing system capable of carrying out the functionality described with respect thereto, such as computer system 400.
As used herein, the term “or” may be construed in either an inclusive or exclusive sense. Moreover, the description of resources, operations, or structures in the singular shall not be read to exclude the plural. Conditional language, such as, among others, “can,” “could,” “might,” or “may,” unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or steps.
Terms and phrases used in this document, and variations thereof, unless otherwise expressly stated, should be construed as open ended as opposed to limiting. Adjectives such as “conventional,” “traditional,” “normal,” “standard,” “known,” and terms of similar meaning should not be construed as limiting the item described to a given time period or to an item available as of a given time, but instead should be read to encompass conventional, traditional, normal, or standard technologies that may be available or known now or at any time in the future. The presence of broadening words and phrases such as “one or more,” “at least,” “but not limited to” or other like phrases in some instances shall not be read to mean that the narrower case is intended or required in instances where such broadening phrases may be absent.
This application claims the benefit of U.S. Provisional Application No. 62/792,300, filed Jan. 14, 2019, and which is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62792300 | Jan 2019 | US |