Method and device for fast and secure boot from a non-volatile memory device and corresponding system - Patents.com
By having the NVM device generate and transmit a code integrity value for authentication, the host device can quickly and efficiently authenticate the NVM device, reducing boot time and making it independent of code size, thereby addressing the inefficiencies of conventional boot sequences.
Patent Information
- Application Number
- JP2023520235
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-12-15
- Filing Date
- 2021-10-01
- Publication Date
- 2025-04-28
- Estimated Expiration
- 2041-10-01
AI Technical Summary
Conventional boot sequences in systems with nonvolatile memory (NVM) devices face increased boot times as the size of the software or firmware increases, which can be problematic in systems with limited bus response times, such as those using a controller area network (CAN).
The proposed solution involves the NVM device checking the integrity of its own code and generating a code integrity value, which is then transmitted to the host device for authentication. This approach allows the host device to authenticate the NVM device without assessing the host code, thereby reducing the time required for boot operations and making it independent of the code size.
This method significantly reduces boot time and makes it independent of the code size, as the authentication process is based on a fixed-size code integrity value rather than the entire code, thus improving system efficiency and responsiveness.
Smart Images

Figure 0007669482000001 
Figure 0007669482000002 
Figure 0007669482000003
Abstract
Description
[Technical field]
[0001] Related Applications This application is an international application of U.S. Patent Application No. 17 / 122,927, filed December 15, 2020, and claims priority to and the benefit of U.S. Provisional Patent Application No. 63 / 086,750, filed October 2, 2020, the entire contents of which are incorporated herein by reference.
[0002] The present disclosure relates generally to a system having a host device that executes code stored on a non-volatile memory device, and more particularly to a system in which the host device authenticates code stored on a non-volatile memory device. [Background technology]
[0003] A system including a processor may have a boot operation in which code, e.g., software (SW) or firmware (FW), is loadable from a memory device for execution by the processor. The boot operation may occur, for example, in response to a power-on and / or reset event. The code for the boot operation is typically stored in a non-volatile memory (NVM) device.
[0004] The ability to have a "secure" boot can be important for many systems. A secure boot relies on establishing the integrity of the code before the code is executed by the processor. Traditionally, the integrity of the code can be established by a host device that assesses the code content at system boot-up. Assessing the code content depends on the size of the code (e.g., SW image) stored by the non-volatile device. The total boot-up time can be time=tbl+tapp tapp=BWmeasure×Sizeapp where tbl is the boot loader loading time, tap is the application assessment (integrity check) time, BWmeasure is the transfer rate (e.g., time per byte), and Sizeapp is the size of the SW image (e.g., bytes). Thus, the boot-up time may depend on the size of the SW image.
[0005] 17 is a block diagram illustrating a conventional boot-up sequence for a system 1701. The system 1701 may include an NVM device 1703 and a host device 1705. In the boot-up sequence, a power-on reset circuit 1707-0 in the NVM device 1703 detects a power-on or reset condition, powers up the NVM device 1703, and enables the NVM device 1703.
[0006] Within the host device 1705, a host POR circuit 1707-1 may detect a power-on or reset condition. In response, the host device 1705 may perform a read only memory (ROM) boot operation 1709, which may load boot data from the ROM. The host device 1705 may then perform a bootloading operation 1715, which may include reading the bootloading data 1711 from the NVM device 1703. The integrity of the bootloading data 1711 may be subject to an assessment operation 1717-0, which may include generating a hash value from the bootloading data 1711 via a hash function 1713 and / or decrypting the bootloader data via a decryption function 1719. The ROM boot operation 1709 and the bootloading operation 1715 may occur for a bootload time tbl 1721.
[0007] Next, the host device 1705 may perform an application software (AppSW) integrity operation 1723, which may include an assessment operation 1717-1 of the AppSW 1725 stored on the NVM device 1703. The AppSW integrity operation 1723 may take up a time tapp 1727, which may vary according to the size of the AppSW, as described above.
[0008] A drawback of a conventional boot sequence such as that of Figure 17 is that the boot time increases as the SW size increases. As an example, this can be a problem in some systems, such as systems operating on a Controller Area Network (CAN), where the boot time can exceed the bus response time limit for larger SW sizes. [Brief description of the drawings]
[0009] [Figure 1] 1 is a block diagram sequence illustrating an authentication method for a system having a host device and a non-volatile memory (NVM) device according to one embodiment. [Diagram 2] 1 is a block diagram illustrating a method for authenticating software stored in an NVM device according to one embodiment. [Diagram 3] 1 is a block diagram of a system and corresponding method for authenticating an NVM device state using symmetric cryptography, according to one embodiment. [Figure 4] 1 is a block diagram of a system and corresponding method for authenticating an NVM device state using asymmetric cryptography, according to one embodiment. [Diagram 5] FIG. 1 is a block diagram of a system and corresponding method for authenticating an NVM device state using asymmetric cryptography in accordance with another embodiment. [Figure 6] FIG. 2 illustrates a conventional boot time compared to the boot time of various embodiments. [Figure 7] FIG. 2 is a block diagram of an NVM device according to one embodiment. [Figure 8] FIG. 2 is a block diagram of an NVM array that may be included in one embodiment. [Figure 9] FIG. 2 is a block diagram of an NVM device of an integrated circuit according to one embodiment. [Figure 10] FIG. 2 is a block diagram of a host device according to one embodiment. [Figure 11] FIG. 1 is a block diagram of an automobile system according to one embodiment. [Figure 12] FIG. 2 is a block diagram of an automobile system according to another embodiment. [Figure 13] FIG. 2 is a flow diagram of a method for authenticating an NVM device according to one embodiment. [Figure 14] FIG. 2 is a flow diagram of a method for authenticating a host device according to one embodiment. [Figure 15] FIG. 2 is a flow diagram of an authentication method according to one embodiment. [Figure 16] FIG. 1 is a flow diagram of a code (e.g., firmware) update operation according to one embodiment. [Figure 17] FIG. 1 is a block diagram of a conventional secure boot operation. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0010] According to an embodiment, a non-volatile memory (NVM) device can store host code for execution by a host device and NVM code for execution by the NVM device itself. In response to a predetermined condition (e.g., power on or reset), the NVM device can check the integrity of the NVM code. The NVM device can store a code integrity value, which is transmitted to the host device in an authentication code. The host device can authenticate the code stored by the NVM based on the authentication code, rather than by assessing the stored host code.
[0011] In some embodiments, the code integrity value may be a hash value of a known good version of the NVM code.
[0012] In some embodiments, the NVM device can encrypt the authentication code with a private key, and the host device can decrypt the authentication code with a public key.
[0013] In some embodiments, the NVM device can generate a hash value of the NVM code that is read by the host device. The host device can compare the hash value read from the NVM device to a known valid hash value to authenticate the NVM device, and therefore the host code stored by the NVM device.
[0014] In the various embodiments that follow, similar items are referred to by reference numbers that have the same reference number but whose first digit corresponds to the drawing number.
[0015] 1A-1C are block diagrams of a system 100 according to one embodiment. The system 100 can include an NVM device 102 and a host device 104. The NVM device 102 can include an NVM user space 106, a host firmware (FW) 108, an NVM firmware 109, a code integrity value 110, and a code integrity checker 112. The NVM user space 106 can include one or more arrays of NVM cells for storing data including the host FW (e.g., code) 108 and the NVM FW 109. The NVM array can take any suitable form including, but not limited to, a NOR configuration. The host FW 108 can be a firmware image executable by the host device 104. The NVM FW 109 can be a firmware image executable by the NVM device 102. In some embodiments, the NVM FW 109 is stored in a secure memory area of the NVM device 102 and is not accessible outside of the NVM device or is accessible only through a secure access procedure.
[0016] The code integrity value 110 can be a value that represents the integrity of the NVM device 102 and therefore can authenticate the integrity of the host FW 108. The code integrity value 110 can be used by the host device 104 to authenticate the NVM device 102, and therefore does not require the host device 104 to evaluate the host FW 108 by an assessment operation, as in conventional methods. The code integrity value 110 can have a bit size that does not change according to the size of the host FW 108. In some embodiments, the code integrity value 110 can be a hash value generated by a hashing function executed on a known valid version of the NVM FW 109. In some embodiments, the code integrity value 110 can be stored in a secure location (not shown) of the NVM device 102. The secure location can be a storage area that can only be accessed by a security procedure (authentication, as an example). In some embodiments, the code integrity value 110 can be stored in an unencrypted state (e.g., in a secure area). However, in other embodiments, such a value can be stored on the NVM device 102 in an encrypted state.
[0017] The code integrity checker 112 may assess the NVM FW 109 for use in assessing the integrity of the NVM device 102 (and thus the host FW 108 stored by the NVM device 102). Such an operation may take any suitable form, including assessing all or a portion of the NVM FW 109. In some embodiments, the code integrity checker 112 may generate a single hash value from the NVM FW 109. In some embodiments, such a generated hash value may be compared to a known valid hash value (e.g., the code integrity value 110). The code integrity checker 112 may take any suitable form, including, but not limited to, a logic circuit designed for an NVM processor and / or function that executes stored instructions. In some embodiments, if the code integrity checker 112 determines that the stored NVM FW 109 is not valid, the NVM 102 may prevent any access to the host FW 108 (cannot be guaranteed to be valid).
[0018] The host device 104 can communicate with the NVM 102 via any suitable means, including a wired or wireless connection. In some embodiments, the host device 104 can communicate with the NVM device 102 over a serial bus. The host device 104 can include an authentication function 114 and a host FW execution function 116. The authentication function 114 can authenticate the FW 108 using a code integrity value 110 provided by the NVM 102. The host FW execution function 116 can execute the host FW 108 stored on the NVM device 102 to provide various system applications. In some embodiments, the host FW execution function 116 can be an eXecute-in-place (XIP) function that executes code directly from the NVM 102. However, in other embodiments, the host FW execution function 116 can load the host FW 108 into a host memory (e.g., DRAM, not shown) on the host device 104. The host device 104 can then execute the host FW from the host memory.
[0019] The operation of the system 100 will now be described.
[0020] 1A, in response to a condition, NVM device 102 may check the integrity of NVM FW 109 (1). In some embodiments, such conditions may include power-on or reset. However, the integrity check operation may be triggered in response to any other suitable condition, including a predefined command issued by host device 104. The FW integrity check operation (1) may take any of the forms described herein or equivalent.
[0021] Referring to FIG. 1B, the NVM device 102 can transmit the encrypted code integrity value 110′ to the host device 104 (2). The host device 104 can authenticate the NVM FW 109 based on the encrypted code integrity value 110′. In some embodiments, the host device 104 can access the NVM device 102 to read additional data in an authentication operation (e.g., to retrieve a hash value of the currently stored FW 108). The encrypted code integrity value 110′ can have a size that is independent of the size of the host FW 108 and thus is accessible in a given amount of time (e.g., one read operation). As a result, the time for a boot operation can be faster and / or more deterministic than conventional methods. Authenticating the NVM FW 109 can authenticate the state of the NVM device 102 and thus the state of the host FW 108 stored by the NVM device 102.
[0022] 1C, once host device 104 has authenticated host FW 108, host device 104 may access host FW 108 for execution by FW execution function 116 (3). In some embodiments, host FW 108 may be executed in-place. In other embodiments, FW 108 may be loadable into host memory (not shown).
[0023] According to an embodiment, instead of the host device proving the integrity of the code (e.g., SW, FW) stored in the NVM device by an assessment operation, the host device can prove the integrity of the cryptographic state of the NVM device. Proving that the hardware (HW) and NVM FW of the NVM device are in a valid cryptographic state can prove that no tampering has occurred with the NVM device. That is, the content (e.g., code) programmed into the NVM device can be verified to be correct in a valid cryptographic state. Thus, if the NVM device has not been tampered with, the content (e.g., host code) stored in the NVM device cannot have been compromised.
[0024] In contrast to the cryptographic state of an image (e.g., SW) stored by an NVM device, proving the cryptographic state of an NVM device can be a constant time operation and is independent of image size. This is in contrast to conventional methods such as that shown in FIG.
[0025] 2 is a block diagram of a system 200 illustrating a boot-up sequence according to one embodiment. The system 200 may include a secure NVM device 202 and a host device 204. The NVM device 202 may store application software (AppSW) 208 for execution by the host device 204. The NVM device 202 may include a power-on reset (POR) circuit 218-0, a hashing function 220-0, a boot loader code 222, and a cryptographic function 224-0. The host device 204 may include a POR circuit 218-1, a host hashing function 220-1, and an assessment function 228.
[0026] During a boot-up sequence, in response to a power-on or reset condition, POR circuit 218-0 may power up NVM device 202. In some embodiments, hash function 220-0 may be used to generate a code integrity value from the NVM code stored by NVM device 202.
[0027] Within the host device 204, the POR circuit 218-1 can start up the host device 204, which can enter a read-only memory (ROM) boot operation 226. This can include a processing circuit (not shown) accessing read-only memory (ROM) boot code and enabling initial functionality.
[0028] Once the host device 204 is powered and functional, it may read the boot loader code from the NVM device 202 at 234-0. Operation of the ROM boot code may cause the host device 204 to perform an assessment operation 228 on the boot loader code 222 and load the boot loader code 222 if it is valid. Operation of the installed boot loader code 222 in the boot loading function 222 may cause the host device 204 to authenticate the NVM device 202 (and thus its stored AppsSW 208). In some embodiments, the host device 204 may access the authentication data with a read command, etc. The authentication data 234-1 read by the host device 204 from the NVM device 202 may be of limited size and is independent of the size of the firmware stored by the NVM device 202. The authentication data 234-1 may include a code integrity value or equivalent as described herein.
[0029] Once the state of NVM device 202 has been authenticated, host device 204 may execute application execution operations 232, which may access and execute software (e.g., AppsSW 208) stored on NVM device 202. In some embodiments, this may include reading 234-2 the software from NVM device 202 for execution in place or for storage and execution within host memory on host device 204.
[0030] The time required for host device 204 to boot up and unlock (e.g., authenticate) NVM device 202 (shown as tbl_unlock 236) may include ROM boot operation 226 and boot loader operation 230. It should be appreciated that, in contrast to the conventional boot-up sequence of Figure 17, the time tbl_unlock 236 may be a set value that is independent of the size of the firmware stored by NVM device 202, because there is no assessment of this type of firmware, only an assessment of boot loader code 222.
[0031] While the authentication operation between the NVM device and the host device may take any suitable form, in some embodiments the authentication may be based on symmetric cryptography. Figure 3 illustrates one such embodiment.
[0032] 3 shows a system 300 including an NVM device 302 and a host device 304. In the system 300, it is assumed that the NVM device 302 is able to check its own FW integrity at boot time. Additionally, the NVM device 302 and the host device 304 share a secret key.
[0033] According to an embodiment, upon boot (e.g., power on or reset), the host device 304 may send a challenge to the NVM device 302. In response to the challenge, the NVM device 302 may generate a response. The host device 304 may validate the response. If the NVM device 302 response is valid, the NVM device 302 (and its stored FW) may be authenticated, and the FW is accessible for execution by the host device 304.
[0034] 3, the NVM device 302 may communicate with the host device 304 over one or more connections. Such connections may include wired or wireless connections, and in certain embodiments, may include a serial bus.
[0035] The NVM device 302 can be a secure device with storage locations that are not accessible from outside the NVM device 302 without some authentication or other security procedures. The NVM device 302 can include a user space 306, which can store a secret key 338, generate an authentication code 310, and store NVM code that can be checked to generate a code check value 312. The user space 306 can include storage locations that can be accessed by other devices (e.g., the host device 304) and include a host FW for execution by the host device 304. The user space 306 can be formed by one or more NVM arrays. The secret key 338 can be stored in a secure location on the NVM device 302. In some embodiments, such a secure location can be an NVM array or a portion of an NVM array that is designed for secure access. The authentication code generator 310 can generate an authentication code according to any suitable method, and in the illustrated embodiment, can generate a hash-based message authentication code (HMAC). The authentication code (R) can be generated by an encrypted code integrity value (FW Hash). The code integrity value (FW Hash) may be used to validate the NVM FW stored by NVM device 302. In the illustrated embodiment, FW Hash may be a hash value generated from a known good NVM FW image. Code integrity value generator 312 may generate a code check value (FW Hash_r) for the NVM FW currently stored by NVM device 302 (but not necessarily known to be valid).
[0036] The host device 304 can store the same secret key 338 as the NVM device 302, can generate a host nonce value (Nonce_host) 340, and can generate a check authentication value 310' and compare authentication value 344 in the same manner as the NVM device 302.
[0037] Having described the components of system 300, the authentication operations for system 300 will now be described.
[0038] In (1), the NVM device 302 and the host device 304 may store the same secret key (for symmetric authentication).
[0039] At (2), the NVM device 302 may generate a code check value (FW Hash_r) for the NVM FW. The code check value (FW Hash_r) may represent an assessment of the NVM FW currently stored on the NVM device 302. In the illustrated embodiment, the FW Hash_r may be a hash value of the NVM FW generated by the same hash function used to generate the valid code integrity value (FW Hash) stored by the NVM device 302.
[0040] At (3), the host device 304 can read the code check value (FW Hash_r) 342 from the NVM device 302. This is in contrast to the conventional method where the host device 304 can read all of the host FW from the NVM user space 306 for an assessment operation.
[0041] At (4), the host device 304 may send a host nonce value (nonce_host) to the NVM device 302. The host nonce value may be a one-time value generated by any suitable method, including but not limited to looking up a stored nonce value or using a nonce generator (e.g., a random or pseudorandom number generator) located on the host device 304. Nonce_host may be sent to the NVM device 302 in any suitable manner, including but not limited to transmitting a predefined command that includes the nonce value or writing to a predefined location (e.g., a register) of the NVM device 302.
[0042] At (5), the NVM device 302 may generate an authentication code (R) 310 and transmit it to the host device 304. In the illustrated embodiment, the authentication code (R) 310 may be generated by encrypting, with a private key 338, the following: a code integrity value FW Hash, a nonce_host value, and a nonce value (nonce_nvm) generated by the NVM. The resulting encrypted values may be subjected to an HMAC function to generate a hash value to generate R. The authentication value R may then be transmitted to the host device 304 along with the nonce_nvm value. The values R and nonce_nvm may be transmitted to the host device 304 in any suitable manner, such as, but not limited to, as data in response to a read request (e.g., a register read) from the host device 304.
[0043] At (6), the host device 304 may generate a comparative authentication code (R'). In the illustrated embodiment, the comparative authentication code (R') 310' may be generated by encrypting the code integrity value FW Hash_r read from the NVM device 302, the nonce_host value, and the nonce_nvm value received from the NVM device with a private key 338. The resulting encrypted values may be subjected to the same HMAC function as the NVM device to generate R'.
[0044] At (7), the host device 304 can compare the authentication code (R) 310 received from the NVM device 302 with its generated comparison authentication code (R') 310'. If the two authentication codes match (R'=R), the NVM device 302 can be authenticated and the host device 304 can access and use the FW stored in the user space 306.
[0045] 3 illustrates the use of one particular authentication code (HMAC), embodiments herein may include any suitable authentication code and authentication code process, including, but not limited to, cryptographically based authentication codes, such as AES-CMAC or other cryptographic functions. Other embodiments may include a unique device identifier, including a compound device identifier, such as one generated by a Device Identity Composition Engine (DICE).
[0046] The authentication operations between the NVM device and the host device may involve symmetric cryptography, although other embodiments may utilize asymmetric cryptography. Figure 4 illustrates one such embodiment.
[0047] 4 shows a system 400 including an NVM device 402 and a host device 404. In the system 400, it is assumed that the NVM device 402 can check its own NVM FW integrity at boot time, and that a digital certificate 410 is stored by the NVM device 402. The digital certificate 410 can be generated and signed by an entity (e.g., an original equipment manufacturer, OEM) associated with the host device 404 using a private key. The digital certificate 410 can include a public key that corresponds to the private key. The digital signature can include an encrypted code integrity value (e.g., a FW hash). It is also assumed that the host device 404 stores its own version of the public key.
[0048] According to an embodiment, at boot time, the host device 404 can validate the public key and the digital signature provided by the NVM device 402. The host device 404 can then compare the code integrity value to a code check value that was generated by the NVM device 402 and assesses its stored NVM FW.
[0049] Still referring to FIG. 4, the NVM device 402 can communicate with the host device 404 over one or more connections. The NVM device 402 can include a user space 406, store a digital certificate 410, and store NVM code that can be checked to generate a code integrity value 412. The digital certificate 410 can include a public key 446 and a code integrity value. In some embodiments, the digital certificate 410 can be compatible with the X.509 standard. The digital certificate 410 can include a digital signature 452 that is generated by a private key. The digital certificate 410 can be loaded into the NVM device 402 by the host device 404, as described below.
[0050] The host device 404 may store the same public key 446' as the NVM device 402. In some embodiments, the public key 446' may be stored in a non-volatile circuit located on the host device 404, such as a one-time programmable (OTP) memory cell or an "eFuse" type circuit. The host device 404 may also perform other functions, as described below.
[0051] The authentication operation for system 400 is now described.
[0052] At (1), the host device 404 can install a digital certificate 410 into the NVM device 402. In the illustrated embodiment, the digital certificate 410 can have a public key, a valid code integrity value (FW hash) 450, and a digital signature that is signed by a private key that corresponds to the public key.
[0053] At (2), the NVM device 402 may generate a code check value (FW Hash_r) for the stored NVM FW. The FW Hash_r value may be a hash value of the stored NVM FW generated by the same hash function used to generate the code integrity value (FW Hash) included in the digital certificate 410.
[0054] At (3), the host device 404 may receive the public key 446 stored by the NVM device 402 and perform a comparison operation 448 with its own stored public key 446′. If the public keys match, the authentication operation may continue. If the public keys do not match, the NVM device 402 may fail authentication. In some embodiments, such a comparison operation 448 may include reading from an addressable location (e.g., a memory address and / or a register address) of the NVM device 402.
[0055] At (4), the host device 404 may perform a signature verification operation 456 to verify the digital signature 452 provided by the NVM device 402. The NVM device 402 may provide the host device 404 with the digital signature 452 corresponding to the digital certificate 410. The digital signature 452 may be a value previously encrypted by a private key corresponding to the public key 446 / 446′. In some embodiments, the NVM device 402 may use a hash function 454 to generate a hash value from all or a portion of the digital certificate (e.g., public key 446, FW hash 450). The resulting hash value may be provided to the host device 404 for use in the authentication process. In such a case, the digital signature 452 may correspond to a hash value (e.g., including a hash value encrypted by a private key). However, in other embodiments, the signature verification operation 456 may include the NVM device 402 transmitting the digital certificate 410 having the corresponding digital signature 452. Using public key 446', host device 404 can decrypt digital signature 452. If the decrypted signature matches its corresponding message (e.g., hash value, digital certificate), then a code integrity value (FW Hash) included in the digital certificate can be validated. In some embodiments, the signature verification value can be sent from NVM device 402 to host device 404 in response to a host device command (e.g., a read command from a memory or register address).
[0056] At (5), the host device 404 can compare the code integrity value (FW Hash) to the code check value (FW Hash_r) generated by the NVM device 402. If the two values match (FW Hash=FW Hash_r), the NVM device 402 can be authenticated and the host device 404 can access and use the host FW stored in the user space 406. In some embodiments, the code integrity value (FW Hash) could have been received along with the digital certificate 410. However, in embodiments in which a hash value is used for signature verification, the host device 404 can read the valid code integrity value (FW Hash) from the NVM device 402.
[0057] An embodiment may include authentication by asymmetric cryptography utilizing a private key (e.g., an OEM private key) originating from the host device, while other embodiments may utilize a private key originating from the NVM device. Figure 5 is a block diagram of one such embodiment.
[0058] 5 shows a system 500 that includes an NVM device 502 and a host device 504. In system 500, it is assumed that NVM device 502 can check its own NVM FW integrity at boot time and can securely store a secret encryption key (the NVM private key) that is not accessible by host device 504. It is also assumed that host device 504 stores a public key that corresponds to the NVM private key.
[0059] According to an embodiment, at boot time, the host device 504 can send a nonce value to the NVM device 502. The NVM device 502 can send back a certificate with a digital signature that is generated on the fly. The host device 504 can validate the signature to authenticate the NVM device 502.
[0060] 5, the NVM device 502 can communicate with the host device 504 over one or more connections. The NVM device 502 can include a private key (NVM private key) 558 and a corresponding public key (NVM public key) 560. The NVM device 502 can also use the NVM private key to generate code check values and digital signatures on the fly.
[0061] The host device 504 may store the same public key 560' as the NVM device 502. In some embodiments, the public key 560' may be stored in non-volatile circuitry located on the host device. The host device 504 may also perform other functions, as described below.
[0062] The authentication operation for system 500 is now described.
[0063] At (1), the NVM device 502 may check 512 the integrity of its own NVM FW. In some embodiments, this type of action may include generating a hash value from the NVM FW and comparing it to a valid hash value, which may be stored, for example, in a secure location on the NVM device 502. In some embodiments, the NVM device 502 may indicate the integrity (or lack thereof) of the NVM FW. In some embodiments, if the NVM FW integrity check 512 fails, the NVM device may lock out any access to the FW it stores, including the host FW.
[0064] In (2), the host device 504 may send a nonce value (nonce_host) to the NVM device 502. In some embodiments, this type of action may include, but is not limited to, the host device sending a command with the nonce_host value and / or writing the nonce_host value to a predetermined location (e.g., a register or memory address) in the NVM device 502.
[0065] At (3), the NVM device 502 can generate a digital signature 562 using the NVM private key 558. The digital signature 562 can be generated “on the fly” (e.g., in response to the host device 504 initiating an authentication operation). The digital signature 562 can be generated from a digital certificate, which includes the NVM public key 560 (stored by the NVM device 502), the received nonce_host value 540, and optionally the FW_State value. The digital signature 562 can be generated from the actual value of the digital certificate, or from a hash value generated from the digital certificate, or from a combination of both. In some embodiments, the NVM device 502 can transmit all or a portion of the digital certificate to the host device 504.
[0066] At (4), the host device 504 may compare a public key (560') that the host device 504 stores with the public key (560) received from the NVM device 502. In some embodiments, the host device 504 may receive the public key (560) from the NVM device 502 as part of a signed digital certificate. If the public keys do not match, the NVM device 502 may fail authentication.
[0067] At (5), the host device 504 may perform a signature verification operation 556 to verify the digital signature 562 provided by the NVM device 502. The NVM device 502 may provide the host device 504 with the digital signature 562 corresponding to the digital certificate. As described above, in some embodiments, the NVM device 502 may generate a hash value from all or a portion of the digital certificate using a hash function 554. In embodiments, the FW_state value 561 may be included in the hash value as message data. The resulting hash value (with any corresponding message data) may be provided to the host device 504 to be used in the authentication process. In other embodiments, the signature verification operation 556 may include the NVM device 502 sending the digital certificate (e.g., the NVM public key 560, the nonce_host 540, and optionally the FW_state) with the corresponding digital signature 562.
[0068] Using public key 560', host device 504 can decrypt digital signature 562. If the authentication process uses a hash function 554, host device 504 can use the same hash function to generate a matching hash value (e.g., from public key 560' and nonce_host 540). If the decrypted value matches the expected value, NVM device 502 can be authenticated. In embodiments that include FW_state value 561, if FW_state value 561 indicates that the stored FW failed an integrity check (i.e., 512), NVM device 502 may fail authentication (and thus any content in NVM user space 506, e.g., host code executable by host device 504, may also fail authentication).
[0069] According to embodiments, a system can have a fast and secure boot time that can be independent of application (e.g., FW, SW) code size. FIG. 6 is a graph comparing boot time versus code size for various methods disclosed herein. Boot time is shown on a logarithmic scale on the Y-axis and can correspond to the time from power on or reset to when the host code (e.g., host FW, application SW) is authenticated and available. FIG. 6 shows four responses, where response 664 can be a conventional method as shown in FIG. 17, response 666-0 can be a method as the embodiment shown in FIG. 3, response 666-1 can be a method as the embodiment shown in FIG. 4, and response 666-2 can be a method as the embodiment shown in FIG. 5. As shown, the embodiments (666-0, 666-1, 666-2) can provide a constant boot time that is independent of host code size. In contrast, conventional method 664 can have a boot time that becomes longer as host code size increases.
[0070] 7 is a block diagram of an NVM device 702 according to one embodiment. The NVM device 702 can include an NVM array 757, a device storage area 768-0, a secure storage area 768-1, an array access circuit 772, a control section 774, a POR circuit 786, and an input / output (I / O) circuit 784. The NVM array 757 can include one or more arrays formed with any suitable type of NVM cells and can include decoder circuitry and write circuitry (e.g., program, erase, verify). The NVM array 757 can include a user area 706 that can store host code 708 for execution by a host device.
[0071] The device storage area 768-0 may store values used by the NVM device 702. Such values may include any of the digital signatures 752 (loaded into the NVM device or generated by the NVM device), digital certificates 710, and / or public keys 760 (e.g., for asymmetric cryptographic operations). The device storage area 768-0 may also include configuration registers 770-0 and may store parameters and / or identification information 770-1 for the NVM device 702. The device storage area 768-0 may or may not be a secure area. Portions of the device storage area 768-0 may or may not be part of the NVM array 757.
[0072] The secure storage area 768-1 may store data values that are to be kept secret. The secure storage area 768-1 may store NVM code 709, one or more secret keys 758 (e.g., for asymmetric cryptographic operations), and / or one or more secret keys 738 (e.g., for symmetric cryptographic operations). Portions of the secure storage area 768-1 may or may not be part of the NVM array 757. The NVM code 709 is code for execution by the NVM device 702 and may provide a variety of functions.
[0073] The array access circuit 772 can enable access to the NVM array 757 in response to signals and data received from the control section 774. In some embodiments, the array access circuit 772 can include command decode logic for processing commands. For an NVM device 702 that includes a secure area 768-1, the array access circuit 772 can include a secure access circuit 772-0 that enables access to the secure area 768-1 from an external entity only in response to a predetermined security protocol (e.g., cryptography-based authentication).
[0074] The control section 774 can control the functions of the NVM device 702, including authentication operations according to an embodiment. The control section 774 can include a controller 776, an input buffer 778, and an output buffer 780. The controller 776 can include a processor circuit 776-0 that can execute instructions 776-1. The instructions 776-1 can include various authentication functions, including but not limited to a hash function 754, a cryptographic function 762, a nonce value generator 782, and a code integrity checker 712. The hash function 754 can generate a hash value for data stored or received by the NVM device 702. In some embodiments, the hash function 754 can match or be configurable to match a hash function used by a corresponding host device. The cryptographic function 762 can perform various cryptographic operations, including but not limited to encrypting and / or decrypting values stored by the NVM device 702 and creating an authentication code using a key value. A nonce generator 782 can generate a nonce value (e.g., nonce_nvm) to be used in authentication operations. A code integrity checker 712 can check the integrity of code stored in the NVM user array, including NVM code 709. In some embodiments, the code integrity checker 712 can be a hash function (e.g., 754).
[0075] An input buffer 778 can receive input commands and / or data received by the NVM device 702. Such commands can be processed by the array access circuitry 772 to access the NVM array 757, the device storage area 768-0, and the secure storage area 768-1. An output buffer 780 can transfer data output from the NVM device 702, including data from the NVM array 757, the device storage area 768-0, and the secure storage area 768-1. The secure storage area 768-1 may not be exposed via the I / O circuitry 784.
[0076] The POR circuit 786 can detect power-on and reset conditions and power up various portions of the NVM device 702. In some embodiments, the POR circuit 786 can include circuitry for loading basic functional instructions (e.g., ROM data) for execution by the processor circuit 776-0.
[0077] The I / O circuitry 784 can be connected to other devices (e.g., a host device) by one or more buses 788. In some embodiments, the buses 788 include a controller area network (CAN), a serial peripheral interface (SPI), and an I 2 The I / O circuitry 784 may be, but is not limited to, a serial bus that is serial compatible with any of the C standards. The I / O circuitry 784 may include inputs and outputs for the NVM device 702 and other signal circuitry, including, but not limited to, a physical interface (PHY), serialization and deserialization circuitry.
[0078] Although embodiments may include any suitable NVM array structure and NVM cell type, some embodiments may include a one-transistor (1T) NOR type array. FIG. 8 is a schematic diagram of a 1T NOR array 857 that may be included in one embodiment. The array 857 may include many memory cells (one shown as 857-0) arranged in rows and columns, with memory cells in the same row connected to the same word line (one shown as 857-2) and memory cells in the same column connected to the same bit line 857-3. In some embodiments, the memory cells (857-0) have a charge storage structure 857-1 between the control gate and the channel, which may be formed by a single transistor structure. The charge storage structure 857-1 may store one or more bits of data as a charge.
[0079] Although embodiments may include a system with a memory device operating in conjunction with a host device, embodiments may also include a standalone memory device that can authenticate the state of the memory device and therefore the state of the code stored by the device. This type of authentication can be done within a short time and does not vary according to the size of the code, as described herein and equivalents. Although this type of memory device can include multiple integrated circuits formed in the same package, in some embodiments the memory device can advantageously be a compact single integrated circuit (i.e., chip). FIG. 9 illustrates an NVM device 902 that is a packaged single chip. However, it should be understood that memory devices according to embodiments can include any other suitable packaging type, including directly bonding the memory device chip onto a circuit board.
[0080] 10 is a block diagram of a host device 1004 according to one embodiment. The host device 1004 may include one or more host processors 1092, a primary memory 1094, and an I / O circuit 1096. The primary memory 1094 may include a boot function 1094-0 and a non-volatile memory 1094-1. The non-volatile memory 1094-1 may store values used by the host device 1004 in a non-volatile manner (e.g., OTP circuitry, eFuses). The stored values may include a public key 1046 and a private key 1038. In some embodiments, all or a portion of the non-volatile memory 1094-1 may be a secure memory 1098.
[0081] The boot function 1094-0 may include, but is not limited to, a read code integrity function 1042, a nonce value generator 1044, a cryptographic function 1024-1, a key comparison function 1048, and a hash function 1049. The read code integrity function 1042 may read a check value (e.g., FW Hash_r) from the NVM device for use in authentication operations. In some embodiments, such an action may include a read to a predetermined register or memory address. The nonce generator 1044 may generate a nonce value (e.g., nonce_host) for use in authentication operations. Such a nonce value may be transmitted to the NVM device. The cryptographic function 1024-1 may perform cryptographic functions, including but not limited to encrypting and / or decrypting values stored on or received by the host device 1004, and creating authentication codes using cryptographic key values (e.g., 1046, 1038). A key comparison function 1048 may compare keys (e.g., 1046) stored by the host device 1004 with keys received from other devices (e.g., NVM devices). A hash function 1049 may generate a hash value for data stored or received by the host device 1004. In some embodiments, the hash function 1049 may match or be configurable to match a hash function used by a corresponding NVM device.
[0082] The non-volatile storage 1094-1 may store values used by the host device 1004 in authentication operations. Such values may include, but are not limited to, a public key 1046 and / or a private key 1038. The private key 1038 may be stored in a secure storage 1098, which may require certain procedures to access, as described herein.
[0083] The I / O circuitry 1096 can be connected to other devices (e.g., a host device) by one or more buses 1088. The I / O circuitry 1096 can take any of the forms described herein.
[0084] The embodiments may include any suitable system having devices that need to quickly authenticate data stored in other devices. However, the embodiments may be advantageous in systems that store boot data in a trusted memory device, such as an automotive system. FIG. 11 illustrates an automotive system 1100 according to one embodiment. The system 1100 may include a first NVM device 1102-0, a second NVM device 1102-1, a system on chip (SoC) 1104-0, an automotive microcontroller (MCU) 1104-1, a dynamic random access memory (DRAM) device 1197, a sensor 1193, an automotive control 1195-0, an automotive communication system 1195-1, and an automotive power system 1195-2.
[0085] The SoC 1104-0 and the first NVM device 1102-0 may be a host device and a corresponding NVM device according to any of the embodiments illustrated herein. Upon power-on or reset, the SoC 1104-0 may authenticate code or equivalents stored in the first NVM device 1102-0 according to any of the embodiments illustrated herein. Similarly, the MCU 1104-1 and the second NVM 1102-1 may be a host device and a corresponding NVM device or equivalents according to any of the embodiments illustrated herein.
[0086] Referring to FIG. 12, a car 1291 according to one embodiment is shown in the drawing. The car 1291 can have a number of subsystems (two shown as 1200-0 and 1200-1) that operate with firmware booted from an NVM device. Such subsystems (1200-0, 1200-1) can include an electronic control unit (ECU) and / or an advanced driver assistance system (ADAS). However, in other embodiments, such subsystems can include a dashboard display / control subsystem and / or an infotainment subsystem, as just two of many possible examples. Each subsystem (1200-0, 1200-1) can include a host device and one or more NVM devices, and can use the firmware authentication operations described herein or equivalents.
[0087] While the above-described embodiments illustrate various systems, devices, and corresponding methods, additional methods are described below with reference to flow diagrams.
[0088] 13 is a flow diagram of an authentication method 1391 for an NVM device according to one embodiment. Method 1391 may include, at 1391-0, the NVM device experiencing a boot-up trigger event, such as a power-on or reset event. At 1391-1, the NVM device may receive an authentication request message from a host device. This type of action may include the NVM device receiving a predefined command from the host device over a communications link, e.g., a serial bus, as just one of many possible examples.
[0089] In 1391-3, in response to an authentication request message, the NVM device can return an encrypted FW integrity value, whose size is independent of the host code that the NVM device activates. The FW integrity value can be used to activate code (e.g., SW or FW) stored on the NVM device. In some embodiments, the FW integrity value can be generated from a known good set of NVM code (e.g., a hash of known good NVM code). This type of action can include the NVM device returning the FW integrity value over a communication link. The host device can use the FW integrity code to activate code stored by the NVM device. Because the FW integrity value can have a size independent of the size of the stored code, the time required for authentication can be fast and deterministic.
[0090] If the host device authenticates the NVM code with a valid encrypted FW integrity value, then at 1391-5 the NVM device may receive a read request to access the host FW stored by the NVM device. In response to such a read request, at 1391-7, the NVM device may transmit the FW data. In some embodiments, this may include transmitting code for execution by the host device.
[0091] 14 is a flow diagram of an authentication method 1491 for a host device according to one embodiment. The method 1491 may include, at 1491-0, the host device experiencing a boot-up trigger event (e.g., POR).
[0092] At 1491-1, the host device may detect an NVM device on the bus. Such actions may include performing a discovery protocol according to a communication standard. If an NVM device is detected, the method 1491 may begin authentication of the detected NVM device at 1491-3. Such actions may include the host device issuing an authentication challenge (e.g., a predefined command) to the NVM device over the bus or other suitable communication link.
[0093] At 1491-5, in response to the authentication request message, the host device can receive an encrypted FW integrity value, the size of which is independent of the host code that the host device activates. The FW integrity value can be used to activate the host code (e.g., SW or FW) stored on the NVM device. In some embodiments, a valid FW integrity value can be generated from a known good set of NVM code (e.g., a hash of known good NVM code securely stored by the NVM device). This type of action can include the NVM device replying over a communication link with the valid FW integrity value. At 1491-7, the host device can use the FW integrity code to activate the code stored by the NVM device. Because the valid FW integrity value can have a size that is independent of the size of the stored host code, the time required for authentication can be fast and deterministic.
[0094] If the host device authenticates the NVM code via the encrypted FW integrity value (Y at 1491-7), then at 1491-11 the host device may access the host FW stored by the NVM device. Such actions may include issuing a read command for a XiP code operation. If the host device does not authenticate the NVM code (N at 1491-7), then at 1491-9 the host device may generate an invalid code instruction. In response to such an instruction, the host device may prevent access to the host FW. In some embodiments, the host device may generate a boot error code indicating that the host FW is deemed invalid.
[0095] FIG. 15 is a flow diagram of an authentication method 1591 between a host device 1504 and an NVM device 1502. The NVM device 1502 or the host device 1504 may experience a boot-up event (e.g., POR) (1591-0H / 0N). In response to the NVM device booting up, at 1591-1, the NVM device may generate a hash value (FW Hash_r) for a stored NVM FW. The NVM FW may be a FW executable by the NVM device to enable NVM device functionality. The NVM FW may be stored in a secure location and may not be accessible by entities outside the NVM device or may only be accessible via a secure access function. In 1591-2, the host device may send a read command to the NVM device to access the FW Hash_r. In response to such a read request, the NVM device may transmit the FW Hash_r value back to the host device at 1591-3.
[0096] The method 1591 may include the host device requesting an authentication value from the NVM device at 1591-4. In some embodiments, in response to such a request, the NVM device may generate an authentication value at 1591-5 using a valid hash value FW Hash. The valid hash value (FW Hash) may be a value generated by a known good version of the NVM FW. In some embodiments, the NVM device may generate the authentication value by encrypting the data on the fly. This type of encryption may be symmetric (i.e., with a private key that is also stored by the host device) or asymmetric (i.e., with a private key with a corresponding public key stored by the host device). However, in other embodiments, the NVM device may be preloaded with the authentication value (e.g., a digital certificate with a digital signature). Regardless of whether the authentication value is generated by or preloaded into the NVM device, the NVM device may transmit an authentication code back to the host device at 1591-6.
[0097] At 1591-7, the host device may decrypt all or part of the authentication code received from the NVM device to derive a valid FW hash value. At 1591-8, the valid FW hash value is compared to the value read from the NVM device (FW Hash_r) to validate the NVM device (and therefore any host FW it stores). That is, if the values match, the host FW stored by the NVM device can be authenticated for use by the host device. If the values do not match, it can be determined that the host FW stored by the NVM device should not be authenticated.
[0098] FIG. 16 is a flow diagram of a method 1691 in which a host device 1604 updates an NVM FW in an NVM device 1602, according to one embodiment. The method 1691 may include, at 1691-0, the host device receiving a new NVM FW for the update operation. Such an action may include any suitable method including an authentication operation between the host device and a source of the new NVM FW. The host device 1604 may authenticate the NVM device and the old FW (the FW currently stored by the NVM device) (1691-1 / 2). Such an operation may include any suitable method including those described herein or equivalents. At 1691-3, the host device 1604 may write the new NVM FW into the NVM device. In some embodiments, such an action may include writing an NVM FW image executable by the NVM device.
[0099] At 1691-4, the NVM device can securely store the new NVM FW. Such actions can include writing the NVM FW to a predefined location determined by the NVM device configuration or by the host device. At 1691-5, the NVM device can generate a new hash value (FW Hash) for the new NVM FW. At 1691-6, such a value can be securely stored in the NVM for use in future authentication operations, such as those described herein or equivalent. Once the new NVM FW has been stored and a valid FW hash value has been generated, at 1691-7, the NVM device can send a notification to the host device that the NVM FW update operation is complete.
[0100] According to an embodiment, the host device can authenticate the NVM device state and thereby authenticate the code stored by the NVM device. This type of method can eliminate the need for the host device to access the host code stored by the NVM device in the authentication operation, as is done in conventional methods. As a result, the system can have a fast and secure boot time that is independent of the size of the code stored by the NVM device.
[0101] Embodiments may differ from conventional methods in that the host device's authentication mechanism may authenticate the state of the NVM device, rather than the state of the host code stored by the NVM device. Additionally, the NVM device may include a mechanism to attest to the integrity of the NVM code that it currently stores. In some embodiments, this may include the NVM device having a secure memory location for storing a code integrity value that is used to attest to the integrity of the NVM code stored by the NVM device.
[0102] It should be understood that throughout this specification, a reference to "one embodiment" or "an embodiment" means that the particular features, structures, or characteristics described in connection with that embodiment are included in at least one embodiment of the invention. It should therefore be emphasized and recognized that two or more references to "an embodiment" or "one embodiment" or "alternative embodiments" in various parts of this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined as appropriate in one or more embodiments of the invention.
[0103] Similarly, in the exemplary embodiments of the invention described above, it should be understood that various features of the invention are sometimes grouped together in a single embodiment, drawing or description in order to streamline the disclosure to aid in understanding one or more of the various inventive aspects. However, this method of disclosure should not be interpreted as expressly expressing an intention that the claims require more features than are expressly recited in each claim. Rather, inventive aspects may be less than all features of a single above-described disclosed embodiment. Thus, the claims following the detailed description are expressly incorporated into this detailed description, with each claim standing on its own as a separate embodiment of the invention.
Claims
1. storing host code executable by a host device in a non-volatile memory (NVM) device and storing NVM code executable by the NVM device; By operation of the NVM device, validating the integrity of the NVM code in response to a predetermined condition; generating a code integrity value for validating the NVM code, the code integrity value having a size independent of a size of the host code; transmitting an authentication code generated by at least the code integrity value to the host device; returning at least a portion of the host code for execution by the host device in response to a read request from the host device; The method includes:
2. the code integrity value comprises a hash of at least a portion of the NVM code. The method of claim 1.
3. The method comprises: generating a message authentication code (MAC) that includes at least the code integrity value; The method of claim 1.
4. By operation of the NVM device, a hash value of the NVM code is generated as the code integrity value; In response to a request from a host device, an authentication code generated by the hash value is transmitted to the host device. The method of claim 1.
5. The method comprises: generating an identifier, which is a value unique to the NVM device, as an authentication code by operating the NVM device; authenticating, by operation of the host device, the authentication code using a secure value stored by the host device; Further comprising: The method of claim 1.
6. The method comprises: receiving a host nonce value at the NVM device; performing a cryptographic function on at least the host nonce value and the code integrity value to generate the authentication code; Further comprising: The method of claim 1.
7. The method further includes encrypting at least the host nonce value, the code integrity value, and the NVM device nonce value to generate the authentication code. The method according to claim 6.
8. A method comprising: storing host code executable by a host device in a non-volatile memory (NVM) device and storing NVM code executable by the NVM device; By operation of the NVM device, validating the integrity of the NVM code in response to a predetermined condition; generating a code integrity value for validating the NVM code, the code integrity value having a size independent of a size of the host code; returning at least a portion of the host code for execution by the host device in response to a read request from the host device; Including, The method comprises: storing a digital certificate in the NVM device, the digital certificate including a public key, the code integrity value, and a digital signature generated by a private key; transmitting the digital certificate to a host device in response to a request for the certificate from the host device; Further comprising: method.
9. 1. A non-volatile memory (NVM) device, the NVM device comprising: at least one NVM array comprising a plurality of NVM cells configured to store host code for execution by a host device and NVM code for execution by said NVM; input / output (I / O) circuitry configured to communicate with a host device over at least one communication link; a memory area configured to store a code integrity value for validating the NVM code, the code integrity value having a size independent of a size of the host code; an NVM controller section; Equipped with The NVM controller section includes: Enabling the integrity of the NVM code upon startup of the NVM device; outputting an authentication code via the I / O circuit in response to a request from the host device; It is configured as follows: the authentication code is generated according to at least the code integrity value; the at least one NVM array, the I / O circuitry, the memory area and the controller section are formed by a same integrated circuit substrate; NVM device.
10. the NVM controller section comprises at least one processor configured to execute NVM device processor instructions; The NVM device of claim 9.
11. the NVM controller section includes a hash generator configured to generate a hash value from the NVM code; The NVM device of claim 9.
12. the NVM controller section includes a cryptographic circuit configured to generate at least the code integrity value according to a predefined cryptographic key; The NVM device of claim 9.
13. the encryption circuit includes an asymmetric encryption circuit, and the predetermined encryption key includes a private key corresponding to a public key; The NVM device of claim 12.
14. the NVM controller section includes a nonce value generator; The NVM device of claim 9.
15. the NVM controller section includes an authentication circuit configured to generate a message authentication code (MAC) including at least the code integrity value, the NVM controller section configured to transmit the MAC to the host device; The NVM device of claim 9.
16. the at least one NVM array includes a secure storage area, the secure storage area configured to allow access to NVM code stored therein only in response to at least one secure access procedure; The NVM device of claim 9.
17. 1. A system comprising a non-volatile memory (NVM) device, the NVM device comprising: at least one NVM cell array configured to store host code executable by a host device and NVM code executable by said NVM device; An NVM controller circuit; Including, The NVM controller circuit includes: Enabling the integrity of the NVM code upon startup of the NVM device; outputting an authentication code generated by performing an NVM cryptographic function on the code integrity value; It is configured as follows: the code integrity value has a size independent of the size of the host code; The host device includes at least one host processor, the host processor comprising: performing a host cryptographic function in response to the authentication code authenticating the NVM device and a host code stored by the NVM device; executing the host code stored by the NVM device; It is configured as follows: system.
18. the at least one NVM cell array comprises a NOR flash array.
20. The system of claim 17.
19. the at least one host processor is further configured to generate a host nonce value for transmission to the NVM device.
20. The system of claim 17.
20. the at least one host processor is further configured, in response to receiving the authentication, to access a host key and perform the host cryptographic function with the host key.
20. The system of claim 17.
21. the host processor is coupled to the NVM device by a bus; 20. The system of claim 17.
22. the host device is configured to execute the host code directly from the NVM device; 20. The system of claim 17.
23. the host device and the NVM device are part of a subsystem within a vehicle; 20. The system of claim 17.
Citation Information
Patent Citations
Method and equipment for validity check of system operation
JP1996212141A
Hardware driver integrity check of memory card controller firmware
JP2011210278A
Electronic information storage medium, IC card, time data update method, and program
JP2020048061A
Self-measuring nonvolatile memory devices with remediation capabilities and associated systems and methods
US20150019793A1
Fast Secure Boot from Embedded Flash Memory
US20170060781A1