CN116204111A - 管理命名空间的方法和存储设备 - Google Patents
管理命名空间的方法和存储设备 Download PDFInfo
- Publication number
- CN116204111A CN116204111A CN202111473853.3A CN202111473853A CN116204111A CN 116204111 A CN116204111 A CN 116204111A CN 202111473853 A CN202111473853 A CN 202111473853A CN 116204111 A CN116204111 A CN 116204111A
- Authority
- CN
- China
- Prior art keywords
- command
- password
- namespace
- state
- namespaces
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0637—Permissions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及管理命名空间的方法和存储设备,所述方法包括接收第一命令;响应于所述第一命令指示了第一命名空间,根据所述第一命名空间的状态对所述第一命令进行处理,以及改变或保持所述第一命名空间的状态。本申请的技术方案能够填补NVMe协议的不足,实现了命名空间的加密管理功能,从而提高了每个命名空间所存储的数据的安全性和私密性。
Description
技术领域
本申请一般地涉及数据处理技术领域。更具体地,本申请涉及用于管理命名空间的方法、控制器和存储设备。
背景技术
图1A展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机***接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速***组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102(下文中,将固态存储设备简称为存储设备)包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic RandomAccess Memory,动态随机访问存储器)110。
上述NVM芯片105包括NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(Magnetic Random Access Memory,磁阻存储器)、RRAM(Resistive RandomAccess Memory,阻变存储器)等是常见的存储介质。
上述接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
上述控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
在存储设备102中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址(LBA)到物理地址的映射信息。逻辑地址构成了操作***等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是存储设备中的重要元数据。FTL表的数据项记录了存储设备中以数据单元为单位的地址映射关系。
参看图1B,控制部件包括主机接口1041、主机命令处理单元1042、存储命令处理单元1043、介质接口控制器1044与存储介质管理单元1045。主机接口1041获取主机提供的IO命令。主机命令处理单元1042根据IO命令生成存储命令提供给存储命令处理单元1043。存储命令可以访问相同大小的存储空间,例如4KB。将NVM芯片中记录的对应一个存储命令所访问数据的数据单元称为数据帧。物理页记录一个或多个数据帧。例如,物理页的大小17664字节,而数据帧大小为4KB,则一个物理页能存储4个数据帧。
存储介质管理单元1045为每个存储命令维护逻辑地址到物理地址的转换。例如,存储介质管理单元1045包括FTL表(下文将对FTL进行解释)。对于读命令,存储介质管理单元1045输出存储命令所访问的逻辑地址(LBA)对应的物理地址。对于写命令,存储介质管理单元1045为其分配可用的物理地址,并记录其访问的逻辑地址(LBA)与分配的物理地址的映射关系。存储介质管理单元1045还维护诸如垃圾回收、磨损均衡等管理NVM芯片所需的功能。
存储命令处理单元1043根据存储介质管理单元1045提供的物理地址,操作介质接口控制器1044向NVM芯片105发出存储介质访问命令。
随着数据存储技术的不断提高,大容量的固态存储设备被广泛使用,为了提高数据的安全性和独立性,在使用过程中,通常需要把不同类型的数据存放在相对独立的空间内或者将不同用户的数据存放在相对独立的空间内。为了实现上述将不同类型数据或不同用户的数据存放在不同命名空间内的需求,可以在固态存储设备中创建多个命名空间(Namespace,NS),即将固态存储设备的内存空间划分为多个独立的逻辑空间,每个逻辑空间即为命名空间。对于主机而言,每个命名空间对应于一个独立的磁盘,即以磁盘的形式呈现,其逻辑地址是一段连续的范围;对于固态存储设备而言,每个命名空间包含若干个逻辑地址,这些逻辑地址之间可以连续,也可以不连续。一般来说,一个SSD默认有至少一个命名空间。用户可以根据不同的需求创建不同特征的命名空间,即在一个SSD上创建若干个不同的命名空间供相同或不同的用户使用。
发明内容
随着数据存储技术的不断提高,在固态存储设备使用过程中,除了考虑将不同类型的数据或不同用户的数据存放到不同的命名空间,还需要考虑每个命名空间所存储的数据的安全性和私密性,例如一些命名空间用于存储经常需要读写的数据,而另一些命名空间用于存储较为重要的、不宜进行读写的数据;甚至是,这些数据的类型还可能发生变化,譬如原本需要经常读写的数据变为不宜读写的数据,原本不宜读写的数据变为需要读写的数据。又如,每个用户拥有对应的命名空间来进行存储数据,用户不希望非授权者访问或者管理自己的命名空间。再如,用户不仅希望只有自己才能够访问或者管理自己的命名空间,还希望自己的命名空间在一些情况下处于显示状态,以便于自己的操作,在另一些情况下处于隐藏的状态,以避免他人的觊觎。基于此,为了提高命名空间所对应的数据的安全性和私密性,需要提供对每个命名空间进行加密管理的功能,但是在现有的NVMe协议中定义了命名空间以及其功能,并未定义对每个命名空间进行加密管理功能,因此,如何实现对每个命名空间进行加密管理功能成为亟待解决的问题。
为了满足以上需求,本申请的目的之一是提供命名空间粒度的加密管理功能,即为每个命名空间设置独立的加密状态(例如包括锁定状态和解锁状态),在不同的加密状态下,响应相应的功能,例如在锁定状态下,不能处理IO命令,在解锁状态下则能够处理IO命令。又如,利用不同的加密状态,还可以实现对命名空间的动态隐藏,使操作***和普通用户无法看到锁定状态下的命名空间,而管理员可以看到所有状态的命名空间,从而提高了存储设备的安全性,降低人为介入实施非授权操作的几率。
另外,在现有存储技术中存储空间加密密钥或解密密钥与所设置的用户口令息息相关,一般会随着用户口令的调整而变更,由于本申请实施例所提供的方案中,命名空间被设置了用户口令的功能,用户会有变更用户口令/删除用户口令/添加用户口令的需求。当命名空间中已经被写入了数据,对已经写入命名空间的数据变更用户口令(取消用户口令或新设用户),需要先将已写入的数据读出并通过变更前的用户口令所对应的密钥进行解密得到解密数据,然后再根据变更后的用户口令所对应的密钥对解密数据进行加密存储到命名空间中,由于命名空间的容量可以很大(几TB),这个操作是极其耗时的(可能需要几个小时),引起糟糕的用户体验。为了解决该问题本申请实施例所提供的方案通过切断口令与加密密钥或解密密钥之间的关联,本申请还能够在满足低延迟的要求下为命名空间中的数据提供加密和解密功能。
再者,本申请的另一目的是为命名空间提供口令管理功能,即使得用户能够为一个命名空间设置口令,或者为不同的命名空间设置相同或不同的口令,从而为命名空间设置访问和处理的权限,从而提高了安全性。
还有,本申请利用较为简单的预定义命令(不同于NVMe协议)进行命名空间的管理以及口令密码管理,避免采用复杂类型的协议,提高了命令处理的效率。
基于本申请的第一方面,提供了根据本申请第一方面的第一管理命名空间的方法,包括接收第一命令;响应于所述第一命令指示了第一命名空间,根据所述第一命名空间的状态对所述第一命令进行处理,以及改变或保持所述第一命名空间的状态。
根据本申请第一方面的第一管理命名空间的方法,提供了根据本申请第一方面的第二管理命名空间的方法,所述第一命名空间的状态分为:锁定状态和解锁状态。
根据本申请第一方面的第二管理命名空间的方法,提供了根据本申请第一方面的第三管理命名空间的方法,所述解锁状态分为:有口令解锁状态和无口令解锁状态。
根据本申请第一方面的第二或第三管理命名空间的方法,提供了根据本申请第一方面的第四管理命名空间的方法,响应于所述第一命令指示了第一命名空间,根据所述第一命名空间的状态对所述第一命令进行处理,包括:查询所述第一命名空间的状态;响应于所述第一命名空间的状态为解锁状态,执行所述第一命令;响应于所述第一命名空间的状态为锁定状态,不执行所述第一命令。
根据本申请第一方面的第一至第四管理命名空间的方法之一,提供了根据本申请第一方面的第五管理命名空间的方法,响应于所述第一命令指示了第一命名空间,根据所述第一命名空间的状态对所述第一命令进行处理,还包括:将用户输入的第一口令与存储的所述第一命名空间的第二口令进行匹配,其中所述第二口令为默认口令或用户口令;根据所述第一口令与所述第二口令的匹配结果,继续或停止执行所述第一命令。
根据本申请第一方面的第一至第五管理命名空间的方法之一,提供了根据本申请第一方面的第六管理命名空间的方法,所述第一命令包括:NVMe命令、用于命名空间管理的NS管理命令和用于命名空间口令密码管理的口令管理命令。
根据本申请第一方面的第六管理命名空间的方法,提供了根据本申请第一方面的第七管理命名空间的方法,所述NVMe命令包括IO命令和用于显示命名空间的第一显示命令。
根据本申请第一方面的第七管理命名空间的方法,提供了根据本申请第一方面的第八管理命名空间的方法,响应于所述第一命令为IO命令,查询所述第一命令所要访问的第一命名空间的状态;响应于所述第一命名空间的状态为解锁状态,根据所述第一命令对所述第一命名空间对应的物理地址空间中的数据进行搬移操作;响应于所述第一命名空间的状态为锁定状态,不处理所述第一命令。
根据本申请第一方面的第八管理命名空间的方法,提供了根据本申请第一方面的第九管理命名空间的方法,所述响应于所述第一命名空间为锁定状态,不处理所述第一命令,还包括:向主机返回访问失败的提示信息。
根据本申请第一方面的第七管理命名空间的方法,提供了根据本申请第一方面的第十管理命名空间的方法,响应于所述第一命令为未指示第一命名空间的第一显示命令,查询所有命名空间的状态,以及向主机反馈解锁状态的命名空间的身份信息,或者向主机反馈解锁状态的命名空间的身份信息和状态信息。
根据本申请第一方面的第六管理命名空间的方法,提供了根据本申请第一方面的第十一管理命名空间的方法,所述NS管理命令包括NS删除命令和NS创建命令。
根据本申请第一方面的第十一管理命名空间的方法,提供了根据本申请第一方面的第十二管理命名空间的方法,响应于所述第一命令为NS删除命令,查询所述第一命令所指示的第一命名空间的状态;根据所述第一命名空间的状态,删除或保留所述第一命名空间。
根据本申请第一方面的第十二管理命名空间的方法,提供了根据本申请第一方面的第十三管理命名空间的方法,根据所述第一命名空间的状态,删除或保留所述第一命名空间,包括:响应于所述第一命名空间的状态为解锁状态,删除所述第一命名空间;响应于所述第一命名空间的状态为锁定状态,保留所述第一命名空间。
根据本申请第一方面的第十三管理命名空间的方法,提供了根据本申请第一方面的第十四管理命名空间的方法,所述响应于所述第一命名空间的状态为解锁状态,删除所述第一命名空间,还包括:响应于所述第一命名空间的状态为有口令解锁状态,删除所述第一命名空间所对应的用户口令。
根据本申请第一方面的第十二至十四管理命名空间的方法之一,提供了根据本申请第一方面的第十五管理命名空间的方法,根据所述第一命名空间的状态,删除或保留所述第一命名空间,还包括:向主机返回NS删除成功或失败的提示信息。
根据本申请第一方面的第十一管理命名空间的方法,提供了根据本申请第一方面的第十六管理命名空间的方法,响应于所述第一命令为未指示第一命名空间的NS创建命令,分配命名空间的身份信息(NS ID),根据所述命名空间的身份信息(NS ID)创建第二命名空间,并记录所述第二命名空间的状态。
根据本申请第一方面的第十六管理命名空间的方法,提供了根据本申请第一方面的第十七管理命名空间的方法,根据所述命名空间的身份信息(NS ID)创建第二命名空间,还包括:记录所述第二命名空间所对应的逻辑地址与其身份信息之间的对应关系。
根据本申请第一方面的第十六管理命名空间的方法,提供了根据本申请第一方面的第十八管理命名空间的方法,记录第二命名空间的状态包括:记录第二命名空间的状态为无口令解锁状态。
根据本申请第一方面的第十六至十八管理命名空间的方法之一,提供了根据本申请第一方面的第十九管理命名空间的方法,响应于所述第二命名空间创建成功,为所述第二命名空间设置默认口令。
根据本申请第一方面的第六管理命名空间的方法,提供了根据本申请第一方面的第二十管理命名空间的方法,响应于所述第一命令为口令管理命令,查询所述第一命令所指示的第一命名空间的状态;响应于所述第一命名空间的状态为解锁状态,为所述第一命名空间设置口令、修改口令、删除口令或取消口令认证,以及改变或保持所述第一命名空间的状态;响应于所述第一命名空间的状态为锁定状态,对所述第一命名空间进行口令认证。
根据本申请第一方面的第二十管理命名空间的方法,提供了根据本申请第一方面的第二十一管理命名空间的方法,所述口令管理命令包括:口令设置命令,口令修改命令,口令删除命令,口令认证命令和取消认证命令。
根据本申请第一方面的第二十一管理命名空间的方法,提供了根据本申请第一方面的第二十二管理命名空间的方法,响应于所述第一命令为口令设置命令,查询所述第一命令所指示的第一命名空间的状态;响应于所述第一命名空间的状态为无口令解锁状态,将用户输入的第一口令作为所述第一命名空间的用户口令,以及将所述第一命名空间的状态从无口令解锁状态改变为有口令解锁状态。
根据本申请第一方面的第二十二管理命名空间的方法,提供了根据本申请第一方面的第二十三管理命名空间的方法,响应于所述第一命名空间的状态不是无口令解锁状态,保持所述第一命名空间的状态,并且向主机返回口令设置失败的提示信息。
根据本申请第一方面的第二十一管理命名空间的方法,提供了根据本申请第一方面的第二十四管理命名空间的方法,响应于所述第一命令为口令修改命令,查询所述第一命令所指示的第一命名空间的状态;响应于所述第一命名空间的状态为有口令解锁状态,根据用户输入的第一口令更新所述第一命名空间的用户口令;以及保持所述第一命名空间的状态为有口令解锁状态。
根据本申请第一方面的第二十四管理命名空间的方法,提供了根据本申请第一方面的第二十五管理命名空间的方法,响应于所述第一命名空间的状态不是有口令解锁状态,保持所述第一命名空间的状态,向主机返回口令修改失败的提示信息。
根据本申请第一方面的第二十一管理命名空间的方法,提供了根据本申请第一方面的第二十六管理命名空间的方法,响应于所述第一命令为口令删除命令,查询所述第一命令所指示的第一命名空间的状态;响应于所述第一命名空间的状态为有口令解锁状态,删除所述第一命名空间的用户口令;以及将所述第一命名空间的状态从有口令解锁状态改变为无口令解锁状态。
根据本申请第一方面的第二十六管理命名空间的方法,提供了根据本申请第一方面的第二十七管理命名空间的方法,响应于所述第一命名空间的状态不是有口令解锁状态,保持所述第一命名空间的状态,向主机返回口令删除失败的提示信息。
根据本申请第一方面的第二十一管理命名空间的方法,提供了根据本申请第一方面的第二十八管理命名空间的方法,响应于所述第一命令为口令认证命令,查询所述第一命令所指示的第一命名空间的状态;响应于所述第一命名空间的状态为有口令锁定状态且口令验证通过,将所述第一命名空间的状态从有口令锁定状态改变为有口令解锁状态。
根据本申请第一方面的第二十八管理命名空间的方法,提供了根据本申请第一方面的第二十九管理命名空间的方法,响应于口令验证未通过,保持所述第一命名空间的状态为有口令锁定状态,并向主机返回口令认证失败的提示信息。
根据本申请第一方面的第二十一管理命名空间的方法,提供了根据本申请第一方面的第三十管理命名空间的方法,响应于所述第一命令为取消认证命令,查询所述第一命令所指示的第一命名空间的状态;响应于所述第一命名空间的状态为有口令解锁状态,将所述第一命名空间的状态从有口令解锁状态改变为有口令锁定状态。
根据本申请第一方面的第三十管理命名空间的方法,提供了根据本申请第一方面的第三十一管理命名空间的方法,响应于所述第一命名空间的状态不是有口令解锁状态,保持所述第一命名空间的状态,向主机返回取消认证失败的提示信息。
根据本申请第一方面的第七管理命名空间的方法,提供了根据本申请第一方面的第三十二管理命名空间的方法,所述口令管理命令还包括用于显示命名空间的第二显示命令;响应于所述口令管理命令为第二显示命令,查询所有命名空间的状态;向主机反馈所有命名空间的身份信息,或者向主机反馈所有命名空间的身份信息和状态信息。
基于本申请的第二方面,提供了根据本申请第二方面的第一管理数据加解密密钥的方法,包括:获取第一随机数据(TRNG_Data_2)、存储设备识别码(芯片ID)和第二随机数据(LOC_TRNG_2),根据所述第一随机数据(TRNG_Data_2)、所述存储设备识别码(芯片ID)和所述第二随机数据(LOC_TRNG_2)得到存储设备中一个或多个命名空间所对应的加密密钥或解密密钥(last_rk);响应于调整命名空间的用户口令,保持命名空间所对应的加密密钥或解密密钥不变。
基于本申请的第三方面,提供了根据本申请第三方面的处理命令的方法,包括:响应于获取了访问第一命名空间的第一读命令,其中所述第一命名空间处于解锁状态,获取与所述第一命名空间对应的第一解密密钥;根据所述第一读命令访问存储介质以获取第一密文数据,利用所述第一解密密钥对第一密文数据解密得到第一解密数据作为所述第一读命令要读取的数据。
基于本申请的第四方面,提供了根据本申请第四方面的第一控制器,所述控制器包括用于与主机交互的主机接口和处理电路;所述处理电路用于实现如本申请第一方面、第二方面和第三方面的方法之一。
根据本申请第四方面的第一控制器,提供了根据本申请第四方面的第二控制器,所述处理电路包括主机命令处理单元和存储命令处理单元;所述主机命令处理单元用于解析所述第一命令,根据解析结果指示所述存储命令处理单元;所述存储命令处理单元用于根据所述指示执行所述第一命令所对应的操作,以及改变或保持第一命名空间的状态。
根据本申请第四方面的第二控制器,提供了根据本申请第四方面的第三控制器,所述第一命令所指示的操作包括:数据搬移操作,命名空间的管理操作和命名空间的口令密码管理操作。
根据本申请第四方面的第一至第三控制器之一,提供了根据本申请第四方面的第四控制器,所述控制器还包括用于对数据进行加解密的加密单元和解密单元。
基于本申请的第五方面,提供了根据本申请第五方面的一种存储设备,包括存储介质和控制器,所述控制器用于实现如本申请第一方面、第二方面和第三方面的方法之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图;
图1A是现有技术的固态存储设备的框图;
图1B是现有技术中的控制部件的结构示意图;
图2为根据本申请实施例的管理命名空间的方法流程图;
图3是根据本申请实施例的处理IO命令的方法流程图;
图4是根据本申请实施例的处理NVMe读命令的控制器结构图;
图5是根据本申请实施例的处理NVMe写命令的控制器结构图;
图6是根据本申请实施例的处理NS管理命令的方法流程图;
图7是根据本申请实施例的处理NS管理命令的控制器结构图;
图8是根据本申请实施例的处理口令管理命令的方法流程图;
图9是命名空间状态迁移图;
图10是根据本申请实施例的处理口令管理命令的控制器结构图;
图11是根据本申请实施例的处理第一显示命令的方法流程图;
图12是根据本申请实施例的处理第二显示命令的方法流程图;
图13是一种应用场景中的命名空间状态变化图;
图14是另一种应用场景中的命名空间状态变化图;
图15是基于显示命令的命名空间状态变化图;
图16是基于NS管理命令和口令管理命令的命名空间状态变化图;
图17a是根据本申请实施例的一种用于管理加解密密钥的方法流程示意图;
图17b是根据本申请实施例的用于生成数据加解密密钥的方法流程示意图;
图18是根据本申请实施例的数据加解密密钥和口令密钥生成关系示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2展示了本申请实施例的一种管理命名空间(Namespace)的方法,包括步骤S101,步骤S102和步骤S103,下面详细进行说明。
步骤S101,接收第一命令。结合图1B,其中第一命令是指来自于主机接口1041的主机命令。第一命令包括符合NVMe协议的NVMe命令,用于管理命名空间的NS管理命令和用于管理命名空间口令密码的口令管理命令。关于这些命令的具体处理方式,下文将详细进行说明。
步骤S102,响应于第一命令指示了第一命名空间,根据第一命名空间的状态对第一命令进行处理。例如,第一命令指示了第一命名空间可以是:第一命令中包含有参数,该参数标识了第一命令所要访问或管理的命名空间的身份信息。本文中,采用NS ID这种参数,而每个命名空间所对应的NS ID是全球唯一的,因此可以用NS ID来唯一标识一个命名空间。也就是说,响应于第一命令包含有一个或多个NS ID,即指示了第一命令所要访问或者管理一个或多个命名空间;进而主机命令处理单元1042可以进一步执行第一命令。
作为举例,对于在SSD上创建的每个命名空间不仅具有NSID,不同的命名空间可以具有相同或不同的状态。在SSD每次上电后,SSD通过运行固件确定出每个命名空间的状态,并在缓存中存储每个命名空间的状态,例如通过命名空间状态表来记录每个命名空间NSID和状态之间的关系,其中,该命名空间状态表包含多个条目,每个条目记录一个命名空间NSID与状态之间的关系。
步骤S103,改变或者保持第一命名空间的状态。作为举例,控制部件在接收到主机发送的第一命令之后,确定第一命令所要访问或管理的至少一个命名空间的NSID,根据每个命名空间的NSID查询其对应的状态。而第一命令的执行与命名空间的状态有关,例如,若第一命令为IO命令,当命名空间处于特定状态下才能执行IO命令,而其他状态下则不能执行IO命令。根据第一命令的处理结果,改变或保持第一命名空间的状态,如若执行第一命令,则将第一命名空间的状态从一种状态改变为另一种状态;若第一命令未执行,则保持第一命名空间的状态不变。例如,在处理IO命令时保持第一命名空间的状态不变,从而不影响对后续IO命令的执行;又如在执行取消认证命令时将会改变第一命名空间的状态为锁定状态,从而使第一命名空间被锁定而无法对其进行数据访问。
上文指出,第一命令包括NVMe命令,其中,NVMe命令又包括用于访问命名空间,以在主机和SSD之间进行数据搬移。下文将对IO命令的处理过程进行详细说明。图3展示了本申请实施例的一种管理命名空间的方法,包括步骤S201,步骤S202,步骤S203和步骤S204,下面详细进行说明。
步骤S201,接收IO命令。举例来说,可以接通过主机接口1041接收来自主机的IO命令,IO命令指示了主机所要访问的第一命名空间,例如IO命令可以包含所要访问的命名空间的NS ID。
步骤S202,查询第一命名空间的状态。举例来说,根据步骤201中IO命令所包含的NS ID,在命名空间状态表中查询该NS ID对应的状态。在一个实施例中,命名空间状态表如表1所示。
表1
条目 | NSID | 状态 |
条目0 | NS0 | 解锁 |
条目1 | NS1 | 锁定 |
表1中命名空间状态表包括两个条目,分别为条目0和条目1,每个条目包括两列,一列用于记录NS ID,另一列用于记录NS ID所对应的命名空间的状态。作为举例,命名空间的状态包括解锁和锁定两种,条目0记录了命名空间NS0的状态,条目1记录了NS1的状态,其中,条目0所记录的命名空间NS0的状态为解锁状态,条目1所记录的命名空间NS1的状态为锁定状态。本文中,为了简便的目的,“命名空间的状态为解锁状态”也简称为“命名空间为解锁状态”,“命名空间的状态为锁定状态”也简称为“命名空间为锁定状态”。
步骤S203,响应于第一命名空间的状态为解锁状态,执行IO命令,对第一命名空间对应的物理地址空间中的数据进行搬移操作。例如,对于读命令,将数据从NVM搬移至主机;对于写命令,将数据从主机搬移至NVM。响应于第一命名空间的状态为非解锁状态,例如锁定状态,则不执行IO命令,同时可以向主机接口返回IO命令处理失败的提示信息,例如可以是权限错误的提示信息。作为举例,若当前IO命令指示了命名空间NS0,根据表1,命名空间NS0为解锁状态,因此继续执行当前IO命令;若当前IO命令指示了命名空间NS1,根据表1,NS1为锁定状态,因此不执行IO命令。基于此,用户可以通过将命名空间的状态设置为锁定状态而使该命名空间受到保护,使非授权者无法访问。
步骤S204,保持第一命名空间的状态不变,即保持所述命名空间状态表中对应条目的信息不变。
下面结合控制器结构对上述处理NVMe命令的方法进行进一步地说明。图4展示了根据本申请实施例的一种管理命名空间的控制器,用于处理读命令;其中包括主机接口,主机命令处理单元,存储命令处理单元,介质接口控制器、解密单元和DMA传输单元。为了便于理解,图4中还展示了主机、DRAM和片外存储器(本文中,片外存储器是指控制器之外的数据存储器)。可以结合图1B理解图4展示的内容。
主机接口向主机命令处理单元发送NVMe(读)命令,表示为过程(1.1)。主机命令处理单元接收该NVMe命令,进行初步判断后(例如判断该NVMe命令是与命名空间相关的命令,此过程属于现有技术,因此未在图中体现),送入NS状态判断单元,查询DRAM中的命名空间状态表,查询读命令指示的命名空间NS ID对应的命名空间的状态。例如当前NVMe命令指示了命名空间NS1,那么根据命名空间状态表(如图4所示),命名空间NS1为锁定状态,则通过主机接口向主机返回权限错误信息,表示为过程(1.9)。若当前NVMe命令指示了命名空间NS0,那么根据命名空间状态表(如图4所示),命名空间NS0为解锁状态,那么继续执行该NVMe命令。NVMe命令进入NVMe命令解析单元,表示为过程(1.2)。NVMe命令解析单元解析NVMe命令,判断该NVMe命令为读命令,然后再进一步处理该读命令,例如根据读命令进行地址解析、生成DMA命令等(这些读命令处理过程属于现有技术,因此未体现在图中)。NVMe命令解析单元还以存储命令的形式通知存储命令处理单元的数据读/写控制单元,表示为过程(1.3)。数据读/写控制单元处理存储命令,与介质接口控制器进行交互,表示为过程(1.4)。数据读/写控制单元还指示密钥管理单元,以获取读命令所指示的命名空间的解密密钥,表示为过程(1.5);然后密钥管理单元将解密密钥发送到解密单元,表示为过程(1.6)。例如读命令指示了命名空间NS0,在读取命名空间NS0的数据时,还相应获取命名空间NS0的解密密钥,解密单元根据该解密密钥对从命名空间NS0读取的数据进行解密。介质接口控制器进行数据搬移,将数据从片外存储器中搬移至DRAM中。DMA传输单元执行DMA命令,将经过解密单元解密的数据通过主机接口搬移至主机内存,表示为过程(1.7)和(1.8)。
由上述过程可知,存储于存储介质的数据是经过加密的;密钥管理单元和解密单元用于获取密钥并且对数据进行解密,从而保证了数据的安全性。
以上说明了读命令的处理过程,下面介绍写命令的处理过程。图5展示了根据本申请实施例的一种管理命名空间的控制器,用于处理写命令。图5与图4的区别包括,其中包括加密单元,加密单元用于对来自于主机的数据进行加密。
主机接口向主机命令处理单元发送NVMe(写)命令,表示为过程(2.1)。主机命令处理单元接收该NVMe命令,NS状态判断单元查询DRAM中的命名空间状态表,查询NVMe命令的NS ID所对应的命名空间的状态。例如当前NVMe命令指示了NS1,那么根据命名空间状态表(如图5所示),命名空间NS1为锁定状态,则通过主机接口向主机返回权限错误信息,表示为过程(2.9)。若当前NVMe命令指示了NS0,那么根据命名空间状态表(如图5所示),命名空间NS0为解锁状态,那么继续执行NVMe命令。NVMe命令进入NVMe命令解析单元,表示为过程(2.2)。NVMe命令解析单元解析该NVMe命令,判断其为写命令。NVMe命令解析单元还以存储命令的形式通知存储命令处理单元的数据读/写控制单元,表示为过程(2.3)。一方面,数据读/写控制单元指示密钥管理单元,以获取写命令所指示的命名空间的加密密钥,表示为过程(2.4)。例如写命令指示了命名空间NS0,则密钥管理单元获取命名空间NS0的加密密钥。密钥管理单元将加密密钥发送给加密单元,表示为过程(2.5)。另一方面,DMA传输单元执行DMA命令,将来自于主机的数据搬移至DRAM中,表示为过程(2.6);DMA传输单元与加密单元之间进行交互,表示为过程(2.7),以使得加密单元对DMA传输单元传输到DRAM中的数据进行加密。另一方面,数据读/写控制单元向介质接口控制器发送一个或多个介质接口命令,表示为过程(2.8);最后,介质接口控制器根据介质接口命令将DRAM中的加密数据进一步搬移至片外存储器NAND Flash中,表示为过程(2.9)。其中为了保证数据的安全性,加密单元对数据进行了加密。不同命名空间的加密密钥可能不同,因此需要密钥管理单元进行密钥管理。
作为举例,一个命名空间的加密密钥和解密密钥可能相同,也可能不同。
图4和图5中的NS状态判断单元,NVMe命令解析单元,数据读/写控制单元,密钥管理单元,解密单元和加密单元等,可以由硬件实现,也可以由软件实现,本申请对此不做限制。而且,虽然在图4和图5中区分了主机命令处理单元和存储命令处理单元,但是在一些实施例中,NS状态判断单元,NVMe命令解析单元,数据读/写控制单元和密钥管理单元等模块也可以由主机命令处理单元或存储命令处理单元独立地实现,本申请对此不做限制。
以上介绍了基于NVMe协议的IO命令的处理方式,下面接着介绍NS管理命令。NS管理命令包括NS创建命令和NS删除命令。不同于NVMe命令,NS管理命令是自定义的命令,可以由控制器设计人员自定义。
图6展示了根据本申请实施例的NS管理命令的处理方法。作为举例,NS管理命令包括NS创建命令和NS删除命令,为了便于理解,下面分别对NS创建命令和NS删除命令的处理过程进行简要介绍。
(1)、对于所接收的NS管理命令为NS创建命令,其处理过程如下:
步骤S301,接收NS管理命令,NS管理命令包括NS创建命令和NS删除命令。
步骤S302,当前NS管理命令未指示第一命名空间,则说明当前命令为NS创建命令。也就是说,NS创建命令的特殊之处在于,NS创建命令中并未指示某个命名空间,或者说NS创建命令中没有NS ID这个参数。原因是命名空间尚未建立,尚未分配对应的NS ID。
步骤S303,创建一个命名空间,包括分配命名空间的NS ID,根据NS ID创建对应的第二命名空间,记录第二命名空间的逻辑地址与其NS ID之间的对应关系。
步骤S304,记录所创建的命名空间的状态,例如记录所创建的命名空间为解锁状态。具体来说,解锁状态又可以分为无口令解锁状态和有口令解锁状态。在一个实施例中,命名空间状态表如表2所示。
表2
条目 | NSID | 状态 |
条目0 | NS0 | 无口令解锁(S0) |
条目1 | NS1 | 有口令解锁(S1) |
条目2 | NS2 | 有口令锁定(S2) |
表2中命名空间状态表包括三个条目,分别为条目0、条目1和条目2,每个条目包括两列,一列用于记录NS ID,另一列用于记录NS ID所对应的命名空间的状态,命名空间的状态包括三种,分别为无口令解锁状态、有口令解锁状态和有口令锁定状态。条目0记录了命名空间NS0的状态,条目1记录了命名空间NS1的状态,条目2记录了命名空间NS2的状态。其中,条目0所记录的命名空间NS0的状态为无口令解锁状态,条目1所记录的命名空间NS1的状态为有口令解锁状态,条目2所记录的命名空间NS2的状态为有口令锁定状态。为了便于辨识,无口令解锁状态记为S0,有口令解锁状态记为S1,有口令锁定状态记为S2;下文中,有口令锁定状态也简称为锁定状态。
由于新创建的命名空间尚未由用户设置口令,因此可以设置其状态为无口令解锁状态。无口令解锁状态的命名空间可以有***设置的默认口令,而有口令解锁状态、有口令锁定状态的命名空间,有用户设置的用户口令。
步骤S305,响应于命名空间创建成功,为新创建的命名空间赋予默认口令。默认口令是***自带的,区别于用户设置的用户口令。
(2)、对于所接收的NS管理命令为NS删除命令,其处理过程如下:
步骤S402中,解析第一命令,确定第一命令为指示了第一命名空间的NS删除命令,也就是说,NS删除命令包含了待删除命名空间的NS ID。
步骤S403,查询第一命名空间的状态。
步骤S404,对用户输入的口令进行验证,验证成功后执行步骤S405。
步骤S405,根据第一命名空间的状态,删除或保留第一命名空间。
例如,当前NS删除命令指示了命名空间NS0,根据表2可知,命名空间NS0为无口令解锁状态,则删除命名空间NS0。
又如,当前NS删除命令指示了命名空间NS1,根据表2可知,命名空间NS1为有口令解锁状态,则在删除命名空间NS1的同时,删除所述命名空间NS1的用户口令。
再如,当前NS删除命令指示了命名空间NS2,根据表2可知,命名空间NS2为有口令锁定状态,由于无法对锁定状态的命名空间进行删除操作,因此,不处理该NS删除命令。
基于此,对处于解锁状态的命名空间,NS删除命令能够成功执行;对处于锁定状态的命名空间,NS删除命令执行失败。为了便于用户了解NS删除命令执行情况,还可以进一步向主机反馈NS删除成功或者失败的提示信息。当然,也可以通过其他方式通知用户,例如使用后文将介绍的第一显示命令。
在一个实施例中,步骤S404中进行口令验证的方式包括:将用户输入的第一口令与存储的第一命名空间的第二口令进行匹配,其中第二口令为默认口令(对于无口令解锁状态的命名空间)或用户口令(对于有口令解锁状态的命名空间);若第一口令与第二口令匹配成功,说明是授权用户的操作,则继续执行步骤S405;若第一口令与第二口令匹配失败,则说明是非授权用户的操作,停止执行NS删除命令,并且返回权限错误的信息。在一个应用场景中,可以设置多次验证机会,在多次验证均不成功的情况下锁定第一命名空间,禁止对第一命名空间的进一步操作。
作为举例,若需要进行步骤S404的口令验证,进行口令验证的第一口令可以携带在NS删除命令上(作为NS删除命令的一个参数),也可以利用主机在发送删除NS命令的同时或者之后发送的另一命令,由该命令携带第一口令,在此并不做限定。
下面结合控制器结构对上述处理NS管理命令的方法进行进一步地说明。图7展示了根据本申请实施例的一种管理命名空间的控制器,其用于处理NS管理命令。其中与图4、图5相同的部分不再详细说明。口令验证单元用虚线框表示,意味着口令验证单元是可选单元。另外,除了在主机命令处理单元中实现,在其他实施例中,口令验证单元也可以在存储命令处理单元中实现。口令验证单元和NS状态判断单元可以由硬件实现,也可以由软件实现,本申请对此不进行限制。
对于NS创建命令,通过主机接口将从主机接收的NS创建命令转发给主机命令处理单元,表示为过程(3.1)。主机命令处理单元直接将NS创建命令转发到存储命令处理单元,表示为过程(3.3);存储命令处理单元根据NS管理命令创建命名空间,包括:分配一个NSID,记录该NS ID与命名空间的逻辑地址之间对应关系,确定所创建的命名空间的状态,设置命名空间的口令为默认口令。处理完成后,存储命令处理单元将所创建的命名空间的信息同步给主机命令处理单元,表示为过程(3.5),上述命名空间的信息包括命名空间的大小,NSID等信息。在一个实施例中,存储命令处理单元可以通过更新DRAM中的命名空间状态表中一个或多个条目来实现对命名空间状态的修改,如图7所示,在创建NS完成之后,可以在命名空间状态表中增加一个条目3,该条目3包含新创建的命名空间的NSID和状态,例如,新创建的命名空间为“NS3,无口令解锁状态”,表示为过程(3.4)。
对于NS删除命令,通过主机接口将从主机接收的NS删除命令转发给主机命令处理单元,表示为过程(3.1)。NS状态判断单元查询DRAM中的命名空间状态表,查询NS删除命令的NS ID所对应的命名空间的状态。例如,若当前NS删除命令指示了命名空间NS2,那么查询命名空间状态表(如图7所示),获知命名空间NS2为锁定状态,则通过主机接口向主机返回状态错误的提示信息,表示为过程(3.9)。若当前NS删除命令指示了NS3,那么查询命名空间状态表(如图7所示),获知命名空间NS3为无口令解锁状态,那么主机命令处理单元将NS删除命令转发到存储命令处理单元,表示为过程(3.3);存储命令处理单元根据NS删除命令删除命名空间,同时删除命名空间状态表中相应条目,例如删除表中最后一个条目3“NS3无口令解锁(S0)”,表示为过程(3.4)。在一个实施例中,处理完成后,存储命令处理单元还可以将命名空间删除的相关信息同步主机命令处理单元,表示为过程(3.5)。
如图7中还示出了口令验证单元用于在执行NS删除命令时对用户输入的口令进行验证,并且根据验证的结果,通过主机接口向主机反馈提示信息,例如若验证成功,继续执行NS删除命令并且反馈验证成功的提示信息,若验证失败,则停止执行NS删除命令并且反馈验证失败的提示信息。图7中,NS状态判断单元和口令验证单元属于主机命令处理单元,在另一些实施例中,这些模块也可以由存储命令处理单元独立地实现,或者由主机命令处理单元和存储命令处理单元分工实现。
以上介绍了NS管理命令的处理方式,下面接着介绍口令管理命令。口令管理命令包括:口令设置命令,口令修改命令,口令删除命令,口令认证命令和取消认证命令。口令管理命令也是自定义的命令。图8展示了根据本申请实施例的一种口令管理命令处理方法。如图8所示,口令管理命令的处理流程包括步骤S501~步骤S508,下面进行详细说明。
步骤S501,接收来自于主机的口令管理命令。口令管理命令也指示了第一命名空间,即口令管理命令包含有NS ID。例如一个口令管理命令指示了NS0,表示口令管理命令所要进行管理的命名空间为命名空间NS0。
步骤S502,查询第一命名空间的状态。例如根据命名空间状态表进行查询。根据第一命名空间的状态,跳转执行步骤S503或者步骤S506。
一种情况,跳转到步骤S503,响应于所述第一命名空间的状态为解锁状态,为所述第一命名空间设置口令、修改口令、删除口令或取消口令认证。然后执行步骤S504,进行口令验证,即验证第一命名空间的用户口令,具体的口令验证操作可以参看图6中的步骤S404。最后执行步骤S505,改变或者保持第一命名空间的状态。
另一种情况,跳转到步骤S506,响应于所述第一命名空间的状态为锁定状态,为所述第一命名空间进行口令验证,以使第一命名空间解锁。需要注意,本文中“口令验证”与“口令认证”不是相同的概念,例如,“口令认证命令”是一种口令管理命令,而“口令验证”是口令认证命令所要求的对用户口令进行核验的步骤。然后执行步骤S507,验证第一命名空间的用户口令,具体的口令验证操作可以参看图6中的步骤S404。最后执行步骤S508,响应于口令验证通过,改变第一命名空间的状态。
如图8中,步骤S503和步骤S506是并列的步骤,没有先后顺序关系。步骤S504采用了虚线框,表示步骤S504的口令验证步骤并不是所有口令管理命令所必须的。例如,取消口令认证命令,口令删除命令和口令修改命令可以配置口令验证的步骤。口令设置命令可以省略配置口令验证的步骤。具体地,可以根据业务逻辑进行选择。步骤S507采用了实线框,表明口令认证命令需要进行口令验证。另外,在其他实施例中,步骤S504和步骤S507可以在步骤S502之前执行,即首先进行口令验证,再对第一命名空间的状态进行查询。再者,步骤S505和步骤S508中改变第一命名空间的状态的操作可以在对应的口令管理命令执行完毕后实施,也可以在对应的口令管理命令执行时实施。
步骤S502中查询第一命名空间的状态,以及步骤S506和步骤S507中改变或者保持第一命名空间的状态表明:命名空间的状态不同,所能够响应的口令管理命令也不同;或者说执行不同的口令管理命令,所要求的命名空间状态不同。在一个实施例中,口令管理命令包括:口令设置命令,口令修改命令,口令删除命令,口令认证命令和取消认证命令。为了揭示命名空间状态的迁移变化规律,图9展示了命名空间的状态迁移图。
如图9所示,第一命名空间被创建后处于无口令解锁状态(S0),在无口令解锁状态下,能够响应口令设置命令,由用户设置用户口令。设置用户口令后,第一命名空间处于有口令解锁状态(S1),在有口令解锁状态下,能够响应口令修改命令和口令删除命令;修改口令后,第一命名空间仍然保持有口令解锁状态(S1);删除口令后,第一命名空间转变为无口令解锁状态(S0)。
另外,在有口令解锁状态(S1),第一命名空间还能够响应用于锁定第一命名空间的取消认证命令,使第一命名空间的状态从有口令解锁状态(S1)转变为有口令锁定状态(S2)。在锁定状态下,第一命名空间能够响应口令认证命令,并在口令认证通过后使第一命名空间从有口令锁定状态(S2)转变为有口令解锁状态(S1)。
在一个实施例中,无口令解锁状态(S0)和有口令解锁状态(S1)统称为解锁状态,在解锁状态下,第一命名空间能够响应上文所述的IO命令和NS管理命令。在锁定状态(S2)下,第一命名空间无法响应上文所述的IO命令和NS管理命令,必须通过口令认证命令,使第一命名空间处于解锁状态,才能够响应IO命令、NS管理命令和其他口令管理命令。其意义在于,通过锁定第一命名空间,可以使第一命名空间不接受未授权的操作。
以表2的例子进行说明,例如,当前口令管理命令为口令设置命令,指示了命名空间NS0,根据步骤S502,查询到命名空间NS0的状态为无口令解锁状态,则在步骤S504中响应口令设置命令,将用户输入的口令设置为命名空间NS0的用户口令。在步骤S505中,改变NS0的状态为有口令解锁状态。
又如,当前口令管理命令为口令设置命令,指示了命名空间NS1,根据步骤S502,查询到命名空间NS1的状态为有口令解锁状态。根据图9所示的状态迁移图,有口令解锁状态无法响应口令设置命令,因此不响应口令设置命令,此时可以向主机反馈一个状态错误的提示信息。
再如,当前口令管理命令为口令修改命令,指示了命名空间NS1,则在步骤S502中,查询到命名空间NS1的状态为有口令解锁状态,根据图9所示的状态迁移图,在步骤S503中响应口令修改命令,为命名空间NS1设置新的用户口令以替代旧的用户口令。在步骤S505中,保持命名空间NS1的状态为有口令解锁状态。
还如,当前口令管理命令为口令删除命令,指示了命名空间NS1,则在步骤S502中,查询到命名空间NS1的状态为有口令解锁状态,根据图9所示的状态迁移图,在步骤S503中响应口令删除命令,删除命名空间NS1的用户口令。在步骤S505中,改变命名空间NS1的状态为无口令解锁状态。
又如,当前口令管理命令为口令删除命令,指示了命名空间NS0,在步骤S502,查询到命名空间NS0的状态为无口令解锁状态。根据图9所示的状态迁移图,无口令解锁状态无法响应口令删除命令,因此不响应口令删除命令,此时可以向主机反馈一个状态错误的提示信息。
再如,当前口令管理命令为口令认证命令,指示了命名空间NS2,在步骤S502中,查询到命名空间NS2的状态为锁定状态,根据图9所述的状态迁移图,在步骤S506中响应口令认证命令,在口令认证通过时,在步骤S508中,将命名空间NS2的状态改变为有口令解锁状态。也就是说,将一个命名空间的状态从锁定状态变为解锁状态即为响应口令认证命令的结果。
还如,当前口令管理命令为取消认证命令,指示了命名空间NS1,在步骤S502中,查询到命名空间NS1的状态为有口令解锁状态,根据图9所述的状态迁移图,在步骤S503中响应取消认证命令,在步骤S505中将命名空间NS1的状态改变为锁定状态。也就是说,将一个命名空间的状态从解锁状态变为锁定状态即为响应取消认证命令的结果。
其中,执行口令设置命令所需的条件是:其所指示的命名空间的状态为无口令解锁状态;执行口令修改命令、口令删除命令所需的条件是:其所指示的命名空间的状态为有口令解锁状态;执行口令认证命令所需的条件是:其所指示的命名空间的状态为锁定状态;执行取消认证命令所需的条件是:其所指示的命名空间的状态为有口令解锁状态。若当前命名空间的状态无法满足执行上述多种口令管理命令的条件,则可以向主机返回命令执行失败的提示信息。
在上述口令验证步骤中,响应于口令管理命令为口令修改命令,对用户输入的第二口令与保存的第一口令进行匹配,若匹配成功,则表明为授权用户,然后再根据用户输入的新口令更新第一口令。其中第一口令为用户设置的用户口令。
在一个实施例中,无口令解锁状态下的命名空间仍然具有默认口令。在上述口令验证步骤中,响应于口令管理命令为口令删除命令,对用户输入的第二口令与保存的第一口令进行匹配,若匹配成功,则表明为授权用户,然后将第一口令更新为默认口令。
图10展示了根据本申请实施例的一种管理命名空间的装置,用于对口令管理命令进行处理。
如图10所示,通过主机接口接收来自于主机的口令管理命令并且向主机命令处理单元转发,表示为过程(4.1)。主机命令处理单元中的NS状态判断单元查询DRAM中的命名空间状态表,若口令管理命令与其所指示的命名空间状态不匹配,则通过主机接口向主机返回状态错误信息,表示为过程(4.9)。匹配与否,可以根据图9的状态迁移图进行判断,例如,口令设置命令指示了命名空间NS1,由于命名空间NS1不是无口令解锁状态,因此口令设置命令与其所指示的命名空间状态不匹配,主机命令处理单元通过主机接口向主机返回状态错误信息。
若口令管理命令与其所指示的命名空间状态匹配,则进一步可选地,通过口令验证单元对用户输入的口令进行验证。若验证不通过,则通过主机接口向主机返回权限错误信息。与前述内容类似,口令验证单元是可选单元,用虚线表示;在其他实施例中,口令验证单元可以在存储命令处理单元中实现。
主机命令处理单元向存储命令处理单元转发口令管理命令,表示为过程(4.3),存储命令处理单元对口令管理命令进行处理,改变或保持DRAM中命名空间状态表中命名空间的状态,表示为过程(4.4)。在一个实施例中,存储命令处理单元处理完成后,还将命名空间的相关信息同步给主机命令处理单元,表示为过程(4.5)。比如执行取消认证命令时,对应的命名空间变为锁定状态,存储命令处理单元向主机命令处理单元发送对应的命名空间状态变为锁定状态的通知。
以上介绍了NVMe命令、NS管理命令和口令管理命令的处理方法和装置。其中,NVMe命令还包括第一显示命令,口令管理命令还包括第二显示命令。第一显示命令和第二显示命令均用于供主机显示命名空间,向用户展示可用的命名空间及其状态,其中,第一显示命令是NVMe协议定义的一个identify命令,由于NVMe协议并未定义对命名空间进行加密管理,故SSD的控制器在接收到第一显示命令之后,会有一个操作,即查询SSD中各个命名空间的状态,仅将处于解锁状态的命名空间的信息反馈给主机,而不将处于锁定状态的命名空间的信息反馈给主机,在主机上仅能显示处于解锁状态的命名空间的信息,无法显示处于锁定状态的命名空间的信息。进一步地,由于本申请实施例所提供的方案中,通过口令管理命令实现了对各个命名空间的加密管理功能,使得存储设备中一部分命名空间处于锁定状态(加密状态),为了实现对锁定状态的命名空间的显示,本申请设计了采用口令管理命令的第二显示命令,SSD的控制器在接收到第二显示命令之后,查询SSD中各个命名空间的状态,将所有命名空间的信息反馈给主机,以使得在主机上显示所有命名空间的信息,所有命令空间包括解锁状态的命名空间也包括锁定状态的命名空间,从而弥补了第一显示命令的不足。另外,设置第一显示命令和第二显示命令的意义还包括:将第一显示命令提供给一般用户使用,将第二显示命令提供给具有管理权限的用户使用,这种权限的划分不仅保证了一般性的使用,还提供了一定的安全性。
图11展示了第一显示命令的处理流程。如图11所述,首先执行步骤S601,接收第一显示命令;然后执行步骤S602,查询各命名空间的状态;最后执行S603,向主机接口反馈处于解锁状态的命名空间。例如(基于表2),接收到第一显示命令后,则向主机接口反馈命名空间NS0和命名空间NS1的NS ID,并且可以同时反馈命名空间NS0的状态为无口令解锁状态,命名空间NS1的状态为有口令解锁状态。主机接口将信息转发给主机,主机根据其显示程序进行展示,例如展示为两个盘符,分别对应于命名空间NS0和命名空间NS1。
第一显示命令,可以在响应NS管理命令、口令管理命令后执行,用于及时向主机反馈当前命名空间的情况。例如,结合图7,在命名空间NS3创建之前执行第一显示命令,反馈命名空间NS0和命名空间NS1的NS ID,在命名空间NS3创建完成后再次执行第一显示命令,反馈命名空间NS0、命名空间NS1和命名空间NS3的NS ID。
图12展示了第二显示命令的处理流程。如图12所示,首先执行步骤S701,接收第二显示命令;然后执行步骤S702,查询所有命名空间的状态,最后执行步骤S703,反馈所有的命名空间的NS ID和状态。例如(基于表2),接收到第二显示命令后,反馈命名空间NS0、命名空间NS1和命名空间NS2的NS ID,并且可以同时反馈命名空间的状态。主机接收到反馈的信号后,可以调用显示程序展示命名空间,展示出三个盘符以及每个盘符的状态。例如,展示盘NS0和盘NS0的状态为无口令解锁状态,展示盘NS1和盘NS1的状态为有口令解锁状态,展示盘NS2和盘NS2的状态为锁定状态。
基于上述第一显示命令和第二显示命令,可以实现命名空间的动态隐藏,即一般用户仅可以查看未锁定的命名空间,授权用户则可以查看所有的命名空间。
以上详细介绍了各种主机命令的处理方式和相关控制器的电路结构,本申请的关键在于对命名空间状态的判断、保持和改变。下面结合具体的应用场景对以上内容进行回顾,以期对命名空间的状态变化有更加深入的理解。图13-图16展示了具体的应用场景,其中NS1,NS2……表示各个命名空间;通过不同的填充图案表示命名空间的不同状态;纵向表示在时间维度上一个命名空间的状态变化过程。
图13展示了一种应用场景,该应用场景中,下电前各个命名空间NS1、NS2、NS3和NS4的状态分别为无口令解锁状态、有口令解锁状态、有口令解锁状态和无口令解锁状态。经历了下电过程,在上电后,各个命名空间仍然保持下电前的状态。特别是命名空间NS2和命名空间NS3,它们在上电后仍然保持之前的状态。
图14展示了另一种应用场景,该应用场景中,下电前各个命名空间NS0、NS1、NS2、NS3和NS4的状态分别为无口令解锁状态、有口令解锁状态、有口令解锁状态和无口令解锁状态。经历了下电过程,在上电后,命名空间NS1和命名空间NS4的状态仍然保持下电前的无口令解锁状态,而命名空间NS2和命名空间NS3变为有口令锁定状态。
根据图14的应用场景,结合图9的状态迁移图,需要对命名空间NS2和命名空间NS3进行认证,才能使命名空间NS2和命名空间NS3转变为有口令解锁状态。也就是说,在图14的应用场景中,上电后,通过第一显示命令无法查看命名空间NS2和命名空间NS3。命名空间NS2和命名空间NS3处于受保护的状态,可以避免非授权用户的非法操作,从而提高了命名空间的安全性。
从产品设计的角度来讲,可以根据需求设计为***在上电时将有口令解锁状态的命名空间转变为有口令锁定状态,也可以设计为***在上电时不改变命名空间的原有状态。
图15展示了又一种应用场景,显示了命名空间对第一显示命令和第二显示命令的响应情况。对于各个命名空间NS1、NS2、NS3和NS4的状态分别为无口令解锁状态、有口令解锁状态、有口令解锁状态和有口令锁定状态。在响应基于NVMe的第一显示命令时,反馈命名空间NS1、NS2和NS3的信息以供主机进行显示。在响应基于口令管理命令的第二显示命令时,反馈命名空间NS1、NS2、NS3和NS4的信息以供主机进行显示。由此可见,利用第二显示命令,能够查看处于有口令锁定状态的命名空间。另外,根据业务需要,利用第一显示命令、第二显示命令,均可以查看命名空间的状态。
图16展示了一种应用场景,展示了各命名空间对NS管理命令和口令管理命令的响应情况。对于命名空间NS0,其最初处于无口令解锁状态,在响应NS删除命令后,命名空间NS0被删除。对于命名空间NS1,其最初处于无口令解锁状态,在响应口令设置命令后,转变为有口令解锁状态。对于命名空间NS2,其最初处于有口令解锁状态,在响应口令删除命令后,转变为无口令解锁状态。对于命名空间NS3,其最初处于有口令解锁状态,在响应口令修改命令后,保持有口令解锁状态。在进一步响应取消认证命令后,转变为有口令锁定状态。对于命名空间NS4,其最初处于有口令锁定状态,在响应口令认证命令后,转变为有口令解锁状态。另外,响应于NS创建命令,创建了命名空间NS5,命名空间NS5为无口令解锁状态。另外,命名空间NS1、NS2、NS3和NS4能够响应IO命令,并且保持本身的状态。
以上内容从接口控制的角度说明了管理命名空间的方法,下面介绍根据本申请实施例的一种用于管理数据加解密密钥的方法,从密码管理的角度进行分析和说明。需要注意的是,本文中的数据加解密密钥是对加密密钥和解密密钥的统称。
图17a展示了根据本申请的一种管理数据加解密密钥的方法流程示意图。参见图17,该方法包括:
步骤S801,获取第一随机数据(TRNG_Data_2)、存储设备识别码(芯片ID)和第二随机数据(LOC_TRNG_2),根据所述第一随机数据(TRNG_Data_2)、所述存储设备识别码(芯片ID)和所述第二随机数据(LOC_TRNG_2)得到存储设备中一个或多个命名空间所对应的加密密钥或解密密钥(last_rk)。
步骤S802,响应于调整命名空间的用户口令,保持命名空间所对应的加密密钥或解密密钥不变。
对于每个命名空间而言,可以采用对称加密算法来进行数据加密和数据解密,如,对称加密算法为高级加密标准算法(Advanced Encryption Standard,AES);也可采用非对称加密算法进行数据加密和数据解密,即每个命名空间所对应的加密密钥和解密密钥可以是相同的,也可以是不同的。举例来说,加密密钥和解密密钥相同的情况下,可以通过如下方法得到加密密钥或解密密钥。
作为举例,图17b展示了根据本申请的生成数据加解密密钥的方法流程示意图。
首先,从第一个一次可编程器件中获取第一随机数据(TRNG_Data_2),对第一随机数据(TRNG Data_2)进行哈希运算得到第一哈希值(TRNG_Hash_2[127:0])。
然后,从第二个一次可编程器件中获取存储设备识别码(芯片ID)和第二随机数据(LOC_TRNG_2),对所述存储设备识别码(芯片ID)和所述第二随机数据(LOC_TRNG_2)进行哈希运算得到第二哈希值(Loc_TID_Hash[255:0])。
最后,将所述第一哈希值(TRNG_Hash_2[127:0])和所述第二哈希值(Loc_TID_Hash[255:0])进行加密得到存储设备中第一命名空间所对应的数据加解密密钥加密密钥或解密密钥(last_rk)。
其中,加密算法采用SM4算法。SM4是一种分组密码标准,由国家密码管理局于2012年3月21日发布。相关标准为“GM/T 0002-2012《SM4分组密码算法》”。SM4主要用于数据加密,分组长度与密钥长度均为128比特。可选地,诸如AES等加密算法也可应用于根据本申请实施例中。
本实施例中,哈希运算采用SM3算法。SM3是一种密码散列函数标准,本申请实施例中的SM3算法是例如由国家密码管理局于2012年03月21日发布,相关标准为“GM/T 0004-2012《SM3密码杂凑算法》”、或者由国家密码管理局于2017年03月1日实施的,相关标准为“GB/T32905-2016信息安全技术SM3密码杂凑算法。SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其安全性及效率与SHA-256相当。可选地,诸如MD5、SHA等哈希算法也可应用于根据本申请实施例中对第一随机数据进行转换。
利用SM3算法,将所述第一随机数据(TRNG Data_2)进行转换,以获得第一哈希值(TRNG_Hash_2[127:0])。在本实施例中,第一哈希值取第一随机数据的前128位元素。更详细地说,第一哈希值并不限于取第一随机数据的前128位元素。可选地,SM3算法能够转换得到预设长度的数据。例如,预设长度为256位等,预设长度可根据需求进行配置,本申请不对预设长度做限制。
由于本实施例中,为每个命名空间配置了设置用户口令功能,用户可以对每个命名空间的用户口令进行管理,例如,设置用户口令、修改用户口令、删除用户口令或者取消用户口令认证。根据本申请的方法,若用户修改了第一命名空间所设置的口令(包括将默认口令修改为用户口令,以及将旧的用户口令修改为新的用户口令),第一命名空间所对应的加密密钥或解密密钥(last_rk)保持不变。以上方法的意义在于提升用户体验,原因在于:现有技术的技术方案中,对用户数据进行加密解密的密钥是与用户设置的口令相关联的。若用户在使用过程中更换一个命名空间的口令,按照现有技术的方案,需要通过旧解密密钥读取并且解密该命名空间中的所有数据,然后再利用新口令生成的新加密密钥加密这些数据,并且重新写入该命名空间中。在数据量较大时,该过程所消耗的时间是用户难以忍受的。本申请的技术方案中,在口令改变时,用于验证口令的口令密钥相应发生了变化,并且存储于片外存储器中(关于口令密钥的应用,属于现有技术,在此不再赘述);而加密密钥或解密密钥不发生变化。因此,即使口令变化,由于加密密钥或解密密钥不变,也就不需要像现有技术那样对用户数据进行重复地解密和加密,从而极大地提升了处理效率和用户体验。
在一个实施例中,加密密钥或解密密钥(last_rk)存储于所述存储设备的缓冲存储器(例如DRAM)中,对于缓冲存储器中所存储的数据,在存储设备掉电后丢失,从而保证密钥的安全。
在一个存储设备中,具有多个命名空间,一个或多个命名空间所对应的加密密钥或解密密钥(last_rk)可以相同。也就是说,对于包含多个命名空间的一个存储设备而言,其可以通过一个加密密钥或解密密钥(last_rk)来对所有命名空间的数据进行加密或解密,也可以有多个不同的加密密钥或解密密钥,不同命名空间所对应的加密密钥或解密密钥不同,从而使得任意两个命名空间所对应的加密密钥或解密密钥不同;或多个命名空间对应同一加密密钥或解密密钥。
在一个实施例中,当接收到一个指示了第一命名空间的IO命令时,若该IO命令为读命令,则调用所述解密密钥对从所述第一命名空间取出的数据进行解密。若该IO命令为写命令,则调用所述加密密钥对移入所述第一命名空间数据进行加密。
进一步地,当接收到多个IO命令,且指示了多个第一命名空间,若这些第一命名空间具有相同的加密密钥或解密密钥时,则采用同一加密密钥或解密密钥对这些第一命名空间所对应的数据进行加密或解密;若这些第一命名空间具有互不相同的加密密钥或解密密钥时,则分别调用每个第一命名空间所对应的加密密钥或解密密钥对其所对应的数据进行加密或解密。
再者,当接收到一个指示了第一命名空间的口令管理命令时,不论该口令管理命令是何种类型,以及不论根据口令管理命令的类型对第一命名空间进行何种操作(即不论是设置口令、修改口令、删除口令、口令认证或者取消口令认证),均保持所述第一命名空间的加密密钥或解密密钥不变。
以及,当接收到NS创建命令时,创建了第二命名空间,为所述第二命名空间设置一加密密钥或解密密钥,可以为所述第二命名空间设置一个与其他命名空间相同的加密密钥或解密密钥,也可以为所述第二命名空间设置一个与其他命名空间不同的加密密钥或解密密钥。
作为举例,若第二命名空间的加密密钥或解密密钥与存储设备中其他命名空间的加密密钥或解密密钥相同,则可以根据其他命名空间的加密密钥或解密密钥设置第二命名空间的加密密钥或解密密钥。若第二命名空间的加密密钥或解密密钥与存储设备中其他命名空间的加密密钥或解密密钥不同,则需要重新为第二命名空间生成一个加密密钥或解密密钥。例如,在存储设备中可以设置多组一次可编程器件(第一个一次可编程器件和第二个一次可编程器件),每个命名空间对应一组一次可编程器件,根据每个命名空间对应的一次可编程器件中所存储的数据进行哈希运算得到每个命名空间的加密密钥或解密密钥。在另一个例子中,在存储设备中也可以设置一个一次可编程器件来存储第一随机数据,以及设置另外一个一次可编程器件来存储芯片ID和第二随机数据,由于每个命名空间在进行在生成加密密钥或解密密钥过程中,只使用第一随机数和第二随机数中128比特数据,而每个一次可编程器件的存储容量一般在几KB或者十几KB不等,因此,第一随机数和第二随机数的位数远小于一次可编程器件的容量,也就是说两个一次可编程器件就足够满足多个命名空间的需求,其中,在生成不同命令空间的加密密钥或解密密钥时,可以使用第一随机数和第二随机数中不同比特位的数据。
图18展示了口令密钥生成和加密密钥或解密密钥生成的过程(例如,加密密钥与解密密钥可以相同),实际上,图17b是图18的一部分。在图18中,口令密钥的生成与加密密钥或解密密钥的生成共用了对第一随机数据(TRNG_Data_2)转换得到的第一哈希值(TRNG_Hash_2[127:0]),下面具体对口令密钥的生成过程进行说明。
口令密钥包括:原始密钥(C_Pin_Hash),一级密钥(C_TRNG_Hash_1)和二级密钥(C_TRNG_Hash_2)。
原始密钥(C_Pin_Hash)的生成方法包括:获取用户口令和一次可编程的第三随机数据(LOC_TRNG_1);利用哈希算法将拼接后的用户口令和一次可编程的第三随机数据进行转换,得到用户口令哈希值(Loc_THash[127:0])。获取默认口令,利用哈希算法将默认口令进行转换,得到默认口令哈希值(UPIN_Hash[127:0])。对所述用户口令哈希值(Loc_THash[127:0])和所述默认口令哈希值(UPIN_Hash[127:0])进行加密,得到所述原始密钥(C_Pin_Hash)。
其中,关于利用哈希算法进行转换的方式,可以采用SM3算法;可选地,加密方法可以采用SM4算法。
所述一级密钥(C_TRNG_Hash_1)的生成方法包括:获取用户口令和存储设备识别码,或者获取默认口令和存储设备识别码。利用哈希算法将拼接后的用户口令和存储设备识别码进行转换,或者利用哈希算法将拼接后的默认口令和存储设备识别码进行转换,以得到第四哈希值(UID_Hash[127:0])。获取真随机数据(TRNG_Data_1)。利用哈希算法将所述真随机数据(TRNG_Data_1)进行转换,得到一级密钥哈希值(TRNG_Hash_1[127:0])。对所述第四哈希值(UID_Hash[127:0])和所述一级密钥哈希值(TRNG_Hash_1[127:0])进行加密,得到所述一级密钥(C_TRNG_Hash_1)。
需要注意的是,一级密钥(C_TRNG_Hash_1)的生成过程获取了真随机数据(TRNG_Data_1)。前述的一次可编程的数据存储于一次可编程(One Time Programmable,OTP)存储器中,这种存储器的生命周期内只可以写入(编程)一次,编程后就再也无法修改了。例如用户通过编程将OTP存储器的值写为0xFFFFFFFE,其值将永远保持为0xFFFFFFFE,无法再改写为其他值了。而真随机数据(TRNG_Data_1)由硬件随机数发生器产生,用以根据物理过程而不是计算机程序生成随机数。这样的设备通常是基于一些能生成低等级、统计学上随机的“噪声”信号的微观现象,如热力学噪声、光电效应和量子现象等来产生随机数的。这些物理现象在理论上是完全不可测也不可控的,因此具备良好的随机性。随机数发生器包括换能器、放大器和模拟数字转换器,换能器用来将前述的微观现象的某些效果转换为电信号,放大器用来将其电信号的振幅放大到宏观级别,模拟数字转换器则用来将其输出转变成二进制的数字。通过重复采样这些随机信号,一系列的随机数得以生成。
二级密钥(C_TRNG_Hash_2)的生成方法包括:对所述一级密钥哈希值(TRNG_Hash_1[127:0])和所述第一哈希值(TRNG_Hash_2[127:0])进行加密,得到所述二级密钥(C_TRNG_Hash_2)。
根据上述口令密钥的生成过程可知,加密密钥或解密密钥和口令密钥的处理过程中,共用了上述第一哈希值(TRNG_Hash_2[127:0]),从而能够降低硬件消耗,降低成本。另外,虽然共用了第一哈希值(TRNG_Hash_2[127:0]),但由于其是一次可编程器件产生的,并不受用户口令的影响。因此,加密密钥或解密密钥也不会由于用户口令的改变而改变。
作为举例,控制器除了上述对命名空间的加密密钥或解密密钥进行管理,还可以对接收的命令进行处理。本实施例中,所接收的命令可以是主机通过主机接口向SSD发送的主机命令,也可以是其他命令等。主机命令包括IO命令(又分为读命令和写命令)、NS管理命令和口令管理命令。另外,在本实施例中,由于可为每个命名空间设置用户口令,故根据命名空间的用户口令设置情况,将命名空间的状态分为解锁状态(又分为有口令解锁状态和无口令解锁状态)和锁定状态。
作为举例,对于读命令,该方法包括如下步骤:
响应于获取了访问第一命名空间的第一读命令,获取与所述第一命名空间对应的第一解密密钥;根据所述第一读命令访问存储介质以获取第一密文数据,利用所述第一解密密钥对第一密文数据解密得到第一解密数据作为所述第一读命令要读取的数据。响应于获取了访问第一命名空间的第一写命令获取与所述第一命名空间对应的第一加密密钥;根据所述第一加密密钥对所述第一写命令要写入的第一明文数据进行加密,将加密后得到的第一加密数据写入到存储介质中。
作为举例,在第一命名空间处于解锁状态下,主机有访问第一命名空间的权限,即主机可根据IO命令来访问存储设备中的第一命名空间,而且在访问第一命名空间的过程中,可以使用第一命名空间所对应的第一加密密钥或第一解密密钥对要访问的数据进行加密或解密处理。
存储设备通常可能具有多个命名空间,对于不同的命名空间可以使用相同的加密密钥或解密密钥,也可以使用不同的加密密钥或解密密钥。
例如,对于不同于第一命名空间的第二命名空间,第二命名空间处于解锁状态,处理命令的方法包括:响应于获取了访问第二命名空间的第二读命令,获取与所述第二命名空间对应的第二解密密钥,其中所述第二解密密钥与所述第一解密密钥相同或不同;根据所述第二读命令访问存储介质以获取第二密文数据,利用所述第二解密密钥对第二密文数据解密得到第二解密数据作为所述第二读命令要读取的数据。响应于获取了访问第二命名空间的第二写命令,获取与所述第二命名空间对应的第二加密密钥,其中所述第二加密密钥与所述第一加密密钥相同或不同;根据所述第二加密密钥对所述第二写命令要写入的第二明文数据进行加密,将加密后得到的第二加密数据写入到存储介质中。
根据上述方法实施例可知,第二解密密钥与所述第一解密密钥相同或不同,所述第二加密密钥与所述第一加密密钥相同或不同。
在一个应用场景中,第一命名空间处于锁定状态或者有口令解锁状态,响应于获取了所述第一读命令或所述第一写命令,其中所述第一命名空间处于有口令解锁状态或锁定状态,生成访问所述第一命名空间失败的第一反馈信息,并将所述第一反馈信息发送给主机。
作为举例,访问所述第一命名空间失败的原因包括:1,第一命名空间处于锁定状态,因此无法响应任何IO命令。2,第一命名空间处于有口令解锁状态,必须经过口令验证,才能够响应IO命令。
在本实施例中,对于用户口令验证并不是每次接收到主机命令都需要进行的操作,而是根据主机发送的信息来确定的,作为举例,响应于获取了用户输入的第一用户口令以及所述第一读命令,其中所述第一命名空间处于有口令解锁状态,获取所述第一命名空间所对应的第一口令密钥,根据所述第一口令密钥对所述第一用户口令进行验证;响应于通过所述验证,利用所述第一解密密钥对所述第一密文数据解密得到所述第一解密数据。响应于未通过所述验证,则生成上述第一反馈信息。
其中获取了用户输入的第一用户口令以及所述第一读命令可以是同时接收用户输入的第一读命令和第一用户口令;也可以是首先接收第一读命令,再接收第一用户口令;还可以是首先接收第一用户口令,再接收第一读命令。在一种实施场景中,SSD可以在接收到第一读命令后主动要求主机提供第一用户口令。
同理,响应于获取了所述第一用户口令以及所述第一写命令,其中所述第一命名空间处于有口令解锁状态,获取所述第一口令密钥,并根据所述第一口令密钥对所述第一用户口令进行验证;响应于通过所述验证,根据所述第一加密密钥对所述第一明文数据进行加密得到所述第一加密数据,将所述第一加密数据写入到存储介质中。响应于未通过所述验证,则生成上述第一反馈信息。
对于不同于第一命名空间的第二命名空间,其响应IO命令的方式与前述第一命名空间相同,因此不再赘述。需要说明的是,所述第一口令密钥与第二口令密钥可以相同,也可以不同。
例如,若第一命名空间和第二命名空间均处于无口令解锁状态,由于第一命名空间和第二命名空间可以具有相同的默认口令,因此根据默认口令生成的第一口令密钥与第二口令密钥可以相同。
又如,若第一命名空间和第二命名空间中的一个处于无口令解锁状态,另一个处于有口令解锁状态,由于无口令解锁状态的命名空间具有默认口令,而处于有口令解锁状态的命名空间具有人为设置的用户口令,因此第一口令密钥和第二口令密钥不同。
再如,若第一命名空间和第二命名空间均处于有口令解锁状态,由于第一命名空间和第二命名空间对应的用户口令可以相同也可以不同(完全通过用户预设决定),因此第一口令密钥与第二口令密钥可以相同也可以不同。
本实施例中,主机可以在访问第一命名空间的过程中使用第一命名空间所对应的第一加密密钥或第一解密密钥对要访问的数据进行加密或解密处理,而且还可以对第一命名空间的用户口令进行管理,例如可以基于口令管理命令为第一命名空间设置用户口令、修改用户口令、删除用户口令或取消口令认证。
命名空间的状态分为解锁状态(又分为有口令解锁状态和无口令解锁状态)和锁定状态,而不同的命名空间的状态所能够响应的口令管理命令是不同的。但是,不论响应于何种口令管理命令,第一命名空间对应的第一加密密钥或第一解密密钥是不变的。作为举例,若第一命名空间处于解锁状态,可以根据口令管理命令为所述第一命名空间设置用户口令、修改用户口令或删除用户口令。相应地,上述口令管理命令是口令设置命令、口令修改命令和口令删除命令,在解锁状态下,第一命名空间能够响应上述口令管理命令。在响应上述口令管理命令的同时,第一命名空间的第一加密密钥或第一解密密钥不发生变化。
另外,在解锁状态下,第一命名空间还能够响应取消口令认证命令,为所述第一命名空间取消口令认证。同理,在响应上述取消口令认证命令的同时,第一命名空间的第一加密密钥或第一解密密钥不发生变化。
再者,若第一命名空间处于锁定状态,第一命名空间能够响应口令认证命令,为所述第一命名空间进行口令认证。同理,在响应上述口令认证命令的同时,第一命名空间的第一加密密钥或第一解密密钥不发生变化。作为举例,口令密钥和加密密钥或解密密钥之间是没有关联的,因此不论用户如何修改口令(导致口令密码改变),并不会影响加密密钥或解密密钥,在进行数据访问时不需要先以变更前的用户口令所对应的密钥进行解密操作,再以变更后的用户口令所对应的密钥进行加密操作,从而在满足低延迟的要求下为命名空间中的数据提供加密和解密功能。而且对口令进行管理的操作也不会改变加密密钥和解密密钥,保证了用户口令和加密密钥或解密密钥之间的隔离。
另外,本申请还提供了一种控制器,该控制器的整体结构可以参看图1B的控制部件104,其用于响应于所述第一命令指示了第一命名空间,根据所述第一命名空间的状态对所述第一命令进行处理,以及改变或保持所述第一命名空间的状态。
具体地,参考图1B,控制器包括主机命令处理单元和存储命令处理单元;主机命令处理单元用于解析所述第一命令,根据解析结果指示所述存储命令处理单元;存储命令处理单元用于根据所述指示执行所述第一命令所对应的操作,以及改变或保持第一命名空间的状态。
上述控制器能够处理NVMe命令、NS管理命令和口令管理命令,以实现本申请图2-图18各种实施例的方法步骤。由于上文已经详细介绍了相关方法和电路结构,因此在此不再赘述。具体地,该控制器内部的结构和处理过程可以参看图4、图5、图7和图10。
另外,本申请实施例还提供一种存储设备,即如图1A、图1B所示的存储设备102,存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM 110。控制部件中包括控制部件104,控制部件104处理来自于主机的第一命令,以实现本申请图2-图18各种实施例的方法步骤,由于上文已经详细介绍了相关方法和电路结构,因此在此不再详细叙述。
需要说明的是,为了简明的目的,本申请将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本申请的方案并不受所描述的动作的顺序限制。因此,依据本申请的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本申请所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本申请某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本申请对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本申请某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本申请的公开和教导,本领域技术人员可以理解本申请所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个***,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种管理命名空间的方法,其特征在于,所述方法包括:
接收第一命令;
响应于所述第一命令指示了第一命名空间,根据所述第一命名空间的状态对所述第一命令进行处理,以及改变或保持所述第一命名空间的状态。
2.根据权利要求1所述的方法,其特征在于,
响应于所述第一命令为IO命令,查询所述第一命令所要访问的第一命名空间的状态;
响应于所述第一命名空间的状态为解锁状态,根据所述第一命令对所述第一命名空间对应的物理地址空间中的数据进行搬移操作;
响应于所述第一命名空间的状态为锁定状态,不处理所述第一命令。
3.根据权利要求1或2所述的方法,其特征在于,
响应于所述第一命令为NS删除命令,查询所述第一命令所指示的第一命名空间的状态;
根据所述第一命名空间的状态,删除或保留所述第一命名空间。
4.根据权利要求1或2所述的方法,其特征在于,
响应于所述第一命令为未指示第一命名空间的NS创建命令,分配命名空间的身份信息(NSID),根据所述命名空间的身份信息(NSID)创建第二命名空间,并记录所述第二命名空间的状态。
5.根据权利要求1或2所述的方法,其特征在于,
响应于所述第一命令为口令管理命令,查询所述第一命令所指示的第一命名空间的状态;
响应于所述第一命名空间的状态为解锁状态,为所述第一命名空间设置口令、修改口令、删除口令或取消口令认证,以及改变或保持所述第一命名空间的状态;
响应于所述第一命名空间的状态为锁定状态,对所述第一命名空间进行口令认证。
6.根据权利要求5所述的方法,其特征在于,
响应于所述第一命令为口令修改命令,查询所述第一命令所指示的第一命名空间的状态;
响应于所述第一命名空间的状态为有口令解锁状态,根据用户输入的第一口令更新所述第一命名空间的用户口令;以及
保持所述第一命名空间的状态为有口令解锁状态。
7.根据权利要求5所述的方法,其特征在于,
响应于所述第一命令为口令删除命令,查询所述第一命令所指示的第一命名空间的状态;
响应于所述第一命名空间的状态为有口令解锁状态,删除所述第一命名空间的用户口令;以及
将所述第一命名空间的状态从有口令解锁状态改变为无口令解锁状态。
8.根据权利要求5所述的方法,其特征在于,
响应于所述第一命令为口令认证命令,查询所述第一命令所指示的第一命名空间的状态;
响应于所述第一命名空间的状态为有口令锁定状态且口令验证通过,将所述第一命名空间的状态从有口令锁定状态改变为有口令解锁状态。
9.根据权利要求5所述的方法,其特征在于,
响应于所述第一命令为取消认证命令,查询所述第一命令所指示的第一命名空间的状态;
响应于所述第一命名空间的状态为有口令解锁状态,将所述第一命名空间的状态从有口令解锁状态改变为有口令锁定状态。
10.一种存储设备,其特征在于,包括存储介质和控制器,所述控制器用于实现如权利要求1至9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111473853.3A CN116204111A (zh) | 2021-11-30 | 2021-11-30 | 管理命名空间的方法和存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111473853.3A CN116204111A (zh) | 2021-11-30 | 2021-11-30 | 管理命名空间的方法和存储设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116204111A true CN116204111A (zh) | 2023-06-02 |
Family
ID=86511839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111473853.3A Pending CN116204111A (zh) | 2021-11-30 | 2021-11-30 | 管理命名空间的方法和存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116204111A (zh) |
-
2021
- 2021-11-30 CN CN202111473853.3A patent/CN116204111A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9529735B2 (en) | Secure data encryption in shared storage using namespaces | |
US11194920B2 (en) | File system metadata protection | |
US8286004B2 (en) | Saving encryption keys in one-time programmable memory | |
US11675919B2 (en) | Separation of managed and unmanaged data in a computing device | |
US11368299B2 (en) | Self-encryption drive (SED) | |
US7596695B2 (en) | Application-based data encryption system and method thereof | |
US8352751B2 (en) | Encryption program operation management system and program | |
JP5175617B2 (ja) | データ保護システム、データ保護方法、及びメモリカード | |
US20120303974A1 (en) | Secure Removable Media and Method for Managing the Same | |
JP4463320B1 (ja) | 暗号化記憶装置、情報機器、暗号化記憶装置のセキュリティ方法 | |
US20120237024A1 (en) | Security System Using Physical Key for Cryptographic Processes | |
JP2008257691A (ja) | ストレージデバイスのデータ暗号化およびデータアクセスのシステムおよび方法 | |
KR20090067649A (ko) | 보안 저장 장치를 갖는 메모리 시스템 및 그것의 보안 영역관리 방법 | |
TW201833812A (zh) | 資料儲存裝置以及其操作方法 | |
US9147087B2 (en) | Method of accessing a data storage device | |
US20230179418A1 (en) | Storage controller and method of operating electronic system | |
US20220045850A1 (en) | Memory system encrypting data | |
CN116204111A (zh) | 管理命名空间的方法和存储设备 | |
CN116208320A (zh) | 管理数据加解密密钥的方法、处理命令的方法和相关产品 | |
CN101763319A (zh) | 一种磁盘全盘加密***及方法 | |
CN116361207A (zh) | 保护并管理金钥的方法及装置 | |
TW202036349A (zh) | 電腦系統及其虛擬硬碟的加解密方法 | |
JP2011248124A (ja) | データ暗号化装置およびその制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |