US9397834B2 - Scrambling an address and encrypting write data for storing in a storage device - Google Patents
Scrambling an address and encrypting write data for storing in a storage device Download PDF
Craig A. Walrath
Hewlett Packard Development Co LP
2010-10-05 Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
2010-10-05 Priority to PCT/US2010/051413 priority Critical patent/WO2012047200A1/en
2013-03-28 Assigned to HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. reassignment HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: WALRATH, CRAIG A.
238000003860 storage Methods 0 abstract claims description title 155
230000000875 corresponding Effects 0 claims description 6
230000004044 response Effects 0 claims description 2
239000000203 mixtures Substances 0 claims 4
230000002633 protecting Effects 0 description 11
230000004224 protection Effects 0 description 10
230000006266 hibernation Effects 0 description 1
H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communication
H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communication using a plurality of keys or algorithms
H04L9/16—Cryptographic mechanisms or cryptographic arrangements for secret or secure communication using a plurality of keys or algorithms the keys or algorithms being changed during operation
G06F12/00—Accessing, addressing or allocating within memory systems or architectures
G06F12/14—Protection against unauthorised use of memory or access to memory
G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
G06F21/80—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
An address to access a location in a storage device (106, 204) is received, and the address is scrambled. Write data is encrypted using an encryption key. The encrypted write data is stored in the storage device at a location of the storage device specified by the scrambled address.
This application is a national stage application under 35 U.S.C. §371 of PCT/US2010/051413, filed Oct. 5, 2010.
An electronic device typically includes a storage device to store data. The storage device can be a volatile memory device used to temporarily store various types of data, including user or application data, machine-readable instructions, and so forth. Alternatively, the storage device can be a persistent storage device such as a disk-based storage device or a non-volatile memory device. The data stored in a storage device can include sensitive or confidential data, such as security keys, user credentials, financial information, personal information, and so forth. If the electronic device is stolen or otherwise accessed in an unauthorized manner, a hacker may attempt to retrieve the content of the storage device to obtain sensitive or confidential information stored in the storage device.
Some embodiments are described with respect to the following figures:
FIGS. 1 and 2 are block diagrams of example arrangements incorporating some embodiments; and
FIGS. 3 and 4 are flow diagrams of processes of protecting content of a storage device, according to some embodiments.
In accordance with some implementations, techniques or mechanisms are provided to protect content of a storage device in an electronic device, which can be a computer, personal digital assistant, electronic appliance, storage server, mobile telephone, or other type of electronic device. In some examples, the storage device can be a volatile memory device implemented with dynamic random access memory (DRAM) or static random access memory (SRAM) technology. In alternative examples, the storage device can be a non-volatile memory device such as a flash memory device. As yet further examples, the storage device can be a disk-based storage device, such as a hard disk drive or optical disk drive. In other examples, other types of storage devices can be used.
FIG. 1 depicts an example arrangement that includes a storage device requestor 102, a storage device controller 104 (provided with data protection mechanisms according to some implementations), and a storage device 106. The storage device requestor 102 is able to access (read or write) the content of the storage device 106 through the storage device controller 104. Examples of the storage device requester 102 include a processor, an input/output (I/O) controller, or other type of requester.
A storage device bus 108 interconnects the storage device controller 104 and storage device 106. The storage device bus 108 includes a control portion (for carrying control signals), an address portion (for carrying address signals), and a data portion (for carrying data read from or written to the storage device 106). The control, address, and data portions of the bus 108 are shown separately as an example. Various implementations could have these as separate connections, but the portions can also be multiplexed or sent on common bus signals, and so forth. Also, the control, address, and/or data portions can be implemented as wired or wireless connections. In wireless implementations, the control, address, and/or data portions are transmitted using a wireless protocol.
As shown in FIG. 1, the storage device controller 104 can provide a storage device address 110 to access a location of the storage device 106. For a write operation, write data 112 can be provided to the storage device 106, and for a read operation, read data 114 can be retrieved from the storage device 106. To protect content of the storage device 106, write data 112 sent to the storage device 106 from the storage device controller 104 includes encrypted write data. If data is read from a location of the storage device 106 that is protected by encryption, the corresponding read data 114 is encrypted read data.
For further protection of the content of the storage device 106, the storage device address 110 can be a scrambled address. Note that not all locations in the storage device 106 have to be protected by data encryption and address scrambling—in some examples, certain locations of the storage device 106 are not subject to data encryption and/or address scrambling. For example, data encryption and/or address scrambling can be selectively enabled or disabled for specific storage locations. The selective enabling/disabling of data encryption and/or address scrambling can be accomplished by including a command field with a storage access command to specify whether or not the corresponding storage location is to be protected by data encryption and/or address scrambling. Alternatively, other mechanisms can be used for selectively enabling/disabling data encryption and/or address scrambling for specific storage locations, such as by use of configuration information, an application programming interface (API), and so forth.
Using both address scrambling and data encryption provides an enhanced level of protection for data stored in the storage device 106. In this way, the likelihood of a hacker being able to retrieve content of protected data in the storage device is reduced. In trying to retrieve data from the storage device 106, the hacker may steal the electronic device, remove the storage device 106 from the electronic device, or otherwise gain unauthorized access to the storage device 106 (either physically or electronically).
Although FIG. 1 shows just one storage device controller 104 implemented with data protection mechanisms to protect data in the storage device 106, note that there can be additional storage device controller(s) with similar data protection mechanisms for other storage device(s).
The storage device controller 104 includes an encryption module 116 to encrypt (un-encrypted) write data, and a decryption module 118 to decrypt encrypted read data 114. The decryption module 118 outputs decrypted read data.
Each of the encryption module 116 and decryption module 118 is supplied with a key to perform the respective encryption or decryption. The key can be a data key 120 stored in key storage 122. Alternatively, the key provided to the encryption module 116 and decryption module 118 can be a mixed key output by a key mixer 124. The key mixer 124 mixes a data key 120 from the key storage 122 with address information to output the mixed key. The mixing of the data key with the address information can be an exclusive-OR of the data key and the address information. Other types of mixing of the data key and address information can be used in other implementations. Note that in FIG. 1, depicting the key mixer 124 in dashed profile means that in some examples, the key mixer 124 is not provided in the storage device controller 104.
The encryption that is applied by the encryption module 116 can be one of various types of encryption. For example, a fast encryption technique can be an exclusive-OR (XOR) technique in which an encryption key is XOR-ed with write data. A benefit of using the XOR-based encryption technique is that it is relatively fast and can support relatively fast access speeds of the storage device 106 without adding delay to the write and read paths.
The encryption module 116 can thus apply the following exclusive-OR operation: A
K=C, where A represents the input plaintext data (write data) that is XOR-ed with the encryption key K (data key 120 or mixed key) to produce encrypted write data (C).
To perform decryption, the encrypted read data (C) can be XOR-ed with the encryption key K to recover the original plaintext (A), according to: C
K=A.
In alternative implementations, instead of using the XOR-based encryption technique, a higher-level encryption technique can be used. For example, the higher-level encryption can be Advanced Encryption Standard (AES) encryption. The AES encryption key is more difficult to hack than a key used in XOR encryption. However, AES encryption can come with increased circuit complexity (since more circuits have to be used to implement AES encryption), which can lead to increased access times or increased complexity in addressing the issue of increased access time involved in performing AES encryption. Other types of higher-level encryptions can be used in other examples.
In the key mixer 124, the address information that is mixed with the data key 120 can include one or a combination of the following: (1) at least a portion of an initial (un-scrambled) physical address provided by the storage device requestor 102, (2) at least a portion of a scrambled physical address, and (3) at least a portion of virtual address information (scrambled virtual address or un-scrambled virtual address). A "virtual address" refers to a logical address that is part of a virtual address space typically used by higher-level components of an electronic device, such as an operating system or a file system. The virtual address space is typically larger than the physical address space that defines the actual available storage locations in the storage device 106.
Each data key 120 stored in the key storage 122 can be a randomly generated key, which can be generated by the storage device controller 104 itself or by a component outside the storage device controller 104. For example, a data key can be generated by system boot code, such as basic input/output system (BIOS) code, which performs various initialization functions when an electronic device is first started. Alternatively, the data key can be generated by a management engine that is part of the chipset of an electronic device. As yet another alternative, the data key can be generated based on user input. As another example, the data key can be generated by a processor, a trusted platform module, or other component. The data key can also be received over a network connection or a management bus to which the electronic device is connected. Generally, the data key is generated without using data that can be discovered by reverse engineering a component in the electronic device.
Random data keys can be generated based on output of a random number generator. Also or alternatively, random data keys can be generated based on dates and/or time. To enhance security, the data key that is used to perform the encryption and decryption by the encryption module 116 and decryption module 118, respectively, changes with each system reset or reboot. Alternatively, a different data key can be generated when the electronic device resumes from a lower power state, such as a standby state, a hibernation state, or other lower power state. As yet a further alternative, encryption refresh cycles can be employed in which a new data key is generated in each new encryption refresh cycle.
The key storage 122 is a volatile storage device that loses its content upon loss or removal of power. For example, the key storage 122 can be a register in the storage device controller 104, or alternatively, the key storage 122 can be part of the storage device 106. The key storage 122 can be a write-only/write-once storage device (e.g., register) that is reset in response to a predefined event, such as the electronic device being shut down, being reset, entering into a lower power state, starting a new encryption refresh cycle, and so forth. A write-only storage means that the key storage 122 cannot be read by a component outside the storage device controller 104, and a write-once storage means that the key storage 122 can only be written once during each predefined interval (e.g., during the on time of an electronic device between resets, reboots, or power cycles; during a particular refresh cycle interval; and so forth).
As noted above, the storage device address 110 provided by the storage device controller 104 to access a location in the storage device 106 can be a scrambled address. Employing address scrambling allows for an additional layer of protection on top of the protection provided by the encrypting data stored in the storage device 106. The address scrambling can be performed by an address scrambler 126 in the storage device controller 104 in some examples. In alternative examples, instead of providing the address scrambler 126 in the storage device controller 104, an address scrambler 128 can be provided as part of the storage device requestor 102, or alternatively, the address scrambler 128 can be provided between the storage device requester 102 and storage device controller 104 (in other words, the address scrambler can be provided in a component that is separate from the storage device requestor 102 and the storage device controller 104).
Scrambling an initial address can be performed using any one of various techniques. For example, address bits of the initial address can be switched around. Alternatively, an initial address can be scrambled by using a key, such as a randomly generated key. The key for scrambling the address can be a data key 120 (stored in the key storage 122) or a different key. The key can be mixed with or otherwise applied to the initial address to generate the scrambled address. Alternatively, address scrambling can be performed by hashing the initial address to produce a hash value that represents the scrambled address. As yet another alternative, a data structure, such as a table, can be stored to map input initial addresses to output addresses, where the output addresses are considered the scrambled addresses. Other techniques can be used in other implementations.
In implementations where a key is used to scramble an address, there can be various possible scenarios (some of which are set forth below). In a first scenario, the address scrambler 126 or 128 can scramble an initial physical address to form a scrambled address using a data key 120. The key mixer 124 mixes the initial physical address with the data key 120 to form a mixed key, and the mixed key can be used by the encryption module 116 and decryption module 118 to encrypt or decrypt data, respectively.
A second scenario involves the address scrambler 126 or 128 scrambling an initial physical address with an address key that is different from a data key 120. The initial physical address is mixed by the key mixer 124 with the data key 120 to form a mixed key that is used to encrypt or decrypt data.
In a third scenario, the address scrambler 126 or 128 can scramble an initial physical address using a different technique than a technique used for encrypting data. For example, a first encryption technique is used to scramble the initial physical address with a key (data key or address key different from the data key) to form the scrambled address, while a second encryption technique is used to encrypt write data with a data key (instead of a mixed key) to output encrypted write data.
In a fourth scenario, a scrambled address can be generated using an address key that is different from a data key. The scrambled address is mixed with the data key to form a mixed key to encrypt write data.
In a fifth scenario, a scrambled address can be generated using a data key. The scrambled address is mixed with the data key to form a mixed key to encrypt write data.
In a sixth scenario, a scrambled address can be generated using an encryption technique different from the encryption technique used for encrypting write data. In this scenario, a data key is used to encrypt the data, instead of a mixed key.
In a seventh scenario, en initial physical address can be scrambled to form a scrambled address, but a virtual address (or a scrambled virtual address) can be mixed with a data key to provide the mixed key for encrypting the write data. A variant of this scenario is to use the virtual address (or a scrambled virtual address) as the data key to encrypt write data.
There can be numerous other scenarios. Moreover, some scenarios can involve combinations of multiple ones of the above scenarios.
FIG. 2 shows another example arrangement that includes a memory controller 202 that is connected to a memory device 204 (note that in different examples, the memory controller 202 can be replaced with a storage device controller, while the memory device 204 is replaced with a storage device). The memory controller 202 implements memory protection mechanisms (similar to those noted above) to protect data to be stored in the memory device 204. The memory device 204 can represent a single device, or a combination of multiple devices (e.g., a single memory chip or multiple memory chips, or a single memory module or multiple memory modules). Note that implementations according to FIG. 2 do not use key mixing to mix a data key with address information to form a mixed key to encrypt write data.
In alternative implementations, a key mixer such as the key mixer 124 of FIG. 1 can be added to the memory controller 202 of FIG. 2.
The memory protection mechanisms implemented by the memory controller 202 include a data encryption mechanism to encrypt write data that is to be stored into the memory device 204. The memory protection mechanisms of the memory controller 202 also include an address scrambling mechanism to scramble an address that specifies a location in the memory device 204.
FIG. 2 further shows a requestor 206 (e.g., processor, I/O controller, etc.) coupled to the memory controller 202. The requester 206 is able to issue read or write requests to the memory controller 202 to read or write data in the memory device 204.
For a write operation, as shown in FIG. 2, the memory controller 202 includes a write data buffer 210 to store incoming write data. An encryption module 212 applies encryption on the write data from the write data buffer 210, and provides the encrypted write data for storage at the memory device 204 over a memory bus 214. The memory bus 214 includes a control portion (having control signals), an address portion (containing an address), and data portion (containing data to be transferred between the memory controller 202 and the memory device 204).
For a read operation, read data is retrieved from the memory device 204 and provided to a decryption module 216. Note that the data read from the memory device 204 can be encrypted data, such that the decryption module 216 applies decryption to the encrypted read data to output decrypted read data to a read data buffer 218, where the read data can be provided to the requester 206.
The encryption or decryption applied by the encryption module 212 and decryption module 216 can be based on a data key stored in key storage 220 in the memory controller 202. As depicted in FIG. 2, the key storage 220 can store multiple data keys (represented as "data key 1" . . . "data key where n", where n≧2). In some implementations, different memory regions of the memory device 204 can be encrypted using different data keys. As depicted in FIG. 2, the memory device has multiple memory regions ("memory region 1" . . . "memory region n"). The different memory regions can represent different portions of a particular memory device. The multiple memory regions can alternatively represent different memory devices. Thus, in an electronic device having multiple memory devices, a first data key can be used to protect data in a first memory device, a second data key can be used to protect data in a second memory device, and so forth. In further examples, there can be different types of memory devices in the electronic device, in which case different data keys are used to protect data stored in the different types of memory devices. Thus, for example, a first data key is used to protect data in a first type of memory device (e.g., a DRAM-based memory device), a second data key is used to protect data in a second type of memory device (e.g., a flash memory device), and so forth. Note also that there can be cache memory in the electronic device, such that another data key is used to protect the cache memory.
Additionally, note also that different data keys can be used for different memory regions depending on how the respective memory regions are used. For example, one of the memory regions can be an operating system (OS) area for storing data or instructions associated with an operating system. Another memory region can store data associated with a non-OS program, such as user or application data.
Alternatively, different data keys can be used during different modes of operation of the electronic device, where the different modes can refer to different levels of security, for example.
In other implementations, different levels of encryption can be applied to different memory regions. For example, XOR-based encryption can be applied for a first memory region, while AES encryption or some other higher-level encryption is applied for a different memory region.
In addition, in some implementations, different address scrambling are used for different memory regions. For example, different keys (data keys or address keys different from the data keys) can be applied to generate different address scramblings. Alternatively, different encryption levels can be applied to provide different address scramblings for the different memory regions.
The different keys and/or different encryption levels and/or different address scramblings to be applied to different memory regions can be configured at build time of the electronic device or during electronic device operation by a user or administrator.
The memory controller 202 also includes a transaction address buffer 222 to store an address associated with a particular transaction (read transaction or write transaction). An address scrambler 224 applies address scrambling on the address from the transaction address buffer 222. The scrambled address is provided from the address scrambler 224 to an address control and timing module 226, which outputs the scrambled address over the address portion of the memory bus 214.
Note that different address scramblings can be performed for different memory regions in the memory device. Thus, for example, an address that accesses a first memory region will be scrambled in a first manner, whereas an address accessing a second memory region is scrambled in a second, different manner.
For example, the different manners of scrambling the address can be based on using different keys for scrambling the different addresses for different memory regions. Alternatively, different hashing functions can be used to scramble the addresses for different memory regions. Also, different address scrambling techniques can be performed for the memory regions that store different types of data, such as user data, graphics data, OS data, and so forth.
By using different data keys and/or different address scramblings for different memory regions, it becomes more difficult to recover keys or a specific address scrambling technique for memory regions that may contain sensitive or confidential data. Note that certain OS data may be known data, such that a hacker can relatively easily reverse engineer a key or a specific address scrambling technique for a OS memory region, based on the known OS data. However, if a different data key and/or address scrambling technique is used for a memory region containing non-OS data (e.g., such as user or application data), then the hacker would be unable to access the content of this other memory region even though the data key and/or address scrambling technique were determined by the hacker for the OS memory region.
In some implementations, note that OS data and non-OS data may be spread out over the memory device 204. If different address scramblings are being applied for the memory region containing OS data versus a memory region containing non-OS data, then the address scramblings are designed such that the resultant scrambled address for a non-OS memory region does not end up being the same as the resultant scrambled address for an OS memory region.
FIG. 3 is a flow diagram of a process performed by a control system. As used here, the control system (or equivalently, "control subsystem") includes processing circuitry that is capable of performing predefined tasks. For example, the control system can include one or a combination of any of the following: the storage device requestor 102 of FIG. 1, storage device controller 104 of FIG. 1, requestor 206 of FIG. 2, and memory controller 202 of FIG. 2.
The control system receives (at 302) address bits, which in the context of FIG. 3 are part of an address associated with a request to write to a storage device. The control system then scrambles (at 304) the address bits. Write data is then encrypted (at 306) using an encryption key that is a combination of a data key and address information, where the address information can include one or a combination of the following: (1) at least a portion of an initial (un-scrambled) physical address, (2) at least a portion of a scrambled physical address, and (3) at least a portion of virtual address information (scrambled virtual address or un-scrambled virtual address).
The encrypted write data is provided (at 308) for storing in the storage device.
FIG. 4 is a flow diagram of a process of performed by a control system according to alternative implementations. The control system receives (at 402) addresses associated with multiple requests to write to multiple storage regions. The addresses are scrambled (at 404), where scrambling each address refers to scrambling at least a portion of the address. Write data segments associated with the respective write requests are encrypted (at 406) using corresponding different encryptions, where different encryptions can be accomplished using different encryption keys (e.g., different data keys), or using different encryption techniques (e.g., XOR-based encryption, AES encryption, etc.).
The encrypted write data segments are then provided (at 408) for storing in the respective storage regions.
The control system used to implement the process of FIG. 3 or 4 can be implemented with hardware only, or a combination of hardware and machine-readable instructions that are loaded for execution on processing circuitry (which can be part of the requestor 102 or 206 or part of the storage device controller 104 or memory controller 202 in FIG. 1 or 2). Processing circuitry can include a microprocessor, microcontroller, processor module or subsystem, programmable integrated circuit, programmable gate array, or another control or computing device.
Data and instructions are stored in respective storage devices, which are implemented as one or more computer-readable or machine-readable storage media. The storage media include different forms of memory including semiconductor memory devices such as dynamic or static random access memories (DRAMs or SRAMs), erasable and programmable read-only memories (EPROMs), electrically erasable and programmable read-only memories (EEPROMs) and flash memories; magnetic disks such as fixed, floppy and removable disks; other magnetic media including tape; optical media such as compact disks (CDs) or digital video disks (DVDs); or other types of storage devices. Note that the instructions discussed above can be provided on one computer-readable or machine-readable storage medium, or alternatively, can be provided on multiple computer-readable or machine-readable storage media-distributed in a large system having possibly plural nodes. Such computer-readable or machine-readable storage medium or media is (are) considered to be part of an article (or article of manufacture). An article or article of manufacture can refer to any manufactured single component or multiple components.
In the foregoing description, numerous details are set forth to provide an understanding of the subject disclosed herein. However, implementations may be practiced without some or all of these details. Other implementations may include modifications and variations from the details discussed above. It is intended that the appended claims cover such modifications and variations.
1. A method comprising:
receiving, by a control system, a storage access command including a command field that selectively enables address scrambling for a storage location;
receiving, by the control system, address bits that define an address used to access the storage location in a storage device;
scrambling, by the control system, the address bits that define the address used to access the storage location for which address scrambling is selectively enabled by the command field;
encrypting, using an encryption key, write data, wherein the encryption key comprises a combination of a first key and address information, where the address information is based on one or a combination of: at least a portion of the received address bits, at least a portion of the scrambled address bits, or at least a portion of virtual address information, wherein scrambling the address bits is based on using a key selected from among the first key and a second key different from the first key; and
providing, by the control system, the encrypted write data to store in the storage device at a location of the storage device specified by the scrambled address bits.
2. The method of claim 1, wherein the location in the storage device specified by the address bits prior to the scrambling is different from the location in the storage device specified by the scrambled address bits.
3. The method of claim 1, wherein the combination of the first key and the address information comprises an exclusive-or of the first key and the address information.
4. The method of claim 1, wherein the storage device has plural regions, and wherein different encryption keys are used to encrypt data stored in the respective plural regions.
5. The method of claim 1, wherein the storage device has plural regions, the method further comprising applying different levels of encryption to the respective plural regions.
6. The method of claim 1, wherein the storage device has plural regions, the method further comprising applying different address scramblings for the respective plural regions.
7. The method of claim 1, further comprising:
reading encrypted read data from the storage device; and
decrypting the encrypted read data using the encryption key.
8. A system comprising:
at least one storage device; and
a control subsystem to:
receive a storage access command including a command field that selectively enables address scrambling for a storage location;
scramble addresses for accessing different storage regions of the at least one storage device to form respective scrambled addresses, the different storage regions including the storage location for which address scrambling has been selectively enabled by the command field;
encrypt, using different encryptions, corresponding plural write data segments, wherein the different encryptions are based on use of corresponding different encryption keys, wherein at least one of the encryption keys is a mixture of a data key and a first scrambled address of the scrambled addresses, wherein the first scrambled address is formed from one of: switching around address bits of a respective address; hashing the address bits; and mapping, using a table, the address bits to the first scrambled address; and
provide the encrypted write data segments to store in the respective storage regions specified by the respective scrambled addresses.
9. The system of claim 8, wherein the different encryptions are based on use of corresponding different encryption techniques.
10. The system of claim 8, wherein the different storage regions comprise: (1) different storage regions of one storage device, or (2) different storage regions of different storage devices.
11. The system of claim 8, wherein the different storage regions are to store respective different types of data.
12. The system of claim 8, wherein the control subsystem is configured to communicate at least one of address information, control information, and data information wirelessly to the storage device.
13. A storage device controller for a storage device, comprising:
an address scrambler to, in response to a storage access command including a command field specifying that address scrambling is selectively enabled for a storage location in the storage device, scramble address bits of an address used to access the storage location in the storage device, the scrambling of the address bits based on a first key;
a key mixer to form an encryption key by combining the first key with address information, where the address information is based on at least a portion of the scrambled address bits; and
an encryption module to encrypt write data using the encryption key, and to provide the encrypted write data to store in the storage device at a location of the storage device specified by the scrambled address bits.
14. The storage device controller of claim 13, wherein the storage location in the storage device specified by the address bits prior to scrambling is different from the location in the storage device specified by the scrambled address bits.
15. The method of claim 1, wherein scrambling the address bits based on using the key selected from among the first key and the second key comprises mixing the address bits with the key selected from among the first key and the second key.
16. The storage device controller of claim 13, wherein the scrambling of the address bits based on the first key comprises mixing the address bits with the first key.
US13/876,441 2010-10-05 2010-10-05 Scrambling an address and encrypting write data for storing in a storage device Active 2031-08-09 US9397834B2 (en)
PCT/US2010/051413 WO2012047200A1 (en) 2010-10-05 2010-10-05 Scrambling an address and encrypting write data for storing in a storage device
US13/876,441 Active 2031-08-09 US9397834B2 (en) 2010-10-05 2010-10-05 Scrambling an address and encrypting write data for storing in a storage device
DE (1) DE112010005842T8 (en)
GB (1) GB2497464A (en)
WO2012033496A1 (en) * 2010-09-10 2012-03-15 Hewlett-Packard Development Company, L.P. Unlock a storage device
WO2012047200A1 (en) 2010-10-05 2012-04-12 Hewlett-Packard Development Company, L. P. Scrambling an address and encrypting write data for storing in a storage device
KR20140089744A (en) * 2013-01-07 2014-07-16 삼성전자주식회사 Device and method for changing address and data of memory in termival
US9104588B2 (en) * 2013-03-01 2015-08-11 Micron Technology, Inc. Circuits, apparatuses, and methods for address scrambling
US9858208B2 (en) 2013-03-21 2018-01-02 International Business Machines Corporation System for securing contents of removable memory
US9436844B2 (en) 2013-08-29 2016-09-06 Microsoft Technology Licensing, Llc Access enablement security circuit
US9716708B2 (en) 2013-09-13 2017-07-25 Microsoft Technology Licensing, Llc Security certificates for system-on-chip security
US9607177B2 (en) 2013-09-30 2017-03-28 Qualcomm Incorporated Method for securing content in dynamically allocated memory using different domain-specific keys
US20150095661A1 (en) * 2013-09-30 2015-04-02 Microsoft Corporation Flexible Memory Addressing For Data Security
US9218296B2 (en) * 2014-01-27 2015-12-22 International Business Machines Corporation Low-latency, low-overhead hybrid encryption scheme
GB2524561A (en) * 2014-03-27 2015-09-30 St Microelectronics Res & Dev Methods and apparatus for storing content
CN103929297B (en) * 2014-04-17 2017-05-17 福建联迪商用设备有限公司 Communication method, encryption method and device for POS and mobile terminal and POS
IL235729A (en) * 2014-11-17 2017-06-29 Kaluzhny Uri Secure storage device and method
CN104486081A (en) * 2014-12-15 2015-04-01 英华达(上海)科技有限公司 Encryption transmission method and system of NFC (Near Field Communication) device data
CN104537319A (en) * 2014-12-22 2015-04-22 昆腾微电子股份有限公司 Device and method for scrambling and descrambling buses and integrated circuit chip
US10454845B2 (en) 2015-04-22 2019-10-22 ColorTokens, Inc. Object memory management unit
US20170093823A1 (en) * 2015-09-25 2017-03-30 Vinodh Gopal Encrypting Observable Address Information
GB2544546A (en) * 2015-11-20 2017-05-24 Advanced Risc Mach Ltd Dynamic memory scrambling
CN105512560B (en) * 2015-11-27 2018-11-16 深圳国微技术有限公司 A kind of disposable programmable memory chip and and its control method
CN105608050B (en) 2015-12-31 2019-02-01 华为技术有限公司 Date storage method and system
CN108073353A (en) * 2016-11-15 2018-05-25 华为技术有限公司 A kind of method and device of data processing
US10474359B1 (en) 2017-02-28 2019-11-12 Amazon Technologies, Inc. Write minimization for de-allocated memory
US10404674B1 (en) 2017-02-28 2019-09-03 Amazon Technologies, Inc. Efficient memory management in multi-tenant virtualized environment
EP3584990A1 (en) * 2017-03-09 2019-12-25 Siemens Aktiengesellschaft Data processing method, device, and system
CN108229215A (en) * 2017-12-06 2018-06-29 杭州中天微系统有限公司 A kind of scrambled storage device in address and method
US4588991A (en) * 1983-03-07 1986-05-13 Atalla Corporation File access security method and means
US5237611A (en) 1992-07-23 1993-08-17 Crest Industries, Inc. Encryption/decryption apparatus with non-accessible table of keys
EP0856818A2 (en) 1997-01-30 1998-08-05 Motorola, Inc. Apparatus and method for accessing secured data stored in a portable data carrier
US5963646A (en) 1997-03-10 1999-10-05 The Pacid Group Secure deterministic encryption key generator system and method
US20010018743A1 (en) 2000-02-24 2001-08-30 Nec Corporation System and method for preventing an Illegal copy of contents
KR20030002448A (en) 2001-06-29 2003-01-09 주식회사 하이닉스반도체 Memory device having circuit for scrambling data
US20030084308A1 (en) * 2001-10-03 2003-05-01 Van Rijnswou Sander Matthijs Memory encryption
JP2003195758A (en) 2001-12-25 2003-07-09 Kenwood Corp Data processor, interface board and data concealing method
US20030200334A1 (en) * 2002-04-23 2003-10-23 Amiram Grynberg Method and system for controlling the use of addresses using address computation techniques
US6868407B1 (en) 2000-11-02 2005-03-15 Pitney Bowes Inc. Postage security device having cryptographic keys with a variable key length
US20050076228A1 (en) 2003-10-02 2005-04-07 Davis John M. System and method for a secure I/O interface
US20060013162A1 (en) * 2004-07-16 2006-01-19 Hyo Taek Lim Portable digital device and service system having iSCSI-based remote storage service function in wireless environment
US20060120520A1 (en) 2004-09-24 2006-06-08 Fuji Xerox Co., Ltd. Encryption device, encryption processing method and program, and information protection system employing the encryption device
CN1914852A (en) 2004-12-07 2007-02-14 索尼株式会社 Information processing device, information recording medium, information processing method, and computer program
US7185205B2 (en) * 2001-03-26 2007-02-27 Galois Connections, Inc. Crypto-pointers for secure data storage
US7240345B2 (en) 2001-02-16 2007-07-03 Sony Corporation Data processing apparatus and associated method
US20070192592A1 (en) * 2003-09-30 2007-08-16 Infineon Technologies Ag Decryption and encryption during write accesses to a memory
WO2008013154A1 (en) 2006-07-24 2008-01-31 National University Corporation Okayama University Extension filed multiplication program and extension filed multiplication device
US20080095370A1 (en) 2006-10-18 2008-04-24 Rose Gregory G Method for securely extending key stream to encrypt high-entropy data
US7372962B2 (en) 2004-04-06 2008-05-13 Hitachi, Ltd. Storage system executing encryption and decryption processing
US20080152142A1 (en) 2006-12-20 2008-06-26 Mark Buer Memory scrambler unit (msu)
US20080181406A1 (en) 2007-01-30 2008-07-31 Technology Properties Limited System and Method of Storage Device Data Encryption and Data Access Via a Hardware Key
US7412605B2 (en) 2000-08-28 2008-08-12 Contentguard Holdings, Inc. Method and apparatus for variable encryption of data
US7428610B2 (en) 2006-02-14 2008-09-23 Atmel Corporation Writing to flash memory
US20080240422A1 (en) 2007-03-30 2008-10-02 Erdinc Ozturk Efficient advanced encryption standard (AES) Datapath using hybrid rijndael S-Box
US20080301467A1 (en) 2007-05-31 2008-12-04 Kabushiki Kaisha Toshiba Memory Security Device
CN101364249A (en) 2007-08-06 2009-02-11 北京中电华大电子设计有限责任公司 Safety algorithm protection method
US7512760B2 (en) 2005-02-25 2009-03-31 Oki Semiconductor Co., Ltd. Memory control unit and memory system
US20090086965A1 (en) 2007-09-29 2009-04-02 Duncan Glendinning Secure, two-stage storage system
US7526089B2 (en) 2002-04-17 2009-04-28 Panasonic Corporation Device and method for controlling digital bidirectional communication
US20090113217A1 (en) 2007-10-30 2009-04-30 Sandisk Il Ltd. Memory randomization for protection against side channel attacks
US20090172415A1 (en) 2007-12-28 2009-07-02 Oki Semiconductor Co., Ltd. Processor apparatus
US7577852B2 (en) * 2005-01-20 2009-08-18 National University Corporation NARA Institute of Science and Technology Microprocessor, a node terminal, a computer system and a program execution proving method
US7587603B2 (en) 2000-02-07 2009-09-08 Koninklijke Philips Electronics N.V. Protecting content from illicit reproduction by proof of existence of a complete data set via self-referencing sections
CN101542968A (en) 2007-08-28 2009-09-23 松下电器产业株式会社 Key terminal apparatus, lsi for encryption process, unique key producing method, and content system
WO2009136944A1 (en) 2008-05-09 2009-11-12 Hewlett-Packard Development Company, L.P. System and method for providing secure access to system memory
US20090300372A1 (en) 2008-05-28 2009-12-03 Samsung Electronics Co., Ltd. Solid state disk and input/output method
US20090319801A1 (en) 2008-06-04 2009-12-24 Samsung Electronics Co., Ltd. Security-Enhanced Storage Devices Using Media Location Factor in Encryption of Hidden and Non-Hidden Partitions
US20100095133A1 (en) 2007-02-09 2010-04-15 Steffen Peter Reduction of side-channel information by interacting crypto blocks
US20100115286A1 (en) 2008-10-30 2010-05-06 Qualcomm Incorporated Low latency block cipher
US20100138670A1 (en) 2008-11-28 2010-06-03 Fujitsu Limited Storage apparatus and data writing method
WO2010110780A1 (en) 2009-03-23 2010-09-30 Hewlett-Packard Development Company, L.P. System and method for securely storing data in an electronic device
US8001374B2 (en) * 2005-12-16 2011-08-16 Lsi Corporation Memory encryption for digital video
US20130198528A1 (en) 2010-10-05 2013-08-01 Craig A. Walrath Modifying a Length of an Element to Form an Encryption Key
US8572737B2 (en) 2010-04-01 2013-10-29 Cloudflare, Inc. Methods and apparatuses for providing internet-based proxy services
US8813247B1 (en) * 2008-04-07 2014-08-19 Alex I. Alten Providing cryptographic security for objective-oriented programming files
KR20030002488A (en) * 2001-06-29 2003-01-09 현대자동차주식회사 The method of production of coated mirror which is capable of Control transmission
2010-10-05 DE DE112010005842.3T patent/DE112010005842T8/en active Active
2010-10-05 GB GB1304448.2A patent/GB2497464A/en not_active Withdrawn
2010-10-05 CN CN2010800694898A patent/CN103154963A/en not_active Application Discontinuation
US20110064217A1 (en) 2008-05-09 2011-03-17 Fry Walter G System And Method For Providing Secure Access To System Memory
US20120017097A1 (en) * 2009-03-23 2012-01-19 Walrath Craig A System And Method For Securely Storing Data In An Electronic Device
US20130205139A1 (en) 2010-10-05 2013-08-08 Craig A. Walrath Scrambling An Address And Encrypting Write Data For Storing In A Storage Device
International Searching Authority, International Search Report and Written Opinion, Appin No. PCT/US2010/051413, date of mailing Jun. 7, 2011, 8 p.
International Searching Authority, International Search Report and Written Opinion, Appln No. PCT/US2010/051411, date of mailing Jul. 1, 2011, 10 p.
Moore, et al, "Improving Smart Card Security Using Self-Timed Circuits", Asynchronous Circuits and Systems, 2002. Proceedings. Eighth International Symposium on pp. 211,218; Apr. 8-11, 2002.
theamazingking.com, Block Ciphers, May 2010 (3 pages).
tuancom.wordpress.com/2006/02/27/xor/-Tuan's Blog, XOR, 2006 (2 pages).
US Final Office Action dated Dec. 24, 2014; cited in U.S. Appl. No. 13/877,129; 36 pages.
US Office Action dated Aug. 7, 2014; cited in U.S. Appl. No. 13/877,129; 21 pages.
DE112010005842T5 (en) 2013-06-20
KR100240920B1 (en) 2000-01-15 Enhanced data privacy for portable computers
EP2016525B1 (en) 2012-03-14 Encryption apparatus and method for providing an encrypted file system
US9547779B2 (en) 2017-01-17 Method and apparatus for secure execution using a secure memory partition
US9177176B2 (en) 2015-11-03 Method and system for secure system-on-a-chip architecture for multimedia data processing
US8510552B2 (en) 2013-08-13 System and method for file-level data protection
CA2537299C (en) 2011-03-22 On-chip storage, creation, and manipulation of an encryption key
JP6239259B2 (en) 2017-11-29 System on chip, operation method thereof, and system in package including the same
JP4489030B2 (en) 2010-06-23 Method and apparatus for providing a secure boot sequence within a processor
JP2009032282A (en) 2009-02-12 Initializing, maintaining, updating and recovering secure operation within integrated system employing data access control function
KR101397637B1 (en) 2014-05-22 Method and apparatus including architecture for protecting multi-user sensitive code and data
US10079678B2 (en) 2018-09-18 Providing access to encrypted data
US9483422B2 (en) 2016-11-01 Access to memory region including confidential information
US20070195957A1 (en) 2007-08-23 Method and Apparatus for Secure Key Management and Protection
US8190917B2 (en) 2012-05-29 System and method for securely saving and restoring a context of a secure program loader
US9037875B1 (en) 2015-05-19 Key generation techniques
US7392415B2 (en) 2008-06-24 Sleep protection
CN1914849B (en) 2011-11-16 Trusted mobile platform architecture
US7849514B2 (en) 2010-12-07 Transparent encryption and access control for mass-storage devices
US6199163B1 (en) 2001-03-06 Hard disk password lock
US8195957B2 (en) 2012-06-05 Memory randomization for protection against side channel attacks
US20060262928A1 (en) 2006-11-23 Method, device, and system of encrypting/decrypting data
US20080072071A1 (en) 2008-03-20 Hard disc streaming cryptographic operations with embedded authentication
US7849510B2 (en) 2010-12-07 System and method for transparent disk encryption
KR20130093565A (en) 2013-08-22 Security-enhanced computer systems and methods
US8464073B2 (en) 2013-06-11 Method and system for secure data storage
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WALRATH, CRAIG A.;REEL/FRAME:030103/0253