The present disclosure relates generally to flash memory systems, and more particularly, to methods and apparatus for providing a secure channel associated with a flash device.
Typically, a flash memory may be well suited for wireless electronic devices such as cellular telephones because a flash memory may retain digital information without power. In particular, a flash memory (e.g., a flash random access memory (RAM)) is a non-volatile memory that may be erased or written in units of blocks. Instead of erasing or writing at a byte level such as an electrically erasable programmable read-only memory (EEPROM), a flash memory may update or change stored data faster by erasing or writing in block sizes.
In general, methods and apparatus for providing a secure channel associated with a flash device are described herein. The methods and apparatus described herein are not limited in this regard.
Referring to
While the boot ROM 110, the host controller 120, and the integrated security module 130 are depicted as separate blocks, these components may be integrated within a central processing unit (CPU) 150. The CPU 150 may be operatively coupled to the flash device 140 via a flash interface 160. For example, the flash interface 160 may include a bus, and/or a direct link between the boot ROM 110, the host controller 120, the integrated security module 130, and the flash device 140.
In general, the boot ROM 110 may provide boot code to the flash device 140 for initializing a secure channel between the integrated security module 130 and the flash device 140. To protect against threats such as viruses, worms, or bad code, for example, the integrated security module 130 and the flash device 140 may use the secure channel to authenticate an operation (e.g., a command from the integrated security module 130). For example, the operation may be a read operation, a write operation, a patch operation, a key operation, and/or other suitable operations. As described in detail below, the secure channel may operate in accordance with a hash-based authentication algorithm instead of an asymmetric authentication algorithm (e.g., public key encryption developed by Rivest, Shamir, and Adleman (RSA)) to increase performance of the flash memory system 100.
The host controller 120 (e.g., an application processor) may perform a variety of operations for the CPU 150. For example, the host controller 120 may process operations ranging from running an operating system (OS) or an application to invoking the boot ROM 110 as mentioned above.
The integrated security module 130 may include an encryptor 170 and a secure key storage 172. In general, the integrated security module 130 may be a dedicated module to process security operations. For example, the host controller 120 may offload security operations to the integrated security module 130 so that the host controller 120 may be available for other processing associated with the flash memory system. As described in detail below, the encryptor 170 may encrypt or wrap a cryptographic key generated and provided by the flash device 140. The secure key storage 172 may locally store the encrypted key from the encryptor 170 at the integrated security module 130.
The flash device 140 may include an integrated controller 180, a flash array 190, a random number generator (RNG) 192, a secure hash generator (SHG) 194, and a secure key storage (SKS) 196. In general, the flash device 140 may internally authenticate operations to protect itself against malicious and/or inadvertent modifications. Prior to performing a requested operation such as read, write, patch, key, and/or other suitable operations, the flash device 140 may authenticate the requested operation internally. If the requested operation is authentic, the flash device 140 may perform the operation. Otherwise if the requested operation is not authentic, the flash device 140 may disregard the request.
As described in detail below, the integrated controller 180 may initialize a secure channel between the integrated security module 130 and the flash device 140, and process a command request from the integrated security module 130 in response to receipt of the command request via the secure channel. Briefly, the integrated controller 180 may also include a hash value comparator (HVC) 182 to compare hash values generated by the integrated security module 130 and the flash device 140. The flash array 190 may store data, code, and/or other suitable information. The random number generator 192 may generate a nonce value, which may be provided to the integrated security module 130 to generate the encrypted key. The secure hash generator 194 may generate the cryptographic key, which may also be provided to the integrated security module 130 to generate the encrypted key. The secure key storage 196 may locally store the cryptographic key at the flash device 140. The secure key storage 196 may also store the encrypted key from the integrated security module 130. The methods and apparatus described herein are not limited in this regard.
While the components shown in
To protect against threats/attacks (e.g., viruses, worms, or bad code) and/or to increase performance, the flash memory system 100 may include a secure channel between the integrated security module 130 and the flash device 140. In the example of
The integrated security module 130 (e.g., via the encryptor 170) may encrypt or wrap the HMAC key (e.g., a wrapped HMAC key). For example, the encryptor 170 may operate in accordance with encryption standards developed by the National Institute of Standards and Technology (NIST) such as Advanced Encryption Standard (AES) (published Nov. 26, 2001), Data Encryption Standard (DES) (published Jan. 15, 1977), variations and/or evolutions of these standards, and/or other suitable encryption standards, algorithms, or technologies. Accordingly, the integrated security module 130 may store the wrapped HMAC key in the secure key storage 172 and also in the secure key storage 196 of the flash device 140. In one example, the integrated security module 130 may use write operations to store the wrapped HMAC key in the flash device 140. External devices relative to the flash memory system 100 and/or other components of the flash memory system 100 (e.g., the host controller 120) do not have or know the wrapped HMAC key shared between the integrated security module 130 and the flash device 140. As a result, the secure channel between the integrated security module 130 and the flash device 140 may be used to protect against malicious or inadvertent modifications. The methods and apparatus described herein are not limited in this regard.
With a secure channel initialized as described in connection with
In response to receipt of the command request from the integrated security module 130, the flash device 140 (e.g., via the random number generator 192) may generate a nonce value. For example, the nonce value may be a random or pseudo-random number to protect against-replay attacks in which valid data transmission is maliciously or fraudulently replayed or delayed. The flash device 140 may provide the integrated security module 130 with the nonce value (320).
Based on the wrapped HMAC key as described in connection with the secure channel initialization system 200 of
To determine whether the command is from the integrated security module 130, the flash device 140 (e.g., via the integrated controller 180 and/or the secure hash generator 194) may generate a second hash value associated with the command based on the wrapped HMAC key generated by the secure channel initialization system 200 of
To identify a condition indicative of authenticity associated with the command from the integrated security module 130, the flash device 140 (e.g., via the hash value comparator 182 of the integrated controller 180) may compare the second hash value with the first hash value from the integrated security module 130. If the first and second hash values are identical, the flash device 140 may determine that the command is from the integrated security module 130 (e.g., the command is authentic). Accordingly, the flash device 140 may perform the command of the command request from the integrated security module 130. Otherwise if the first and second hash values are not identical, the flash device 140 may not perform the command of the command request.
The flash device 140 may generate and provide a response to the integrated security module 130 (340). The response may indicate the status of the command request. Based on the response, the integrated security module 130 may determine whether the flash device 140 performed the command of the command request or rejected the command request.
Although the above examples are described with respect to a HMAC key, the methods and apparatus described herein may use other suitable cryptographic keys, message authentication codes, and/or digital signatures. Further, although a particular order of actions is illustrated in
Further, although a particular order of actions is illustrated in
In the example of
Further, the flash device 140 may provide the HMAC key to the integrated security module 130 (block 440). The integrated security module 130 may encrypt (e.g., wrap) the HMAC key from the flash device 140. In particular, the encryptor 170 may encrypt the HMAC key to produce a wrapped HMAC key, and the secure key storage 172 may store the wrapped HMAC key. The integrated security module 130 may provide the wrapped HMAC key to the flash device 140.
As noted above, the flash device 140 may receive the wrapped HMAC key from the integrated security module 130 (block 450). Accordingly, the flash device 140 may store the HMAC key in the secure key storage 196 (block 460). As a result, a secure channel between the integrated security module 130 and the flash device 140 has been initialized to communicate command requests for processing as described in connection with
Turning to
The flash device 140 (e.g., via the random number generator 192 and/or the secure hash generator 194) may generate a nonce value (block 520). As noted above, the nonce value may be a random number or a pseudo-random number that is used once to protect against replay attacks. The flash device 140 may provide the nonce value to the integrated security module 130 (block 530). Based on the nonce value from the flash device 140 and the wrapped HMAC key stored in the secure key storage 172, the integrated security module 130 may generate a first hash value associated with the command of the command request. Accordingly, the integrated security module 130 may provide the command, the first hash value, and the nonce value to the flash device 140 for processing.
As noted above, the flash device 140 may receive the command, the first hash value, and the nonce value from the integrated security module 130 (block 540). Based on the wrapped HMAC key stored in the secure key storage 196, the flash device 140 (e.g., via the integrated controller 180 and/or the secure hash generator 194) may generate a second hash value associated with the command of the command request (block 550). To determine the authenticity of the command, the flash device 140 (e.g., via the hash value comparator 182 of the integrated controller 180) may compare the first and second hash values (block 560). That is, the flash device 140 may determine whether the command is from the integrity security module 130 and whether the flash device 140 received the command from the integrity security module 130 in a timely manner. If the first hash value is equal to the second hash value, the flash device 140 (e.g., via the integrated controller 180) may perform the command as requested by the integrated security module 130 (block 570). The flash device 140 may send a response indicative of the status of the command to the integrated security module 130 (block 580). For example, the response may indicate that the flash device 140 performed, is currently performing, or will perform the command.
Otherwise if the first and second hash values are different at block 560, control may proceed directly to block 580. In one example, the response may indicate that the flash device 140 rejected the command request and did not perform the command. The methods and apparatus described herein are not limited in this regard.
While the methods and apparatus disclosed herein are described in
The processor system 2000 illustrated in
The memory controller 2012 may perform functions that enable the processor 2020 to access and communicate with a main memory 2030 including a volatile memory 2032 and a non-volatile memory 2034 via a bus 2040. The volatile memory 2032 may be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM), and/or any other type of random access memory device. The non-volatile memory 2034 may be implemented using flash memory, Read Only Memory (ROM), Electrically Erasable Programmable Read Only Memory (EEPROM), and/or any other desired type of memory device.
The processor system 2000 may also include an interface circuit 2050 that is coupled to the bus 2040. The interface circuit 2050 may be implemented using any type of interface standard such as an Ethernet interface, a universal serial bus (USB), a third generation input/output interface (3GIO) interface, and/or any other suitable type of interface.
One or more input devices 2060 may be connected to the interface circuit 2050. The input device(s) 2060 permit an individual to enter data and commands into the processor 2020. For example, the input device(s) 2060 may be implemented by a keyboard, a mouse, a touch-sensitive display, a track pad, a track ball, an isopoint, and/or a voice recognition system.
One or more output devices 2070 may also be connected to the interface circuit 2050. For example, the output device(s) 2070 may be implemented by display devices (e.g., a light emitting display (LED), a liquid crystal display (LCD), a cathode ray tube (CRT) display, a printer and/or speakers). The interface circuit 2050 may include, among other things, a graphics driver card.
The processor system 2000 may also include one or more mass storage devices 2080 to store software and data. Examples of such mass storage device(s) 2080 include floppy disks and drives, hard disk drives, compact disks and drives, and digital versatile disks (DVD) and drives.
The interface circuit 2050 may also include a communication device such as a modem or a network interface card to facilitate exchange of data with external computers via a network. The communication link between the processor system 2000 and the network may be any type of network connection such as an Ethernet connection, a digital subscriber line (DSL), a telephone line, a cellular telephone system, a coaxial cable, etc.
Access to the input device(s) 2060, the output device(s) 2070, the mass storage device(s) 2080 and/or the network may be controlled by the I/O controller 2014. In particular, the I/O controller 2014 may perform functions that enable the processor 2020 to communicate with the input device(s) 2060, the output device(s) 2070, the mass storage device(s) 2080 and/or the network via the bus 2040 and the interface circuit 2050.
While the components shown in
Although certain example methods, apparatus, and articles of manufacture have been described herein, the scope of coverage of this disclosure is not limited thereto. On the .contrary, this disclosure covers all methods, apparatus, and articles of manufacture fairly falling within the scope of the appended claims either literally or under the doctrine of equivalents. For example, although the above discloses example systems including, among other components, software or firmware executed on hardware, it should be noted that such systems are merely illustrative and should not be considered as limiting. In particular, it is contemplated that any or all of the disclosed hardware, software, and/or firmware components could be embodied exclusively in hardware, exclusively in software, exclusively in firmware or in some combination of hardware, software, and/or firmware.