AUTHENTICATED MODIFICATION OF STORAGE SYSTEM DATA

By exchanging keys between host and storage systems to authorize access and verify commands, the security of data programming in protected regions is improved, addressing vulnerabilities in existing methods.

DE102022127567B4Active Publication Date: 2026-01-29MICRON TECHNOLOGY INC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
DE102022127567
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2022-05-20
Filing Date
2022-10-19
Publication Date
2026-01-29
Estimated Expiration
2042-10-19

AI Technical Summary

Technical Problem

Existing methods for programming data in protected regions of storage devices are vulnerable to malicious access and lack secure data protection schemes, such as asymmetric key usage and dynamic adjustment of protected region attributes.

Method used

A host system and storage system exchange symmetric or asymmetric keys to authorize access to protected regions, which can be updated periodically, and verify commands using these keys to program data securely.

Benefits of technology

This approach enhances the security of computing platforms by thoroughly protecting data from malicious parties through secure programming of protected regions.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Host system (105, 105-a, 105-b) that includes the following: a controller (106, 106-a) configured to couple with a storage system (110, 110-a, 110-b), wherein the controller (106, 106-a) is configured to cause the host system (105, 105-a, 105-b) to do the following: Receiving (420) one or more public keys by the host system (105, 105-a, 105-b) that are associated with the storage system (110, 110-a, 110-b), each of the one or more received public keys (310a, 310-b, 310-c, 310-d) that are associated with the storage system (110, 110-a, 110-b) corresponds to a respective private key that is associated with the storage system (110, 110-a, 110-b); Generating (425) a symmetric key at least partially based on a private key associated with the host system (105, 105-a, 105-b) and a first received public key (310-a) of one or more received public keys (310a, 310-b, 310-c, 310-d) associated with the storage system (110, 110-a, 110-b); and Transfer (440, 710) of a signed instruction to the storage system (110, 110-a, 110-b) for programming data onto a first protection region (305-a) from one or more protection regions (305-a, 305-b, 305-c, 305-d, 305-e, 305-f) on the storage system (110, 110-a, 110-b), wherein the signed instruction is at least partially signed based on the generated symmetric key.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] The following generally concerns one or more storage systems and, in particular, authenticated modification of storage system data.

[0002] Storage devices are commonly used to store information in various electronic devices, such as computers, wireless communication devices, cameras, digital displays, and the like. Information is stored by programming memory cells within a storage device into different states. For example, binary memory cells can be programmed into one of two supported states, often corresponding to a logical 1 or a logical 0. In some examples, a single memory cell can support more than two possible states, each of which can be stored by the memory cell. To access information stored by a storage device, a component can read or capture the state of one or more memory cells within the storage device.To store information, a component can write or program one or more memory cells within the storage device into appropriate states.

[0003] There are various types of storage devices, including magnetic hard disks, random access memory (RAM), read-only memory (ROM), dynamic random-access memory (DRAM), synchronous dynamic RAM (SDRAM), static RAM (SRAM), ferroelectric RAM (FeRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), flash memory, phase-change memory (PCM), three-dimensional XPoint memory (3D crosspoint), not-or (NOR) and not-and (NAND) storage devices, and others. Storage devices can be volatile or non-volatile. Volatile memory cells (e.g., DRAM cells) can lose their programmed states over time unless they are periodically refreshed by an external power source. Non-volatile memory cells (e.g.,NAND memory cells can retain their programmed states for extended periods of time, even without an external power source.

[0004] US 2018 / 0196661A1 discloses an integrated circuit (IC) card that enables the application of patching programs, particularly for updating pre-installed programs such as the operating system. The disclosed IC card can securely perform software changes. A key element is the use of a session key, which ensures authentication and encrypted communication between the IC card and the terminal device. First, mutual authentication is performed, in which the IC card and the terminal exchange a session key. Subsequently, the write commands for the patching programs are transmitted as secure messaging commands, with the data encrypted using the session key and accompanied by an authentication code.

[0005] The problems mentioned above are solved by the features of the independent patent claims. Advantageous embodiments are described in the respective dependent claims. BRIEF DESCRIPTION OF THE DRAWINGS Fig. Figure 1 illustrates an example of a system that supports authenticated modification of storage system data according to the examples disclosed in this document. Fig. Figure 2 illustrates an example of a system that supports authenticated modification of storage system data according to the examples disclosed in this document. Fig. Figure 3 illustrates an example of a system that supports authenticated modification of storage system data according to the examples disclosed in this document. Fig. Figure 4 illustrates an example of a process flow that supports authenticated modification of storage system data according to the examples disclosed in this document. Fig. Figure 5 shows a block diagram of a host system that supports authenticated modification of storage system data according to the examples disclosed in this document. Fig. Figure 6 shows a block diagram of a storage system that supports authenticated modification of storage system data according to the examples disclosed in this document. Fig. 7 and Fig. Figure 8 shows flowcharts illustrating one or more procedures that support the authenticated modification of storage system data according to the examples disclosed in this document. DETAILED DESCRIPTION

[0006] Some computing platforms can include one or more host systems capable of communicating (directly or indirectly) with one or more storage systems. For example, a host system can send commands to store data located in a secure location, such as a replay protected memory block (RPMB), to the storage system using symmetric key pairs stored on the host system and the storage system. However, some approaches to programming data in protected regions of the storage device may involve removing the region's protected state during the data programming process, potentially leaving the storage system vulnerable to malicious actors attempting to access the data while the region is unprotected.Furthermore, some approaches to protecting storage device regions, such as using an RPMB, may not allow for more secure data protection schemes, such as using asymmetric keys to sign and verify data or updating host system or storage system keys over time. Additionally, some approaches may not allow custom configuration or dynamic adjustment of protected region attributes, such as the size of the protected region or the range of addresses associated with it. Efficient techniques for programming data in protected regions of a storage device are desirable.

[0007] As described in this disclosure, a host system and a storage system can exchange keys used to grant the host system access to one or more protected regions of the storage system. In some examples, a protected region can include a write-protected group of the storage system, which may contain an aligned memory area of ​​a specific size (e.g., 8 megabytes (MB)). The keys can be symmetric (e.g., the host system and the storage system can share the same key) or asymmetric (e.g., both the host system and the storage system can have a unique private key and each can share a corresponding public key with the other) and can be updated periodically (e.g., according to a cryptoperiod determined by the host system or the storage system).Furthermore, the host system and the storage system can exchange separate keys for different protection regions of the storage system.

[0008] The host system can send a command to program data to a protected region of the storage system, and the host system can sign the command using the key associated with the protected region. In some examples, the host system can transfer the data associated with the command, or the command can include instructions to move the data from another region (such as an unprotected region) of the storage system. Upon receiving the command, the storage system can verify the signature to determine whether the host is authorized to modify the protected region and can program the data as requested by the host system. In some cases, the protected regions of the storage system can be updated, for example, by adjusting the size or address range of the protected regions in response to a command from the host system.The techniques described in this document can increase the security of the computing platform, for example by more thoroughly protecting data from malicious parties.

[0009] Features of the disclosure are initially described in the context of systems, devices, and circuits with reference to Fig. 1. Characteristics of revelation are described in the context of systems and a process flow with reference to the Fig. 2-4. These and other features of the disclosure are further described in the context of a device diagram and a flowchart relating to authenticated modification of storage system data, with reference to the Fig. 5-8 described and illustrated by these.

[0010] Fig. Figure 1 illustrates an example of a System 100 that supports authenticated modification of storage system data according to the examples disclosed in this document. The System 100 includes a host system 105 coupled to a storage system 110.

[0011] A Storage System 110 can be or include any device or collection of devices, wherein the device or collection of devices includes at least one storage array. For example, a Storage System 110 can be, among other possibilities, a Universal Flash Storage Device (UFS Device), an Embedded Multimedia Control Device (eMMC Device), a Flash Device, a Universal Serial Bus Flash Device (USB Flash Device), a Secure Digital Card (SD Card), a Solid-State Drive (SSD), a Hard Disk Drive (HDD), a Dual In-Line Memory Module (DIMM), a Small Outline DIMM (SO-DIMM), or a Non-Volatile DIMM (NVDIMM).

[0012] System 100 can be included in a computing device such as a desktop computer, laptop computer, network server, mobile device, vehicle (e.g., airplane, drone, train, car, or other means of transport), Internet of Things (IoT) enabled device, embedded computer (e.g., one included in a vehicle, industrial plant, or networked commercial device), or any other computing device that includes a storage and processing device.

[0013] System 100 may include a host system 105, which may be coupled to the storage system 110. In some examples, this coupling may include an interface with a host system controller 106, which may be an example of a controller or control component configured to cause the host system 105 to perform various operations in accordance with examples described in this document. The host system 105 may include one or more devices and, in some cases, may include a processor chipset and a software stack executed by the processor chipset. For example, the host system 105 may include an application configured to communicate with the storage system 110 or a device within it. The processor chipset may include one or more cores, one or more caches (e.g., local memory or memory located within the host system 105), a memory controller (e.g., a memory controller), or a memory controller.The NVDIMM controller and a storage protocol controller (e.g., Peripheral Component Interconnect Express (PCIe) controller, Serial Advanced Technology Attachment (SATA) controller) are included. The host system 105 can use the storage system 110, for example, to write data to and read data from the storage system 110. Even if in . Fig. Where a storage system 110 is shown, the host system 105 can be coupled to any number of storage systems 110.

[0014] The host system 105 can be connected to the storage system 110 via at least one physical host interface. In some cases, the host system 105 and the storage system 110 can be configured to communicate via a physical host interface using an associated protocol (e.g., to exchange control, address, data, and other signals between the storage system 110 and the host system 105, or to communicate otherwise). Examples of a physical host interface include, but are not limited to, a SATA interface, a UFS interface, an eMMC interface, a PCIe interface, a USB interface, a Fibre Channel interface, a Small Computer System Interface (SCSI), a Serial Attached SCSI (SAS), a Double Data Rate (DDR) interface, and a DIMM interface (e.g., a 12V / 16 ...The interfaces may include a DIMM socket interface that supports DDR), an Open NAND Flash Interface (ONFI), and a Low Power Double Data Rate (LPDDR) interface. In some examples, one or more of these interfaces may be included in a Host Control Panel 106 of the Host System 105 and a Storage Control Panel 115 of the Storage System 110, or otherwise supported between them. In some examples, the Host System 105 may be coupled to the Storage System 110 via a corresponding physical host interface for each storage device 130 included in the Storage System 110, or via a corresponding physical host interface for each type of storage device 130 included in the Storage System 110 (e.g., the Host Control Panel 106 may be coupled to the Storage Control Panel 115).

[0015] The storage system 110 can include a storage control unit 115 and one or more storage devices 130. A storage device 130 can include one or more storage arrays of any type of memory cell (e.g., non-volatile memory cells, volatile memory cells, or any combination thereof). Although in the example from Fig. Figure 1 shows two storage devices 130-a and 130-b. The storage system 110 can include any number of storage devices 130. If the storage system 110 includes more than one storage device 130, different storage devices 130 within the storage system 110 can furthermore include the same or different types of memory cells.

[0016] The storage control unit 115 can be coupled to and communicate with the host system 105 (e.g., via the physical host interface) and can be an example of a controller or control component configured to cause the storage system 110 to perform various operations according to the examples described in this document. The storage control unit 115 can also be coupled to and communicate with storage devices 130 to perform operations such as reading data, writing data, deleting data, or refreshing data in a storage device 130—among other such operations—which can be generally referred to as access operations. In some cases, the storage control unit 115 can receive commands from the host system 105 and communicate with one or more storage devices 130 to execute such commands (e.g.,on storage arrays within the one or more storage devices 130). For example, the storage control unit 115 can receive commands or operations from the host system 105 and convert the commands or operations into instructions or appropriate commands to achieve the desired access to the storage devices 130. In some cases, the storage control unit 115 can exchange data with the host system 105 and with one or more storage devices 130 (e.g., in response to commands from the host system 105 or otherwise in conjunction with them). For example, the storage control unit 115 can convert responses (e.g., data packets or other signals) addressed to the storage devices 130 into corresponding signals for the host system 105.

[0017] The storage control unit 115 can be configured for other operations assigned to the storage devices 130. For example, the storage control unit 115 can perform or manage operations such as wear balancing operations, garbage collection operations, error control operations such as error detection or error correction operations, encryption operations, caching operations, media management operations, background refresh, state monitoring, and address translations between logical addresses (e.g., logical block addresses (LBAs)) assigned to instructions from the host system 105 and physical addresses (e.g., physical block addresses) assigned to memory cells within the storage devices 130.

[0018] The memory controller 115 can include hardware such as one or more integrated circuits or discrete components, a buffer memory, or a combination thereof. The hardware can include circuits with dedicated (e.g., hard-coded) logic to perform the operations on the memory controller 115 described in this document. The memory controller 115 can be, or include, a microcontroller, a special logic circuit (e.g., a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), a digital signal processor (DSP)), or any other suitable processor or processing circuit.

[0019] The memory control unit 115 may also include local memory 120. In some cases, the local memory 120 may include read-only memory (ROM) or other memory capable of storing the operating code (e.g., executable instructions) that the memory control unit 115 can execute to perform functions assigned to it in this document. In some cases, the local memory 120 may additionally or alternatively include static random-access memory (SRAM) or other memory that the memory control unit 115 can use for internal storage or calculations, for example, related to the functions assigned to it in this document. Additionally or alternatively, the local memory 120 may serve as a cache for the memory control unit 115.For example, data can be stored in local storage 120 when it is read from or written to a storage device 130, and the data can be available in local storage 120 for subsequent retrieval or manipulation (e.g., updating) by the host system 105 (e.g., with reduced latency compared to a storage device 130) according to a cache policy.

[0020] Even if the example of storage system 110 in Fig. As illustrated in Figure 1, which includes the storage control unit 115, a storage system 110 may in some cases not include a storage control unit 115. For example, the storage system 110 may additionally or alternatively rely on an external control unit (e.g., implemented by the host system 105) or one or more local control units 135, each of which may be located internally within the storage devices 130, to perform the functions attributed to the storage control unit 115 in this document. In general, one or more functions attributed to the storage control unit 115 in this document may in some cases instead be performed by the host system 105, a local control unit 135, or any combination thereof.In some cases, a storage device 130 that is at least partially managed by a storage control unit 115 can be referred to as a managed storage device. An example of a managed storage device is a managed NAND (MNAND) device.

[0021] A storage device 130 can include one or more arrays of non-volatile memory cells. For example, a storage device 130 can include NAND memory (e.g., NAND flash memory), ROM, phase-change memory (PCM), self-selecting memory, other chalcogenide-based memory, ferroelectric random-access memory (RAM) (FeRAM), magneto-RAM (MRAM), NOR memory (e.g., NOR flash memory), spin-transfer-torque MRAM (STT-MRAM), conductive-bridging RAM (CBRAM), resistive random-access memory (RRAM), oxide-based RRAM (OxRAM), electrically erasable programmable ROM (EEPROM), or any combination thereof. Additionally or alternatively, a storage device 130 can include one or more arrays of volatile memory cells.A storage device 130 can, for example, include RAM memory cells such as dynamic RAM memory cells (dynamic RAM - DRAM) and synchronous DRAM memory cells (synchronous DRAM - SDRAM).

[0022] In some examples, a storage device 130 (e.g., on the same chip or in the same package) may include a local controller 135 that can perform operations on one or more memory cells of that storage device 130. A local controller 135 may operate in conjunction with a memory system controller 115 or perform one or more functions attributed to the memory system controller 115 in this document. For example, as in Fig. Figure 1 illustrates that a storage device 130-a can include a local control 135-a and a storage device 130-b can include a local control 135-b.

[0023] In some cases, a storage device 130 may be or include a NAND device (e.g., a NAND flash device). A storage device 130 may be or include a memory chip 160. For example, in some cases, a storage device 130 may be a package containing one or more chips 160. A chip 160 may, in some examples, be a piece of electronic-grade semiconductor cut from a wafer (e.g., a silicon chip cut from a silicon wafer). Each chip 160 may contain one or more layers 165, and each layer 165 may contain a corresponding set of blocks 170, with each block 170 containing a corresponding set of pages 175, and each page 175 containing a set of memory cells.

[0024] In some cases, a NAND flash memory device can contain 130 memory cells configured to store one bit of information each, which can be referred to as single-level cells (SLC). Additionally or alternatively, a NAND flash memory device can contain 130 memory cells configured to store multiple bits of information each, which are referred to as multi-level cells (MLC) when configured to store two bits of information each, tri-level cells (TLC) when configured to store three bits of information each, quad-level cells (QLC) when configured to store four bits of information each, or more generally, multi-level memory cells.Multi-level memory cells can provide higher storage density compared to SLC memory cells, but in some cases may result in narrower read or write spans or greater complexity in supporting circuitry.

[0025] In some cases, levels 165 can refer to groups of blocks 170, and in some cases, simultaneous operations can take place within different levels 165. For example, simultaneous operations can be performed on memory cells within different blocks 170, as long as the different blocks 170 are located in different levels 165. In some cases, a single block 170 can be referred to as a physical block, and a virtual block 180 can refer to a group of blocks 170 in which simultaneous operations can take place. For example, simultaneous operations can be performed on blocks 170-a, 170-b, 170-c and 170-d, each of which is within levels 165-a, 165-b, 165-c, and 165-d, and blocks 170-a, 170-b, 170-c and 170-d can be collectively referred to as a virtual block 180.In some cases, a virtual block may contain blocks 170 from different storage devices 130 (e.g., including blocks in one or more levels of storage device 130-a and storage device 130-b). In some cases, the blocks 170 within a virtual block may have the same block address within their respective levels 165 (e.g., block 170-a may be "block 0" of level 165-a, block 170-b may be "block 0" of level 165-b, and so on). In some cases, performing concurrent operations in different levels 165 may be subject to one or more restrictions, such as performing concurrent operations on memory cells within different pages 175 that have the same page address in their respective levels 165 (e.g.,(with regard to command decoding, the page address decoding circuit, or other circuits shared across levels 165).

[0026] In some cases, a block can contain 170 memory cells, organized into rows (pages 175) and columns (e.g., strings, not shown). For example, memory cells on the same page 175 can share a common word line (e.g., be coupled to it), and memory cells on the same string can share a common digit line (e.g., be coupled to it) (which can alternatively be called a bit line).

[0027] In some NAND architectures, memory cells can be read and programmed (e.g., written) at a first granularity level (e.g., the page level), but erased at a second granularity level (e.g., the block level). That is, a page can be the smallest unit of storage (e.g., a set of memory cells) that can be programmed or read independently (e.g., programmed or read simultaneously as part of a single program or read operation), and a block can be the smallest unit of storage (e.g., a set of memory cells) that can be erased independently (e.g., erased simultaneously as part of a single erase operation). Furthermore, in some cases, NAND memory cells can be erased before they can be rewritten with new data.For example, in some cases a used page 175 can only be updated once the entire block 170, which contains page 175, has been deleted.

[0028] System 100 can include any number of nontransitory, machine-readable media that support authenticated reading of storage system data. For example, the host system 105, the storage control unit 115, or a storage device 130 (e.g., a local controller 135) can include or otherwise access one or more nontransitory, machine-readable media that store instructions (e.g., firmware) for performing the functions attributed in this document to the host system 105, the storage control unit 115, or the storage device 130. For example, if such instructions are issued by the host system 105 (e.g., by the host control unit 106), by the storage control unit 115, or by a storage device 130 (e.g.,by a local controller 135), cause the host system 105, the storage control controller 115 or the storage device 130 to perform one or more associated functions as described in this document.

[0029] In some cases, a memory system 110 can utilize a memory controller 115 to provide a managed memory system, which may include, for example, one or more memory arrays and associated circuitry in combination with a local (e.g., on-chip or in-package) controller (e.g., local controller 135). An example of a managed memory system is a managed NAND (MNAND) system.

[0030] In some examples, a host system 105 and a storage system 110 can exchange keys used to grant the host system 105 access to one or more protection regions of the storage system 110 (e.g., one or more protection regions of a storage device 130). The keys can be symmetric (e.g., the host system 105 and the storage system 110 can share the same key) or asymmetric (e.g., both the host system 105 and the storage system 110 can have a unique private key and each can share a corresponding public key with the other) and can be updated periodically (e.g., according to a cryptoperiod determined by the host system 105 or the storage system 110). In some examples, the host system 105 and the storage system 110 can exchange separate keys for different protection regions of the storage system 110.

[0031] Host system 105 can transmit a command to program data to a protected region of storage system 110, and host system 105 can sign the command using the key associated with the protected region. In some examples, host system 105 can transmit the data associated with the command, or the command can include instructions to move the data from another region (for example, an unprotected region) of storage system 110. Upon receiving the command, storage system 110 can verify the signature to determine whether host system 105 is authorized to modify the protected region and can program the data as requested by host system 105. In some cases, the protected regions of storage system 110 can be updated, for example, by adjusting the size or address range of the protected regions in response to a command from host system 105.The techniques described in this document can increase the security of the computing platform, for example by more thoroughly protecting data from malicious parties.

[0032] Fig. Figure 2 illustrates an example of a System 200 that supports authenticated modification of storage system data according to the examples disclosed in this document. The System 200 may include a Host System 105-a and a Storage System 110-a, which may be examples of the respective systems disclosed with reference to Fig. The host system 105-a and the storage system 110-a can implement various public key exchange techniques to support signaling communication between the respective systems, including identity authentication (e.g., signatures) and integrity (e.g., encryption), among other features that may be based on unique and private cryptographic identities of the host system 105-a and the storage system 110-a. The host system 105-a may include a host control panel 106-a, and the storage system 110-a may include a storage control panel 115-a. In some examples, the host control panel 106-a and the storage control panel 115-a may be configured to perform one or more of the described operations on the host system 105-a and the storage system 110-a, respectively.Although techniques are described with reference to a single host system 105-a and a single storage system 110-a of the system 200, the described techniques can be extended to support implementations of a host system 105 coupled with any number of storage systems 110, or implementations of a storage system 110 coupled with any number of host systems 105, or implementations of a network of multiple host systems 105 coupled with multiple storage systems 110.

[0033] Host system 105-a can be an example of a system that uses at least one section of storage system 110-a (e.g., memory 240) for information storage. This can include various operations that support host system 105-a writing information to storage system 110-a, supporting host system 105-a reading information from storage system 110-a, or both. In some examples, host system 105-a can be characterized as "local," which may refer to a relatively direct or close physical, electrical, or otherwise communicative coupling. In some other examples, host system 105-a can be characterized as "remote," which may refer to a relatively distant (e.g.,communicative coupling can be obtained (not located in the same place), which may involve one or more wired, wireless, optical, or otherwise relatively remote communicative couplings, such as a cloud application or a distributed computing system.

[0034] In some examples, the host system 105-a may contain, be coupled to, or otherwise associated with one or more host entities 210. Host entities 210 may be implemented as hardware entities, firmware entities, or software entities and may involve various serial, parallel, or hierarchical couplings or logical organization with or through the host system 105-a. In some examples, the host entities 210 may request or otherwise perform signaling with the storage system 110-a through a common controller or interface (e.g., through the host system controller 106-a). In other examples, the host entities 210 may be associated with different functions, different sets of functions, different permissions, and different storage attributes (e.g., data protection attributes), among other different properties.

[0035] In some examples, each of the host entities 210 can be associated with a unique identifier (e.g., a secret identifier, a unique device secret, a unique entity secret) that may involve or facilitate the generation of a respective private key for the host entity 210. In some examples, an identifier of a host entity 210 need not itself be private, but a private key can be generated (e.g., by the host system 105-a) for a host entity 210 based on an identifier (e.g., public or private) of the host entity 210 and a private identifier of the host system 105-a (e.g., a private master identifier). Such techniques can support the unique identification and authentication of each of the host entities 210 according to the examples disclosed in this document (e.g., separately from other host entities 210).

[0036] The example of host system 105-a can be associated with a host entity 210-a of an original equipment manufacturer (OEM) (e.g., a first host entity), a host entity 210-b of an operating system (OS) vendor (e.g., a second host entity), and a host entity 210-c of an independent software vendor (ISV) (e.g., a third host entity). In some other examples, a host system 105 can include or otherwise be associated with any number of one or more host entities 210, including but not limited to one or more OEM host entities 210, OS vendor host entities 210, ISV host entities 210, or other types of host entities.In some examples, the host entities 210 may be omitted or otherwise not considered separately, in which case a private master key may be implemented by the host system 105-a (and any host entities 210, if applicable), which may be based on a single or shared unique identifier of the host system 105-a (e.g., a secret identifier, a unique device secret, or a unique host secret associated with the host system 105-a).

[0037] In some examples, the host system 105-a may be associated with a location for storing authentication or encryption information (e.g., generated or received keys, certificates), such as a keystore 215. For example, the host system 105-a may use the keystore 215 to store one or more private keys or certificates associated with the host system 105-a. In some examples, a keystore 215 may be a section of the host system 105-a, such as an implementation of a dedicated storage component of the host system 105-a. Additionally or alternatively, one or more components of the keystore 215 may reside outside the host system 105-a but may otherwise be accessible by the host system 105-a (e.g., securely). In various examples, the keystore 215 may be a non-volatile storage location (e.g.,for static keys or keys that are retained for a relatively long time) or a volatile storage location (e.g., for ephemeral keys or keys that are otherwise generated relatively frequently), or both. Although keystore 215 is illustrated separately from host control panel 106-a, in some examples keystore 215 may be part of host control panel 106-a or otherwise associated with it, such as a storage location that also contains firmware for host system 105-a or host control panel 106-a.

[0038] In some examples, the host system 105-a may contain content 220, which can relate to various types of information stored on the host system 105-a. In some examples, content 220 can be accessed or otherwise used to support various key generation (e.g., content-based key generation) or other cryptographic techniques, as disclosed in this document. For example, content 220 may contain firmware of the host system 105-a, such as boot code (e.g., second-stage boot code, "Ll" boot code) or a firmware security descriptor (FSD), which can be used to establish an operational or cryptographic state (e.g., a firmware state) of the host system 105-a.In some examples, information associated with content 220 can be transferred to storage system 110-a to support various authentication or encryption techniques (e.g., so that storage system 110-a generates keys or certificates for operation with storage system 110-a). Although content 220 is illustrated separately from host control panel 106-a, in some examples content 220 may be part of host control panel 106-a or otherwise associated with it, such as a location containing firmware for host system 105-a or host control panel 106-a.

[0039] The storage system 110-a can include a memory 240, which can refer to a collective storage capacity of one or more instances of local memory 120, or one or more storage devices 130, or various combinations thereof, that are included in or otherwise allocated to the storage system 110-a. In some examples, the memory 240 can be subdivided into partitions 245 (e.g., memory areas, address ranges) or otherwise organized, which can refer to different subsets or ranges of logical or physical addresses of the allocated local memory 120 or storage devices 130.In some examples, the partitions 245 can be assigned an initial address range and they can be updated by an assignment to a different address range, including appending additional new addresses, an assignment to a subset of the initial address range (e.g., trimming ranges), or an assignment to a completely new address range.

[0040] In some examples, partitions 245 or sections thereof can be assigned or allocated to different functions or attributes, such as examples where one or more partitions 245 are associated with one or more host entities 210 or their respective public or private keys. In one example implementation, partition 245-a can be allocated to the OEM host entity 210-c, partition 245-b can be allocated to the OS provider host entity 210-b, and partition 245-c can be allocated to the ISV host entity 210-c. In some examples, partition 245-d can be unallocated (e.g., not dedicated to a particular purpose or entity, or to free space), or, among other examples of partition allocation, it can be shared by multiple host entities 210.In some examples, the partitions 245 can be used to implement various hierarchical key or authentication techniques. For example, each partition 245, or a part of a partition 245, can be assigned or updated with a protection attribute (e.g., enabling or disabling a write-protection attribute, enabling or disabling a read-protection attribute), which can be associated with various keys, authentications, or encryptions specific to a given host entity 210, or generally common to the host system 105-a, among other examples.

[0041] In some examples, the storage system 110-a can be associated with a location for storing authentication or encryption information (e.g., generated or received keys, certificates), such as a keystore 250. For example, the storage system 110-a can use the keystore 250 to store one or more private keys associated with the storage system 110-a, or one or more public keys or certificates generated by the storage system 110-a, or one or more public keys or certificates received from the host system 105-a (or other host systems 105, not shown). In some examples, the keystore 250 can be a section of the storage system 110-a, such as an implementation of a dedicated storage component of the storage system 110-a.Additionally or alternatively, the keystore 250 may be located outside the storage system 110-a, but may otherwise be accessible through the storage system 110-a (e.g., securely). In various examples, the keystore 250 may be a non-volatile storage location (e.g., for static keys or keys that are retained for a relatively long time), a volatile storage location (e.g., for ephemeral keys or keys that are otherwise generated relatively frequently), or both. Although the keystore 250 is illustrated as separate from the storage system 240, in some examples the keystore 250 may be contained within a section of the storage system 240 (e.g., in a separate or dedicated partition 245).Although the key memory 250 is illustrated separately from the memory control unit 115-a, the key memory 250 may also be part of the memory control unit 115-a in some examples, or otherwise associated with it, such as a memory location that also contains firmware for the memory system 110-a or the memory control unit 115-a (e.g., a local memory 120).

[0042] In some examples, the memory system 110-a may include a physically unclonable function (PUF) 255 that can support the assignment or generation of an identifier unique to the memory system 110-a (e.g., to generate a secret identifier or unique device secret of the memory system 110-a). The PUF 255 may include various components or circuit elements that have an intrinsic physical property unique to the PUF 255, which can be used to establish intrinsic uniqueness of the memory system 110-a. For example, the PUF may include a set of one or more transistors, resistors, capacitors, memory cells (e.g., SRAM cells, which in some cases are referred to in the Fig. 1 described local memory 120 may include) or other circuit elements or combinations thereof which, when accessed, support the generation of a digital signature unique to the storage system 110-a. In some examples, a controller of the storage system 110-a (e.g., the storage system controller 115-a) may access or otherwise interact with the PUF 255 to generate one or more private keys for the storage system 110-a, which can then be used to generate public keys for establishing authenticity or encryption between the storage system 110-a and the host system 105-a (e.g., the host entities 210, where applicable).Although PUF 255 is illustrated as separate from key memory 250, in some examples PUF 255 may be included in key memory 250 or otherwise interpreted as part of key memory 250 (e.g., part of memory system control 115-a, part of a local memory 120 of memory system 110-a).

[0043] In various implementations, the PUF 255 itself, the signaling generated by the PUF 255, or both may be inaccessible from outside the memory system 110-a. Such inaccessibility can be facilitated by various implementations in which the PUF 255 and other components involved in the described cryptographic techniques are contained within a section of the memory system 110-a where attempts to access such components would be destructive to those components, or where such components or associated signaling are otherwise shielded from destructive or non-destructive probing or snooping techniques. For example, at least the PUF 255 and the other components involved in the described cryptographic techniques (e.g.,Components involved in handling private keys or unique device secrets, which may include at least one section of the storage system control 115-a or at least one section thereof), unless all components of the storage system 110-a are implemented in a single, contiguous semiconductor chip, such as a SoC implementation.

[0044] In some examples, the storage system 110-a may contain a public key table 260 (e.g., a public key table for elliptic curve cryptography) that may be configured to store, organize, or allocate public keys, such as those received from the host system 105-a, those generated on the storage system 110-a, or both. In some examples (e.g., in implementations where host entities 210 are mapped to respective public keys transmitted by the host system 105-a), the public key table 260 may maintain a respective public key, or a mapping thereof, for each of the OEM host entity 210-a, the OS provider host entity 210-b, and the ISV host entity 210-c (e.g., mapped to partitions 245-a, 245-b, and 245-c, respectively).Although the public key table 260 is illustrated as separate from the key store 250, in some examples the public key table 260 may be included in the key store 250 or otherwise interpreted as part of the key store 250 (e.g., part of the memory control 115-a, part of a local memory 120 of the memory system 110-a).

[0045] In some implementations, the public key table 260 may be mapped to, among other things, a mapping between public keys and device identifiers or partitions 245, or protection attributes (e.g., write-protection configurations, read-protection configurations), or various combinations thereof, alongside other mappings between keys and associated configurations. For example, the public key table 260 may provide a mapping for one or more host systems 105 (e.g., host system 105-a) or a host entity 210 thereof to a specific public key or symmetric key. Such a mapping may also include a mapping between such keys and one or more partitions 245, or a mapping between such keys or partitions 245 to one or more protection attributes, such as whether a partition 245 is configured to be read-protected, write-protected, or both.In some examples, a mapping of the public key table 260 may include a mapping of a key, a host system 105, or a host entity 210 to multiple partitions 245, each of which may support a common key but have a unique protection attribute. In some examples, the public key table may support a key hierarchy that allows a master host system 105 or an associated key to map partitions 245 to another host system 105 or host entity 210, or to their respective keys.

[0046] In some examples, the storage system 110-a may contain a platform configuration register (PCR) 270, which can store or measure a software state (e.g., version, update status), such as the state of software running on the storage system 110, and configuration data used by such software (e.g., to represent the platform software state of the storage system 110-a). In some examples, the PCR 270 may contain information that can be evaluated to determine whether the storage system 110-a has been compromised or is otherwise untrusted. Although the PCR 270 is illustrated separately from the storage control unit 115-a, in some examples the PCR 270 may be part of the storage control unit 115-a or otherwise associated with it, such as being a location associated with firmware for the storage system 110-a or the storage control unit 115-a (e.g.,a local memory 120). Such techniques can support the PCR 270 in storing or measuring the state of such firmware, which can be used to evaluate whether such firmware has been adversely updated (e.g., to evaluate whether the memory system 110-a can be authenticated).

[0047] In some examples, the storage system 110-a may include an RPMB 265, which can be provided as a means of storing data in an authenticated and re-encoded manner, accessible only through successfully authenticated read and write accesses. In some examples, the RPMB 265 may contain information that can be evaluated to determine whether signaling exchanged with the storage system 110-a has been intercepted and re-encoded, which can indicate whether one or more devices or connections of the system 200 are untrusted. Although the RPMB 265 is illustrated separately from the storage control unit 115-a, in some examples the RPMB 265 may be part of the storage control unit 115-a or otherwise associated with it, such as a memory location containing firmware for the storage system 110-a or the storage control unit 115-a (e.g., local memory 120).In some examples, the RPMB 265 can be assigned a fixed size, a fixed set of addresses, or both.

[0048] In some examples, the storage system 110-a may contain content 280, which may relate to various types of information stored in the storage system 110-a. In some examples, content 280 may be accessed or otherwise used to support various key generation (e.g., content-based key generation) or other cryptographic techniques, as disclosed in this document. For example, content 280 may contain firmware of the storage system 110-a, such as a boot code (e.g., first-stage boot code, "L0" boot code, second-stage boot code, "L1" boot code) or an FSD, which may be used to establish an operational or cryptographic state of the storage system 110-a.In some examples, information associated with content 280 can be used by the storage system 110-a to support various authentication or encryption techniques (e.g., to generate a certificate for operation with the host system 105-a). Although content 280 is illustrated separately from the storage control panel 115-a, in some examples, content 280 may be part of the storage control panel 115-a or otherwise associated with it, such as a memory location containing firmware for the storage system 110-a or the storage control panel 115-a. Furthermore, although content 280 is illustrated separately from memory 240, in some examples, content 280 may refer to information contained in a section of memory 240 (e.g., in a separate or dedicated partition 245).In some implementations, the content 280 can receive or refer to information from one or more aspects of the PCR 270.

[0049] One or more components of System 200 can be configured to implement asymmetric key distribution to establish authenticated signaling, encrypted signaling, or both between Host System 105-a and Storage System 110-a (e.g., according to an authenticated system identity). This may involve implementing cryptographic security functionality directly within Storage System 110-a (e.g., utilizing capabilities of Storage System Controller 115-a to support various asymmetric cryptography techniques). In some examples, such techniques may involve passing fundamentally public device identification information between Host System 105-a and Storage System 110-a, supporting private authentication of each system (e.g.,Device-specific or hardware-specific authentication, without attempting to maintain secrecy or avoid disclosure of exchanged private or secret key material corresponding to the respective devices. In some examples, such asymmetric cryptography can be used to derive equivalent or otherwise symmetric keys on each side of the signaling exchange (e.g., on both host system 105-a and storage system 110-a) using a common secret that is itself not communicated between host system 105-a and storage system 110-a, thus exploiting efficiencies of symmetric-key techniques for authenticated or encrypted signaling relative to asymmetric-key techniques.In some examples, such techniques can be implemented to establish a virtual authenticated channel 205 between the host system 105-a and the storage system 110-a, which can be used to transmit signaling (e.g., encrypted signaling, unencrypted signaling) and associated signatures (e.g., asymmetric signatures, such as Elliptic Curve Digital Signature Algorithm (ECDSA) signatures, symmetric signatures, such as Hashed Message Authentication Code (HMAC) signatures) between the host system 105-a and the storage system 110-a.

[0050] In some examples, System 200 can be configured to support signing and verification (e.g., authentication) of signaling between Host System 105-a and Storage System 110-a (e.g., according to signed command signaling, signed request signaling, signed data signaling, or signed response signaling). These techniques can be implemented to authenticate the transmitting system of such signaling, to ensure that the signaling has not been altered before being received by a receiving system, or both. According to such techniques, a receiving system can evaluate the received signaling to determine whether the transmitted signaling was sent from an unverified or unauthorized transmitting system, or whether the transmitted signaling has been altered or otherwise compromised.In some examples, such techniques can support a one-to-many security arrangement, since multiple receiving systems may be able to implement the same public key (e.g., of an asymmetric key pair) of the transmitting system, which is associated with a single private key (e.g., of the asymmetric key pair) of the transmitting system. A key included in the same key pair as another key may be called a counterpart key to the other key (e.g., a private key and a public key within an asymmetric key pair may be counterparts to each other, and two symmetric keys within a symmetric key pair may be counterparts to each other).

[0051] In some examples of signing and verifying signaling between host system 105-a and storage system 110-a, a signature for a given signaling instance (e.g., a message, a command, a request, a data packet, a response) can be derived by hashing or otherwise processing the signaling instance with a function (e.g., a hash function, a cryptographic hash algorithm) that receives as input the signaling instance and a private key associated with the transmission system. The output of such a function (e.g., a signature, a hash digest) can be regenerated using the same function with the same signaling instance and either the same private key associated with the transmission system or an associated public key (e.g., an asymmetric key pair) associated with the transmission system.For example, for a signaling instance associated with a 1-megabyte program operation, a hash function based on the 1-megabyte of data and a private key could be a 256-bit signature or a hash digest.

[0052] To assist in verifying the authenticity of the transmission system, the transmission system can send the signaling instance along with the corresponding signature, which can be received by a receiving system. The receiving system may have received or otherwise generated the transmission system's associated public key and can accordingly generate a trial signature based on the received signaling instance and the transmission system's associated public key. If the trial signature matches the received signature, the receiving system can determine that the transmission system was authentic (e.g., that the signaling instance is a transmission from a trusted system) and can proceed with processing or otherwise take a response action in response to the received signaling instance.In some implementations, signature generation can be configured such that even if a signaling instance is the same, a generated signature will be different. Furthermore, in such implementations, signature generation and verification operations can be based on a random number, a nonce, or a monotonic counter that is understandable to both the transmitting and receiving systems.

[0053] In some examples, System 200 can be configured to support encryption and decryption of signaling between Host System 105-a and Storage System 110-a (e.g., according to encrypted signatures, encrypted command signaling, encrypted request signaling, encrypted data signaling, or encrypted response). These encryption and decryption techniques can be implemented to protect the contents of such signaling from being intercepted, interpreted, or otherwise processed (e.g., to maintain the integrity of the signaling itself). According to such techniques, a transmission system can designate signaling instances for transmission using a key known to the transmission system (e.g., a key combination).a symmetric key pair) encrypts, and a receiving system can decrypt received instances of such signaling using a key known to the receiving system (e.g., the same symmetric key pair), which may be the same as the symmetric key known to the transmitting system or otherwise equivalent or operational for such decryption. In some examples, such techniques can support a one-to-one security arrangement, since a symmetric key pair may be understood by only a single transmitting system and a single receiving system (e.g., if a symmetric key pair is based on unique identifiers of both the transmitting and receiving systems).However, some cryptographic techniques can support arrangements other than a one-to-one security arrangement, such as when symmetric keys are based on unique identifiers from more than two systems.

[0054] Some implementations of the described techniques can utilize asymmetric cryptography, whereby a public key associated with host system 105-a can be uploaded to one or more storage systems 110 (e.g., storage system 110-a) without exposing a private key of host system 105-a. This can prevent a malicious actor from stealing the key and impersonating the true key holder (e.g., impersonating host system 105-a). Such techniques can also allow for public key replacement, which may differ from other techniques, such as those relating to an RPMB or a replay-protection monotonic counter (RPMC).In some examples, such asymmetric cryptography techniques can facilitate the use of public key infrastructure (PKI) techniques, where keys can be verified through a standardized chain of digital certificates.

[0055] In some implementations, public key exchange can support the generation of symmetric keys in both the host system 105-a and the storage system 110-a using techniques such as Diffie-Hellman key exchange or ellipse curve techniques, allowing a symmetric secret to be shared between the device and the host without revealing the private keys of the respective systems. In some implementations, an asymmetric Diffie-Hellman key exchange can be performed between the host system 105-a and the storage system 110-a to generate symmetric keys, which are then used to enable improved performance on either the host system 105-a or the storage system 110-a for authentication, encryption, or both.Furthermore, ephemeral symmetric keys can be derived using the same algorithm shared by the host system 105-a and the storage system 110-a to make it more difficult for a malicious actor to extract or replicate such keys, based on different techniques for duration-initiated or event-initiated generation of ephemeral keys.

[0056] In some examples, the exchange of public keys may be associated with the creation of digital certificates, which may involve various signaling with or other interactions with one or more certificate authorities or registration authorities, or may include self-signed certificates or various combinations thereof. For example, the host system 105-a, a cloud authority, or another centralized certificate authority, in communication with the host system 105-a, may create a certificate signing request (CSR), which may be an example of a self-signed certificate proving that the storage system 110-a possesses the private key associated with the public key in the CSR. In some examples, such a CSR may be issued by the storage system 110-a as part of a manufacturing operation (e.g.,to establish the storage system 110-a) to a centralized certificate authority. In some implementations, in response to the verification of the identity of storage system 110-a (e.g., by a cloud authority), a vendor-endorsed certificate may be provided to the host system 105-a, the storage system 110-a, or both. In some examples, such techniques may assist a requesting system in downloading a vendor-endorsed certificate (e.g., a certificate endorsed by a certificate authority) or in downloading the CSR.

[0057] Fig. Figure 3 illustrates an example of a System 300 that supports authenticated modification of storage system data according to examples disclosed in this document. The System 300 may include one or more Regions 305 of a storage system, which may be an example of aspects of a Storage System 110 as described with reference to Fig. 1 and Fig. 2 as described. In some cases, each of the one or more regions 305 can be a distinct region or group of memory cells, such as one or more blocks of memory cells, one or more memory chips, or other arrangements of memory cells. The memory cells contained in a region 305 can be a continuous region of memory cells or can be distributed throughout the entire memory system.

[0058] One or more Region 305 (e.g., Regions 305-a to 305-c) can be a protection region, such as a write-protection group. For example, Region 305-a can be a protection region associated with or corresponding to a Key 310-a. Key 310-a can be a key associated with a Host System or Host Entity, such as Host System 105 or Host Entity 210, as described in the [reference to the following]. Fig. 1 and Fig. 2. In some cases, different host entities can use different keys. For example, a first host entity may be authorized to access protection region 305-a, and accordingly, the first host entity may use key 310-a to sign commands for programming data to protection region 305-a. Similarly, a second host entity may be authorized to access protection region 305-b, and accordingly, the second host entity may use key 310-b to sign commands for programming data to protection region 305-b.

[0059] In some examples, multiple host entities can be authorized to access the same 305 region. For instance, a 305-c protection region can be mapped to multiple 310 keys, such as a 310-c key mapped to a third host entity authorized to access 305-c protection region, and a 310-d key mapped to a fourth host entity authorized to access 305-c protection region. In some cases, a single host entity can be mapped to or use multiple 310 keys and thus be authorized to access multiple 305 protection regions of the storage system. Additionally or alternatively, a single host entity can use the same 310 key to access multiple 305 protection regions of the storage system. In some examples, a host entity can modify permissions for a 305 protection region using a 315 command (for example,authorize additional host entities or remove protection), which was signed using an appropriate 310 key.

[0060] In some cases, the host system and the storage system can use one or more symmetric key pairs. In such cases, both the host system and the storage system can store a shared key 310. For example, if a host entity is authorized to access the protection region 305-a, the host system can store the key 310-a in a keystore on the host system (e.g., a keystore 215, as described in [reference to]). Fig. 2 described). Similarly, the storage system can also store the key 310-a in a key store on the storage system (e.g., a key store 250, as described in reference to Fig. 2 described). In some cases, the storage system can associate the key 310-a with the host entity, for example in a public key table (e.g., a public key table 260, as described in reference to Fig. 2 described), so that the storage system can verify commands sent by the host system.

[0061] Additionally or alternatively, the host system and the storage system can use asymmetric key pairs. In such cases, the host system can store a private key associated with protection region 305, and the storage system can store a public key of the host system. For example, if a host entity is authorized to access protection region 305-a, the host system can store the private key associated with protection region 305-a in its keystore and transfer the corresponding public key to the storage system. The storage system can then store the public key in its keystore. In some cases, the public key received from the host system might be 305-a.

[0062] According to the techniques described in this document, the host system can transmit a command 315 for programming data to a protected region 305 of the storage system, and the host system can sign the command 315 using a key 310 associated with the protected region 305. In some examples, the host system can transmit the data to be programmed simultaneously with the command 315. For example, the host system can directly program protected region 305-a with data supplied with the command 315 signed using the appropriate key 310-a. Additionally or alternatively, the command 315 can include instructions to move data from another region 305 (for example, from one or more of the unprotected regions 305-d through 305-f). For example, the command 315 signed with the key 310-b can include instructions to move data from an unprotected region 305-d to the protected region 305-b.In some examples, the storage system can atomically move the data based on command 315, adding the data to the protection region 305-b while simultaneously protecting the data using key 310-b.

[0063] Fig. Figure 4 illustrates an example of a process flow 400 that supports authenticated modification of storage system data according to examples disclosed in this document. The process flow 400 can be implemented by a host system 105-b, for example using a host system controller, and by a storage system 110-b, for example using a controller, which can be examples of corresponding devices described with reference to Fig. 1 and Fig. The storage system 110-b can be an example of an eMMC system. In the following description of process flow 400, the operations can be performed in a different order than shown. For example, specific operations can be omitted from process flow 400, and other operations can be added to process flow 400.

[0064] In some examples, process flow 400 may involve the generation of public keys that can be communicated between host system 105-b and storage system 110-b. These public keys can be referred to as asymmetric keys or asymmetric public keys (e.g., public keys of an asymmetric key pair, public keys corresponding to a respective private key of an asymmetric key pair). The generation of such public keys may be based on private keys managed on the respective system, with such private keys not being shared outside of that system. Such techniques may enable host system 105-b and storage system 110-b to sign various transmitted signals (e.g., to authenticate a transmission system) or to verify various transmitted signals (e.g.,to encrypt (for information integrity), or both, without exchanging private identification information that is unique to each system. Accordingly, such techniques can improve the ability to communicate with authenticity and integrity compared to other techniques that do not involve the distribution of cryptographic hardware identification information, or where such distribution may be more vulnerable to cloning or theft, such as techniques that distribute symmetric keys in a potentially insecure manner.

[0065] For example, host system 105-b can generate a public key of the host system that can be based at least partially on a private key of the host system (e.g., calculated using one). In various examples, the private key of the host system can be stored on host system 105-b or generated otherwise using a private identifier, such as a backup configuration, an identity stored in non-volatile memory, a PUF of host system 105-b, or some other unique identifier of host system 105-b that can be protected from being cloned or extracted. In some examples, the public key of the host system can be associated with a particular host entity or range of addresses on storage system 110-b (e.g., a partition or a section thereof) or a storage protection attribute (e.g., a partition).These public key attributes may be assigned read protection, write protection, or a combination thereof. In some examples, such public key attributes may not be assigned to the generated public key of the host system, but may later be assigned to one or more symmetric keys that are generated at least partially based on the host system's public key, or may later be assigned by the storage system 110-a.

[0066] In some examples, process flow 400 may involve an exchange of one or more keys between host system 105-b and storage system 110-b. For example, at 415, host system 105-b may transmit one or more keys associated with the respective protection regions of storage system 110-b, which can be received by storage system 110-b. In some examples (e.g., when host system 105-b and storage system 110-b are configured to support symmetric keys, encryption, or both), storage system 110-b may transmit one or more public keys for storage system 110-b at 420, which can be received by host system 105-b. In some examples, the transmitted public keys may be stored on the respective receiving system (e.g.,in the key storage 215, in the key storage 250), such as in non-volatile memory of the respective receiving system, or otherwise communicating with it. In some other examples, such transmitted or received public keys cannot be stored, but keys generated based on such transmitted or received public keys can be stored during further processing. In some examples, such asymmetric public keys can be updateable, with such an update being initiated based on a timer or event, and such updated or replacing asymmetric public keys subsequently generated can accordingly be transmitted from a generating system to a receiving system.

[0067] In some examples, process flow 400 may involve the generation of symmetric keys by the host system 105-b and the storage system 110-b, which can be calculated at least partially based on the respective public keys received. Such symmetric keys may be generated in such a way that they are the same or otherwise equivalent between the two systems (e.g., as a shared secret) or otherwise operational so that one can be used to authenticate information signed using the other, or one can be used to decode information encoded with the other or both, while avoiding the transmission of private information.For example, host system 105-b can generate a symmetric key at 425 that may be based at least partially on (or be computed using) the one or more keys transmitted by storage system 110-b at 420 and the one or more keys of host system 105-b. Furthermore, storage system 110-b can also generate a symmetric key at 430 that may be based at least partially on (or be computed using) the one or more keys transmitted by host system 105-b at 415 and the one or more keys of storage system 110-b. In some examples, such symmetric keys can be generated using Diffie-Hellman techniques or other exponential key exchange or generation protocols, including ellipse curve techniques.In some examples, the generated symmetric keys can be stored on the generation system (e.g., in a key storage), such as in a non-volatile memory of the respective generation system, or communicating with it in some other way.

[0068] Process flow 400 can describe the transmission of a command from host system 105-b to storage system 110-b to program data onto one or more protection regions of storage system 110-b. At 435, the command can be signed. For example, host system 105-b can send a signed command to program data onto a protection region of storage system 110-b (e.g., protection region 305, as referenced in Fig. 3) generate, such as a modification instruction. In some cases, generating the signed instruction may involve generating a signature by performing a hash procedure using a key associated with the protected region of storage system 110-b and the instruction, and including the signature in the instruction. Accordingly, the signed instruction may include a modification instruction (e.g., the instruction to program data onto storage system 110-b) and the signature generated using the hash procedure.

[0069] At port 440, the signed instruction can be transmitted to storage system 110-b. For example, host system 105-b can transmit the signed instruction to storage system 110-b. In some examples, host system 105-b can additionally transmit information to storage system 110-b indicating that the signed instruction has been signed. For example, host system 105-b can modify the state of a channel between host system 105-b and storage system 110-b to indicate that the signed instruction is signed. In some examples, at port 445, the data to be programmed can be transmitted. For example, host system 105-b can transmit the data to be programmed simultaneously with the instruction. Additionally or alternatively, the instruction can include instructions to move data from another region (e.g., an unprotected region) of storage system 110-b to the protected region.

[0070] At port 450, the signed command can be authenticated. For example, storage system 110-b can authenticate the signed command using the included signature. In some cases, authenticating the signed command may involve performing a hash procedure or otherwise translating the signature included in the signed command using the key associated with the read-protected region of storage system 110-b to determine the identity of host system 105-b. In some cases, the identity of host system 105-b may include a specification of a host entity that initiated the command, such as a host entity 210, referencing... Fig. 2 was described.

[0071] In some cases, the key assigned to the storage system's protection region may be a key stored by the host system 105-b (e.g., in key store 215, as described in reference to Fig. 2 described), such as a private key for host system 105-b, which may be paired with a public key of host system 105-b (e.g., the private key and the public key may be part of an asymmetric key pair). The host system can transmit the public key to storage system 110-b, for example, via a virtual authenticated channel 205, as described in reference to Fig. 2 described. In such cases, the host system 105-b can encrypt the command at port 435 using the private key for the host system 105-b. Similarly, the storage system 110-b can authenticate the command at port 450 using a public key for the host system 105-b.

[0072] Additionally or alternatively, the key associated with the protection region of the shared key is stored by the host system 105-b (e.g., in key store 250, as described in reference to Fig. 2), which can be shared with a key of storage system 110-b (e.g., the key of host system 105-b and the key of storage system 110-b can be part of a symmetric key pair). The host system can transfer the shared key to storage system 110-b, for example, via a virtual authenticated channel 205, as described in reference to Fig. 2 described. In such cases, the host system 105-b can encrypt the command at 440 using the shared key. Similarly, the storage system 110-b can authenticate the command at 450 using a shared key.

[0073] At port 455, it can be determined whether host system 105-b is authorized to program data onto the protected region of storage system 110-b. For example, storage system 110-b can determine whether the signature of the signed command matches a signature generated by the hash procedure performed at port 450. If the received signature and the generated signature match, storage system 110-b can determine that host system 105-b is authorized to access the protected region. In such cases, storage system 110-b can program the data onto the protected region as requested by host system 105-b.

[0074] Additionally or alternatively, the storage system may determine at 450 that the signature of the received signed instruction does not match the signature generated using the hash procedure performed at 450. For example, the instruction may have been signed using a key associated with a different protection region (e.g., a second protection region). In such cases, the storage system may choose not to program the data to the protection region.

[0075] In some cases, host system 105-b can update the key associated with the read-protection region. For example, host system 105-b can generate a second key associated with the read-protection region of storage system 110-b and transfer this second key to storage system 110-b. Accordingly, storage system 110-b can update the key associated with the read-protection region, for example, by updating key store 250, public key table 260, or both, as described in [reference to]. Fig. 2 described. In some cases, the host system 105-b can update the key associated with the read-protection region after a certain period of time (e.g., a crypto period).

[0076] In some cases, one or more protection regions of the Storage System 110-b can be updated. For example, the Storage System 110-b can adjust the size of one or more protection regions, such as by including more or fewer memory cells in a resized protection region. Additionally or alternatively, the Storage System 110-b can adjust an address range of one or more protection regions. For example, as part of adjusting a protection region from a first address range to a second address range, the Storage System 110-b can transfer data (e.g., read-protected or write-protected data) stored in the first address range to the second address range. In some cases, an updated protection region can be associated with the same key both before and after the update.In some cases, the host system 105-b can send a command to the storage system 110-b to update one or more protection regions.

[0077] Aspects of process flow 400 can be implemented by a controller, among other components. Additionally or alternatively, aspects of process flow 400 can be implemented as instructions stored in memory (e.g., firmware stored in memory coupled to storage system 110-b, host system 105-b, or both). For example, when executed by a controller, these instructions can cause the controller to perform the operations of process flow 400.

[0078] Fig. Figure 5 shows a block diagram 500 of a host system 520 that supports authenticated modification of storage system data according to the examples disclosed in this document. The host system 520 can be an example of aspects of a host system as described with reference to Fig. 1, Fig. 2, Fig. 3 to Fig. 4. The host system 520, or various components thereof, can be an example of a means for performing various aspects of authenticated modification of storage system data, as described in this document. For example, the host system 520 can include a key transmission component 525, a signaling transmission component 530, a key receiving component 535, a key management component 540, or any combination thereof. Each of these components can communicate with each other directly or indirectly (e.g., via one or more buses).

[0079] The key transfer component 525 can be configured as a means for a host system to transfer one or more keys associated with the host system to a storage system, or otherwise support this, wherein each of the one or more transferred keys associated with the host system serves to assign to a respective protection region from one or more protection regions on the storage system. The signaling transfer component 530 can be configured as a means for a host system to transfer a signed command for programming data to a first protection region from one or more protection regions on the storage system, or otherwise support this.In some examples, the signed command is at least partially signed based on a counterpart key associated with the host system and corresponds to a first transmitted key of one or more transmitted keys associated with the host system, and the first protection region is associated with the first transmitted key associated with the host system.

[0080] In some examples, the key-receiving component 535 can be configured on the host system as a means of receiving one or more public keys associated with the storage system, or otherwise support this. In some examples, the counterpart key includes a private key associated with the host system, each of the one or more received public keys associated with the storage system corresponding to a respective private key associated with the storage system and being distinct from each of these one or more transmitted keys associated with the host system, and the signed command is furthermore signed at least partially based on a first received public key of the one or more received public keys associated with the storage system.

[0081] In some examples, the key management component 540 may be configured or otherwise support the generation of a symmetric key at least partially based on the first private key associated with the host system and the first received public key associated with the storage system, with the signed command being signed at least partially based on the generated symmetric key.

[0082] In some examples, the signaling transmission component 530 can be configured by the host system to transmit, or otherwise support, a second signed instruction for programming second data to a second protected region of one or more protected regions on the storage system. In some examples, the second signed instruction is at least partially signed based on a counterpart key associated with the host system and corresponds to a second transmitted key of one or more transmitted keys associated with the host system, and the second protected region is associated with the second transmitted key associated with the host system.

[0083] In some examples, the first transmitted key associated with the host system and the second transmitted key associated with the host system are the same key. In other examples, the first protection region differs from the second protection region.

[0084] In some examples, the first transmitted key associated with the host system differs from the second transmitted key associated with the host system. In some examples, the first protection region and the second protection region are the same protection region.

[0085] In some examples, the first transmitted key associated with the host system differs from the second transmitted key associated with the host system. In some examples, the first protection region differs from the second protection region.

[0086] In some examples, the key transfer component 525 can be configured by the host system, or otherwise support, the transmission of an updated key associated with the host system, wherein the first protection region on the storage system is associated at least partially with the updated key based on the transmission of the updated key. In some examples, the signaling transfer component 530 can be configured by the host system, or otherwise support, the transmission of a second signed command to program second data onto the first protection region on the storage system, wherein the second signed command is signed at least partially based on a counterpart key corresponding to the updated key.

[0087] In some examples, the signaling transmission component 530 may be configured as a means of transmitting the data in conjunction with the signed command to program the data to the first protection region, or may otherwise support this.

[0088] In some examples, the signed command for programming the data to the first protection region includes instructions for moving the data to the first protection region from a location on the storage system outside the first protection region.

[0089] In some examples, the signaling transmission component 530 can be configured to transmit to the storage system an indication of the size of the first protection region, an address range corresponding to the first protection region, or any combination thereof, or otherwise support it.

[0090] Fig. Figure 6 shows a block diagram 600 of a storage system 620 that supports authenticated modification of storage system data in accordance with examples disclosed in this document. The storage system 620 can be an example of aspects of a storage system as described with reference to Fig. 1, Fig. 2, Fig. 3 to Fig. 4. The Storage System 620, or various components thereof, can be an example of a means for performing various aspects of authenticated modification of Storage System data, as described in this document. For example, the Storage System 620 can include a Key Receive Component 625, a Signal Receive Component 630, a Key Transmit Component 635, a Key Management Component 640, or any combination thereof. Each of these components can communicate with each other directly or indirectly (e.g., via one or more buses).

[0091] The key receiving component 625 can be configured, or otherwise support, as a means of receiving one or more keys associated with the host system from a host system onto a storage system, wherein each of the one or more received keys associated with the host system corresponds to a respective counterpart key associated with the host system and serves to assign to a respective protection region from one or more protection regions on the storage system. The signaling receiving component 630 can be configured, or otherwise support, as a means of receiving, on the storage system, a signed command for programming data onto a first protection region from one or more protection regions on the storage system.In some examples, the signaling receiving component 630 can be configured, or otherwise assist, as a means of determining whether the data is to be programmed to the first protection region, at least partially based on attempts to decrypt a signature of the signed command. In some examples, the attempt to decrypt the signature of the signed command can be based at least partially on a first received key of one or more received keys associated with the host system, and the first protection region can be associated with the first received key associated with the host system.

[0092] In some examples, the key transfer component 635 can be configured as a means of transferring one or more public keys associated with the storage system from the storage system to the host system, or otherwise assisting in this process. In some examples, each of the one or more transferred public keys associated with the storage system corresponds to a respective private key associated with the storage system and is distinct from each of the one or more received keys associated with the host system, and the attempt to decrypt the signature of the signed command is further based, at least in part, on an initial private key associated with the storage system.

[0093] In some examples, the key management component 640 may be configured or otherwise support the generation of a symmetric key at least partially based on the first private key associated with the host system and the first received public key associated with the storage system, with the attempt to decrypt the signature of the signed command being based at least partially on the generated symmetric key.

[0094] The signaling receiver component 630 can, in some examples, be configured as a means of receiving, on the storage system, a second signed instruction for programming second data onto a second protection region from one or more protection regions on the storage system, or otherwise support this. In some examples, the signaling receiver component 630 can be configured as a means of determining whether the second data is to be programmed onto the second protection region, or otherwise support this, at least partially based on attempts to decrypt a signature of the second signed instruction.In some examples, the attempt to decrypt the signature of the second signed command may be based at least partially on a second received key of the one or more received keys associated with the host system, and the second protection region may be associated with the second received key associated with the host system.

[0095] In some examples, the first received key associated with the host system and the second received key associated with the host system are the same key. In other examples, the first protection region differs from the second protection region.

[0096] In some examples, the first received key associated with the host system differs from the second received key associated with the host system. In some examples, the first protection region and the second protection region are the same protection region.

[0097] In some examples, the first received key associated with the host system differs from the second received key associated with the host system. In some examples, the first protection region differs from the second protection region.

[0098] In some examples, the key receive component 625 may be configured on the storage system as a means of receiving an updated key associated with the host system, or may otherwise support this. In some examples, the key management component 640 may be configured as a means of mapping the first protection region on the storage system to the updated key, at least partially based on receiving the updated key, or may otherwise support this. The signaling receive component 630 may, in some examples, be configured as a means of receiving, on the storage system, a second signed command for programming second data on the first protection region on the storage system, or may otherwise support this.In some examples, the signaling receiving component 630 may be configured or otherwise assist in determining whether the second data is to be programmed to the first protection region, at least partially based on attempts to decrypt a signature of the second signed command, wherein the attempt to decrypt the signature of the second signed command is based at least partially on the updated key.

[0099] In some examples, the signaling receiving component 630 may be configured as a means of receiving the data in conjunction with the signed command to program the data to the first protection region, or may otherwise support this.

[0100] In some examples, the signed command for programming the data to the first protection region includes instructions for moving the data to the first protection region from a location on the storage system outside the first protection region.

[0101] In some examples, the signaling transmission component 630 may be configured by the host system to receive, or otherwise support, an indication of the size of the first protection region, an address range corresponding to the first protection region, or any combination thereof.

[0102] Fig. Figure 7 shows a flowchart illustrating a Method 700 that supports authenticated modification of storage system data according to examples disclosed in this document. The operations of Method 700 can be implemented by a host system or its components as described in this document. For example, the operations of Method 700 can be performed by a host system as described with reference to Fig. 1, Fig. 2, Fig. 3, Fig. 4 to Fig. Section 5 describes this. In some examples, a host system can execute a set of instructions to control the functional elements of the device to perform the described functions. Additionally or alternatively, the host system can perform aspects of the described functions using special hardware.

[0103] In 705, the procedure can involve the transfer of one or more keys associated with the host system by a host system to a storage system, each of the one or more transferred keys associated with the host system being used to assign a respective protection region to one or more protection regions on the storage system. The operations of 705 can be performed according to the examples disclosed in this document. In some examples, aspects of the operations of 705 can be performed by a key transfer component 525, as described in [reference to relevant document]. Fig. 5 described.

[0104] In 710, the procedure can involve the host system transmitting a signed instruction to program data onto a first protection region from one or more protection regions on the storage system. In some examples, the signed instruction can be signed based on a counterpart key associated with the host system and corresponding to a first transmitted key of the one or more transmitted keys associated with the host system, and the first protection region can be associated with the first transmitted key associated with the host system. The operations of 710 can be performed according to examples disclosed in this document. In some examples, aspects of the operations of 710 can be performed by a signaling transmission component 530, as described in [reference to relevant document]. Fig. 5 described.

[0105] In some examples, a device described in this document can perform one or more procedures, such as Procedure 700. The device may include features, circuitry, logic, means, or instructions (e.g., a non-transitory, computer-readable medium that stores instructions executable by a processor), or any combination thereof, to perform the following aspects of the present disclosure:

[0106] Aspect 1: A method or device comprising operations, features, circuitry, logic, means, or instructions, or any combination thereof, for transmitting one or more keys associated with a host system through the host system to a storage system, wherein each of the one or more transmitted keys associated with the host system serves to associate with a respective protection region of one or more protection regions on the storage system; and transmission of a signed instruction through the host system for programming data to a first protection region of one or more protection regions on the storage system, wherein: the signed instruction is at least partially signed based on a counterpart key associated with the host and corresponds to a first transmitted key of the one or more transmitted keys associated with the host system;and the first protection region is assigned to the first transferred key that is assigned to the host system.

[0107] Aspect 2: The method or device according to Aspect 1, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, for receiving at the host system one or more public keys associated with the storage system, wherein: the counterpart key includes a private key associated with the host system, each of the one or more received public keys associated with the storage system corresponding to a respective private key associated with the storage system and being distinct from each of these one or more transmitted keys associated with the host system, and the signed instruction is furthermore signed at least partially based on a first received public key of the one or more received public keys associated with the storage system.

[0108] Aspect 3: The method or device according to Aspect 2, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, for generating a symmetric key at least partially based on the first private key associated with the host system and the first received public key associated with the storage system, wherein the signed instruction is signed at least partially based on the generated symmetric key.

[0109] Aspect 4: The method or device according to any of aspects 1 to 3, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, for transmitting a second signed instruction for programming second data to a protected region of one or more protected regions on the storage system by the host system, wherein: the second signed instruction is signed at least partially based on a second counterpart key associated with the host system and corresponds to a second transmitted key of one or more transmitted keys associated with the host system, and the second protected region is associated with the second transmitted key associated with the host system.

[0110] Aspect 5: The method or device according to Aspect 4, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, such that the first transmitted key associated with the host system and the second transmitted key associated with the host system are the same key and the first protection region is different from the second protection region.

[0111] Aspect 6: The method or device according to any of Aspects 4 to 5, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, such that the first transmitted key associated with the host system is different from the second transmitted key associated with the host system, and the first protection region and the second protection region are the same protection region.

[0112] Aspect 7: The method or device according to any of Aspects 4 to 6, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, such that the first transmitted key associated with the host system is different from the second transmitted key associated with the host system, and the first protection region is different from the second protection region.

[0113] Aspect 8: The method or device according to any of aspects 1 to 7, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, for transmitting an updated key associated with the host system through the host system, wherein the first protection region on the storage system is associated with the updated key at least partially based on the transmission of the updated key and the transmission by the host system of a second signed instruction for programming second data to the first protection region on the storage system, wherein the second signed instruction is signed at least partially based on a counterpart key corresponding to the updated key.

[0114] Aspect 9: The method or device according to any of aspects 1 to 8, which further includes operations, features, circuits, logic, means or instructions or any combination thereof for transferring the data in conjunction with the signed command for programming the data to the first protection region.

[0115] Aspect 10: The method or device according to any of Aspects 1 to 9, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, such that the signed instruction for programming the data to the first protection region includes instructions for moving the data to the first protection region from a storage location on the storage system outside the first protection region.

[0116] Aspect 11: The method or device according to any of Aspects 1 to 10, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, for transmitting to the storage system an indication of a first protection region size, an address range corresponding to the first protection region, or any combination thereof.

[0117] Fig. Figure 8 shows a flowchart illustrating a Method 800 that supports authenticated modification of storage system data according to the examples disclosed in this document. The operations of Method 800 can be implemented by a storage system or its components as described in this document. For example, the operations of Method 800 can be performed by a storage system as described with reference to the Fig. Sections 1 to 4 and 6 describe this. In some examples, a memory system can execute a set of instructions to control the functional elements of the device to perform the described functions. Additionally or alternatively, the memory system can perform aspects of the described functions using special hardware.

[0118] In 805, the procedure can involve receiving one or more keys associated with the host system on a storage system from a host system, each of the one or more received keys associated with the host system corresponding to a respective counterpart key associated with the host system and serving to assign to a respective protection region of one or more protection regions on the storage system. The operations of 805 can be performed according to the examples disclosed in this document. In some examples, aspects of the operations of 805 can be performed by a key-receiving component 625, as described in [reference to relevant document]. Fig. 6 described.

[0119] In the case of 810, the procedure can involve receiving a signed instruction on the storage system for programming data onto a first protection region of one or more protection regions on the storage system. The operations of 810 can be performed according to the examples disclosed in this document. In some examples, aspects of the operations of 810 can be performed by a signaling receiving component 630, as described in [reference to...]. Fig. 6 described.

[0120] In 815, the procedure for determining whether the data is to be programmed to the first protection region may involve, at least in part, attempts to decrypt a signature of the signed command. In some examples, the attempt to decrypt the signature of the signed command may be based on a first received key of one or more received keys associated with the host system, and the first protection region may be associated with the first received key associated with the host system. The operations of 815 may be performed according to examples disclosed in this document. In some examples, aspects of the operations of 815 may be performed by a signaling receiving component 630, as described in [reference to relevant document]. Fig. 6 described.

[0121] In some examples, a device described in this document can perform one or more procedures, such as Procedure 800. The device may include features, circuitry, logic, means, or instructions (e.g., a non-transitory computer-readable medium that stores instructions executable by a processor), or any combination thereof, to perform the following aspects of the present disclosure:

[0122] Aspect 12: A method or device that performs operations, features, circuits, logic, means, or instructions, or any combination thereof, for receiving one or more keys associated with a host system at a storage system from the host system, wherein each of the one or more received keys associated with the host system corresponds to a respective counterpart key associated with the host system and is used for mapping to a respective protection region of one or more protection regions on the storage system; receiving a signed instruction at the storage system for programming data onto a first protection region of one or more protection regions on the storage system;and determine whether the data is to be programmed to the first protection region, at least partially based on attempts to decrypt a signature of the signed command, wherein: the attempts to decrypt the signature of the signed command are based at least partially on a first received key of the one or more received keys associated with the host system; and the first protection region is associated with the first received key associated with the host system.

[0123] Aspect 13: The method or device according to Aspect 12, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, for transmitting one or more public keys associated with the storage system through the storage system to the host system, wherein: each of the one or more public keys transmitted that are associated with the storage system corresponds to a respective private key associated with the storage system and is distinct from each of these one or more keys received that are associated with the host system; and the attempt to decrypt the signature of the signed command is further based, at least in part, on a first private key associated with the storage system.

[0124] Aspect 14: The method or device according to Aspect 13, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, for generating a symmetric key at least partially based on the first received key associated with the host system and the first private key associated with the storage system, wherein the attempt to decrypt the signature of the signed instruction is based at least partially on the generated symmetric key.

[0125] Aspect 15: The method or device according to any of aspects 12 to 14, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, for receiving, on the storage system, a second signed instruction for programming second data onto a second protected region of one or more protected regions on the storage system and determining whether the second data is to be programmed onto the second protected region, at least partially based on attempts to decrypt a signature of the second signed instruction, wherein: the attempt to decrypt the signature of the second signed instruction is based at least partially on a second received key of one or more received keys associated with the host system; and the second protected region is associated with the second received key associated with the host system.

[0126] Aspect 16: The method or device according to Aspect 15, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, such that the first received key associated with the host system and the second received key associated with the host system are the same key and the first protection region is different from the second protection region.

[0127] Aspect 17: The method or device according to any of Aspects 15 to 16, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, such that the first received key associated with the host system is different from the second received key associated with the host system, and the first protection region and the second protection region are the same protection region.

[0128] Aspect 18: The method or device according to any of Aspects 15 to 17, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, such that the first transmitted key associated with the host system is different from the second transmitted key associated with the host system, and the first protection region is different from the second protection region.

[0129] Aspect 19: The method or device according to any of aspects 12 to 18, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, for receiving an updated key associated with the host system on the storage system; mapping the first protection region on the storage system to the updated key at least partially based on receiving the updated key; receiving a second signed instruction on the storage system for programming second data onto the first protection region on the storage system; and determining whether the second data is to be programmed onto the first protection region, at least partially based on attempts to decrypt a signature of the second signed instruction, the attempts to decrypt the signature of the second signed instruction being based at least partially on the updated key.

[0130] Aspect 20: The method or device according to any of Aspects 12 to 19, which further includes operations, features, circuits, logic, means or instructions or any combination thereof for receiving the data in conjunction with the signed command for programming the data to the first protection region.

[0131] Aspect 21: The method or device according to any of Aspects 12 to 20, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, such that the signed instruction for programming the data to the first protection region includes instructions for moving the data to the first protection region from a storage location on the storage system outside the first protection region.

[0132] Aspect 22: The method or device according to any of Aspects 12 to 21, further comprising operations, features, circuits, logic, means or instructions, or any combination thereof, for receiving from the host system an indication of a size of the first protection region, an address range corresponding to the first protection region, or any combination thereof.

[0133] It should be noted that the procedures described above represent possible implementations, and that the operations and steps can be rearranged or otherwise modified, and that other implementations are possible. Furthermore, sections of two or more of the procedures can be combined.

[0134] The information and signals described in this document can be represented using a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be mentioned in the description above can be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof. In some diagrams, signals may be illustrated as a single signal; however, the signal may represent a bus of signals, where the bus may have a variety of bit widths.

[0135] The terms "electronic communication," "conductive contact," "connected," and "coupled" can refer to a relationship between components that supports the flow of signals between them. Components are considered to be electronically communicating with each other (or in conductive contact, connected, or coupled) if there is a conductive path between them that can support the flow of signals between them at any given time. At any given time, the conductive path between components that are in electronic communication with each other (or in conductive contact, connected, or coupled) can be an open circuit or a closed circuit, depending on the operation of the device that includes the connected components.The conductive path between the connected components can be a direct conductive path between the components themselves, or it can be an indirect conductive path that may include intermediate components such as switches, transistors, or other devices. In some examples, the flow of signals between the connected components may be temporarily interrupted, for example, by using one or more intermediate components such as switches or transistors.

[0136] The term "coupling" refers to a state in which an open circuit between components, where signals cannot currently be transmitted via a conductive path between the components, transitions to a closed circuit between components, where signals can be transmitted via the conductive path between the components. If a component, such as a controller, couples other components, the component initiates a change that allows signals to flow between the other components via a conductive path that previously did not permit signal flow.

[0137] The term "isolated" refers to a relationship between components in which no signals can currently flow between them. Components are isolated from each other if there is an open circuit between them. For example, two components separated by a switch positioned between them are isolated if the switch is open. If a controller isolates two components, the controller causes a change that prevents signals from flowing between the components using a conductive path that previously allowed signal flow.

[0138] The terms "if", "when", "based on", or "at least partially based on" can be used interchangeably. In some examples, if the terms "if", "when", "based on", or "at least partially based on" are used to describe a conditional action, a conditional process, or a connection between sections of a process, the terms can be used interchangeably.

[0139] The term "in response to" can refer to a condition or action occurring at least partially, if not entirely, as a consequence of a preceding condition or action. For example, a first condition or action may be performed, and a second condition or action may occur at least partially as a consequence of the occurrence of the preceding condition or action (either directly after or following one or more other intermediate conditions or actions that occur after the first condition or action).

[0140] Furthermore, the terms "directly in response to" or "in direct response to" can refer to a condition or action that occurs as a direct consequence of a previous condition or action. In some examples, a first condition or action may be performed, and a second condition or action may occur directly as a consequence of the occurrence of the previous condition or action, regardless of whether other conditions or actions occur.In some examples, a first condition or action may be performed, and a second condition or action may occur directly as a consequence of the occurrence of the previous condition or action, such that no other intermediate conditions or actions occur between the earlier condition or action and the second condition or action, or a limited number of one or more intermediate steps or actions occur between the earlier condition or action and the second condition or action. Any condition or action described in this writing as being performed "based on," "at least partly based on," or "in response to" another step, action, event, or condition may be additionally or alternatively (e.g.,(in an alternative example) “as a direct response to” or “directly in response to” such other condition or action is to be carried out, unless otherwise specified.

[0141] The devices discussed in this paper, including a storage array, can be formed on a semiconductor substrate such as silicon, germanium, a silicon-germanium alloy, gallium arsenide, gallium nitride, etc. In some examples, the substrate is a semiconductor wafer. In others, the substrate may be a silicon-on-insulator (SOI) substrate, such as silicon-on-glass (SOG) or silicon-on-sapphire (SOP), or epitaxial layers of semiconductor materials on another substrate. The conductivity of the substrate or parts thereof can be controlled by doping using various chemicals, including phosphorus, boron, or arsenic. Doping can be performed during the initial formation or growth of the substrate by ion implantation or by another dopant.

[0142] A switching component or transistor discussed in this paper may be a field-effect transistor (FET) and comprise a three-terminal device including a source, a drain, and a gate. The terminals may be connected to other electronic elements by conductive materials, such as metals. The source and drain may be conductive and may comprise a heavily doped, such as degenerated, semiconductor region. The source and drain may be separated by a lightly doped semiconductor region or channel. If the channel is n-type (i.e., most charge carriers are electrons), the FET may be called an n-type FET. If the channel is p-type (i.e., most charge carriers are holes), the FET may be called a p-type FET. The channel may be covered by an insulating gate oxide.Channel conductance can be controlled by applying a voltage to the gate. For example, applying a positive or negative voltage to an n-type or p-type FET, respectively, will cause the channel to conduct. A transistor can be "on" or "enabled" if a voltage greater than or equal to the transistor's threshold voltage is applied to the transistor gate. The transistor can be "off" or "disabled" if a voltage less than the transistor's threshold voltage is applied to the transistor gate.

[0143] The description presented in this document, in conjunction with the accompanying drawings, describes exemplary configurations and does not represent all examples that can be implemented or that fall within the scope of the claims. The term "exemplary" as used in this document means "serving as an example, case, or illustration" and not "preferred" or "advantageous over other examples." The detailed description includes specific details to provide an understanding of the described techniques. However, these techniques can also be applied without these specific details. In some instances, known structures and devices are represented in the form of block diagrams to avoid obscuring the concepts of the described examples.

[0144] In the accompanying figures, similar components or features may have the same reference numeral. Furthermore, different components of the same type may be distinguished by a hyphen following the reference numeral and a second designation that differentiates the similar components from one another. If only the first reference numeral is used in the patent specification, the description applies to each of the similar components with the same first reference numeral, irrespective of the second reference numeral.

[0145] The functions described in this document can be implemented in hardware, processor-executed software, firmware, or any combination thereof. When implemented in processor-executed software, the functions can be stored as one or more instructions or code on or transmitted via a computer-readable medium. Other examples and implementations fall within the scope of the disclosure and the appended claims. Due to the nature of software, the functions described above can be implemented, for example, using processor-executed software, hardware, firmware, hardwiring, or combinations thereof. Features implementing functions can also be physically located in different positions, including a distribution such that sections of functions are implemented at different physical locations.

[0146] For example, the various illustrative blocks and components described in connection with the disclosure in this document can be implemented or carried out using a general-purpose processor, a DSP, an ASIC, an FPGA or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof, configured to perform the functions described in this document. A general-purpose processor can be a microprocessor; alternatively, the processor can be any processor, controller, microcontroller, or state machine. A processor can also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration).

[0147] As used in this document, including in the claims, "or" in a list of elements (e.g., in a list of elements preceded by a phrase such as "at least one of" or "one or more of") means an all-encompassing list, so that, for example, a list of at least one of A, B, or CA, or B or C, or AB or AC, or BC or ABC (i.e., A and B and C) means A and B and C. Furthermore, the expression "based on," as used in this document, is not to be interpreted as referring to a closed set of conditions. For example, an exemplary step described as "based on condition A" may be based on both condition A and condition B without departing from the scope of protection of the present disclosure. In other words, the phrase "based on," as used in this document, must be interpreted in the same way as the expression "at least partly based on."

[0148] Computer-readable media include both non-transitory computer storage media and communication media, including any media that facilitate the transfer of a computer program from one location to another. A non-transitory storage medium can be any available medium accessible to a general-purpose or specialized computer.As an example, and not limited to, non-transitory computer-readable media may include: RAM, ROM, electrically erasable programmable read-only memory (EEPROM), compact disc ROM (CD-ROM) or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other non-transitory medium that can be used to carry or store desired program code resources in the form of instructions or data structures and that can be accessed by a general-purpose or specialized computer. Moreover, any such connection is more appropriately termed a computer-readable medium.If the software is transmitted, for example, from a website, server, or other remote source via a coaxial cable, fiber optic cable, twisted-pair cable, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then these technologies are included in the definition of "medium." The data carriers used in this document include CDs, laserdiscs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, with floppy disks typically reproducing data magnetically, while discs reproduce data optically using lasers. Combinations of the aforementioned methods are also included within the scope of computer-readable media.

Claims

[1] Host system (105, 105-a, 105-b) comprising the following: a controller (106, 106-a) configured to couple with a storage system (110, 110-a, 110-b), wherein the controller (106, 106-a) is configured to cause the host system (105, 105-a, 105-b) to do the following: Receiving (420) one or more public keys by the host system (105, 105-a, 105-b) that are associated with the storage system (110, 110-a, 110-b), each of the one or more received public keys (310a, 310-b, 310-c, 310-d) that are associated with the storage system (110, 110-a, 110-b) corresponds to a respective private key that is associated with the storage system (110, 110-a, 110-b); Generating (425) a symmetric key at least partially based on a private key associated with the host system (105, 105-a, 105-b) and a first received public key (310-a) of one or more received public keys (310a, 310-b, 310-c, 310-d) associated with the storage system (110, 110-a, 110-b); and Transfer (440, 710) of a signed instruction to the storage system (110, 110-a, 110-b) for programming data onto a first protection region (305-a) from one or more protection regions (305-a, 305-b, 305-c, 305-d, 305-e, 305-f) on the storage system (110, 110-a, 110-b), wherein the signed instruction is at least partially signed based on the generated symmetric key. [2] Host system (105, 105-a, 105-b) according to claim 1 wherein the controller (106, 106-a) is further configured to cause the host system (105, 105-a, 105-b) to do the following: Transferring a second signed instruction to the storage system (110, 110-a, 110-b) for programming second data onto a second protection region (305-b) of one or more protection regions (305-a, 305-b, 305-c, 305-d, 305-e, 305-f) on the storage system (110, 110-a, 110-b), wherein: the second signed command is at least partially signed based on a second private key associated with the host system (105, 105-a, 105-b), and the second private key corresponds to a second public key (310-b) of one or more public keys (310a, 310-b, 310-c, 310-d) associated with the host system (105, 105-a, 105-b); and the second protection region (305-b) is assigned to the second public key (310-b), which is assigned to the host system (105, 105-a, 105-b). [3] Host system (105, 105-a, 105-b) according to claim 2, wherein: the first public key (310-a) of the one or more public keys (310a, 310-b, 310-c, 310-d) associated with the host system (105, 105-a, 105-b), and the second public key (310-b) of the one or more public keys (310a, 310-b, 310-c, 310-d) associated with the host system (105, 105-a, 105-b) are the same key; and the first protection region (305-a) differs from the second protection region (305-b). [4] Host system (105, 105-a, 105-b) according to claim 2, wherein: the first public key (310-c) of the one or more public keys (310a, 310-b, 310-c, 310-d) associated with the host system (105, 105-a, 105-b) differs from the second public key (310-d) of the one or more public keys (310a, 310-b, 310-c, 310-d) associated with the host system (105, 105-a, 105-b); and the first protection region (305-c) and the second protection region are the same protection region (305-c). [5] Host system (105, 105-a, 105-b) according to claim 2, wherein: the first public key (310-a) of the one or more public keys (310a, 310-b, 310-c, 310-d) associated with the host system (105, 105-a, 105-b) differs from the second public key (310-b) of the one or more public keys (310a, 310-b, 310-c, 310-d) associated with the host system (105, 105-a, 105-b); and the first protection region (305-a) differs from the second protection region (305-b). [6] Host system (105, 105-a, 105-b) according to any of the preceding claims, wherein the controller (106, 106-a) is further configured to cause the host system (105, 105-a, 105-b) to do the following: Transferring an updated key associated with the host system (105, 105-a, 105-b), wherein the first protection region (305-a) on the storage system (110, 110-a, 110-b) is at least partially associated with the updated key based on the transfer of the updated key; and Transmission of a second signed instruction by the host system to program second data to the first protection region (305-a) on the storage system (110, 110-a, 110-b), wherein the second signed instruction is at least partially signed based on a private key corresponding to the updated key. [7] Host system (105, 105-a, 105-b) according to any of the preceding claims, wherein the controller (106, 106-a) is further configured to cause the host system (105, 105-a, 105-b) to do the following: Transfer (445) the data in conjunction with the signed command to program the data to the first protection region (305-a). [8] Host system (105, 105-a, 105-b) according to any of the preceding claims, wherein the signed instruction for programming the data to the first protection region (305-a) comprises instructions for moving the data to the first protection region (305-a) from a storage location on the storage system (110, 110-a, 110-b) outside the first protection region (305-a). [9] Host system (105, 105-a, 105-b) according to any of the preceding claims, wherein the controller (106, 106-a) is further configured to cause the host system (105, 105-a, 105-b) to do the following: Transferring a specification of the size of the first protection region (305-a), an address range corresponding to the first protection region (305-a), or any combination thereof to the storage system (110, 110-a, 110-b). [10] Storage system (110, 110-a, 110-b) comprising the following: a storage device (130-a, 130-b); and a controller (115, 115-a) for the storage device (130-a, 130-b) and configured to cause the storage system (110, 110-a, 110-b) to do the following: Receiving (415, 805) one or more public keys associated with a host system (105, 105-a, 105-b) from the host system (105, 105-a, 105-b), wherein each public key of the one or more received public keys (310-a, 310-b, 310-c, 310-d) associated with the host system (105, 105-a, 105-b) corresponds to a respective private key associated with the host system (105, 105-a, 105-b); Generating a symmetric key at least partially based on a first public key of the several received public keys (310-a, 310-b, 310-c, 310-d) associated with the host system (105, 105-a, 105-b) and the first private key associated with the storage system (110, 110-a, 110-b). Receiving (440, 810) a signed instruction to program data onto a first protection region (305-a) from one or more protection regions (305-a, 305-b, 305-c, 305-d, 305-e, 305-f) on the storage system (110, 110-a, 110-b), wherein the signed instruction is at least partially signed based on the generated symmetric key; and Determine whether the data is to be programmed to the first protection region (305-a), at least partially based on attempts to decrypt a signature of the signed command, wherein the attempts to decrypt the signature of the signed command are based at least partially on the generated symmetric key. [11] Storage system (110, 110-a, 110-b) according to claim 10, wherein the controller (115, 115-a) is further configured to cause the storage system (110, 110-a, 110-b) to do the following: Transfer (420) one or more public keys associated with the storage system (110, 110-a, 110-b) to the host system (105, 105-a, 105-b), wherein: Each of the one or more public keys associated with the storage system (110, 110-a, 110-b) corresponds to a respective private key associated with the storage system (110, 110-a, 110-b) and is distinct from each of the one or more received keys associated with the host system (105, 105-a, 105-b); and the attempt to decrypt the signature of the signed command, furthermore based at least partially on a first private key that is assigned to the storage system (110, 110-a, 110-b). [12] Storage system (110, 110-a, 110-b) according to any one of the preceding claims 10 to 11, wherein the controller (115, 115-a) is further configured to cause the storage system (110, 110-a, 110-b) to do the following: Receiving a second signed instruction to program second data onto a second protection region (305-b) of one or more protection regions (305-b, 305-c, 305-d, 305-e, 305-f) on the storage system (110, 110-a, 110-b), and Determine (455) whether the second data is to be programmed onto the second protection region (305-b), at least partially based on attempts to decrypt a signature of the second signed command, wherein: the attempt to decrypt the signature of the second signed command is based at least partially on a second received key of the one or more received keys associated with the host system (105, 105-a, 105-b); and the second protection region (305-b) is assigned to the second received key, which is assigned to the host system (105, 105-a, 105-b). [13] Storage system (110, 110-a, 110-b) according to claim 12, wherein: the first public key associated with the host system (105, 105-a, 105-b), and a second public key associated with the host system (105, 105-a, 105-b), are the same key; and the first protection region (305-a) differs from the second protection region (305-b). [14] Storage system (110, 110-a, 110-b) according to claim 12, wherein: the first public key (310-c) associated with the host system (105, 105-a, 105-b) differs from a second public key (310-d) associated with the host system (105, 105-a, 105-b); and the first protection region (305-c) and the second protection region (305-c) are the same protection region (305-c). [15] Storage system (110, 110-a, 110-b) according to claim 12, wherein: the first public key (310-a) associated with the host system (105, 105-a, 105-b) differs from a second public key (310-b) associated with the host system (105, 105-a, 105-b); and the first protection region (305-a) differs from the second protection region (305-b). [16] Storage system (110, 110-a, 110-b) according to one of the preceding claims, wherein the controller (115) is further configured to cause the storage system (110, 110-a, 110-b) to do the following: Receiving an updated key that is assigned to the host system (105, 105-a, 105-b); Assigning the first protection region (305-a) on the storage system (110, 110-a, 110-b) to the updated key at least partially based on receiving the updated key; Receiving a second signed instruction to program second data onto the first protection region (305-a) on the storage system (110, 110-a, 110-b); and Determine whether the second data is to be programmed to the first protection region (305-a), at least partially based on attempts to decrypt a signature of the second signed command, wherein the attempts to decrypt the signature of the second signed command are based at least partially on the updated key. [17] Storage system (110, 110-a, 110-b) according to one of the preceding claims, wherein the controller (115, 115-a) is further configured to cause the storage system (110, 110-a, 110-b) to do the following: Receiving (810) the data in conjunction with the signed command to program the data to the first protection region (305-a). [18] Storage system (110, 110-a, 110-b) according to one of the preceding claims, wherein the signed instruction for programming the data to the first protection region (305-a) comprises instructions for moving the data to the first protection region (305-a) from a storage location on the device outside the first protection region (305-a). [19] Storage system (110, 110-a, 110-b) according to one of the preceding claims, wherein the controller (115) is further configured to cause the storage system (110, 110-a, 110-b) to do the following: Receiving a specification of the size of the first protection region (305-a), an address range corresponding to the first protection region (305-a), or any combination thereof from the host system (105, 105-a, 105-b). [20] Non-transitory computer-readable medium storing a code comprising instructions which, when executed by a processor of an electronic device, cause the electronic device to: Receiving (420) one or more public keys by the host system (105, 105-a, 105-b) which are associated with the storage system (110, 110-a, 110-b), wherein each of the one or more received public keys which are associated with the storage system (110, 110-a, 110-b) corresponds to a respective private key which is associated with the storage system (110, 110-a, 110-b); Generating (425) a symmetric key at least partially based on a private key associated with the host system (105, 105-a, 105-b) and the first received public key associated with the storage system (110, 110-a, 110-b); and Transfer (440, 710) of a signed instruction by the host system (105, 105-a, 105-b) to the storage system (110, 110-a, 110-b) for programming data onto a first protection region (305-a) from one or more protection regions (305-a, 305-b, 305-c, 305-d, 305-e, 305-f) on the storage system (110, 110-a, 110-b), wherein the signed instruction is at least partially signed based on the generated symmetric key. [21] Non-transitory computer-readable medium that stores a code comprising instructions which, when executed by a processor of an electronic device, cause the electronic device to: Receiving (415, 805) one or more public keys (310-a, 310-b, 310-c, 310-d) associated with the host system (105, 105-a, 105-b) on a storage system (110, 110-a, 110-b) from a host system (105, 105-a, 105-b), wherein each public key of the one or more received public keys (310-a, 310-b, 310-c, 310-d) associated with the host system (105, 105-a, 105-b) corresponds to a respective private key associated with the host system (105, 105-a, 105-b); Generating a symmetric key at least partially based on a first public key of the several received public keys (310-a, 310-b, 310-c, 310-d) associated with the host system (105, 105-a, 105-b) and a first private key associated with the storage system (110, 110-a, 110-b). Receiving (440, 810) a signed instruction on the storage system (110, 110-a, 110-b) for programming data onto a first protection region (305-a) from one or more protection regions (305-a, 305-b, 305-c, 305-d, 305-e, 305-f) on the storage system (110, 110-a, 110-b), wherein the signed instruction is at least partially signed based on the generated symmetric key; and Determine (815) whether the data are to be programmed to the first protection region (305-a), at least partially based on attempts to decrypt a signature of the signed command, wherein the attempts to decrypt the signature of the signed command are based at least partially on the generated symmetric key.

Citation Information

Patent Citations

  • Electronic apparatus and information processing system

    US20180196661A1