CN113946881A - 安全串行外围接口(spi)闪存 - Google Patents
安全串行外围接口(spi)闪存 Download PDFInfo
- Publication number
- CN113946881A CN113946881A CN202110799866.3A CN202110799866A CN113946881A CN 113946881 A CN113946881 A CN 113946881A CN 202110799866 A CN202110799866 A CN 202110799866A CN 113946881 A CN113946881 A CN 113946881A
- Authority
- CN
- China
- Prior art keywords
- command
- memory device
- value
- secure
- commands
- 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
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- 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/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Power Engineering (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及安全串行外围接口SPI闪存。公开了一种安全存储器装置。在一个实施例中,所述存储器装置包含:控制器,所述控制器经配置以对主机装置发出的命令进行解码并执行所述命令;密码引擎,所述密码引擎经配置以认证所述命令的子集,所述命令的所述子集各自包含数字签名;以及第一单调计数器,所述第一单调计数器在执行所述命令的至少一些所述子集之后递增,其中所述第一单调计数器的值用于生成所述数字签名。
Description
相关申请
本申请要求于2020年7月15日提交的、题为“安全串行外围接口(SPI)闪存(SecureSerial Peripheral Interface(SPI)Flash)”的序列号为63/052,122的临时美国专利申请的提交日权益,所述申请的全部公开内容特此以引用的方式并入本文中。
本申请涉及于2017年6月26日提交的第10,296,421号美国专利以及于2019年3月22日提交的第PCT/US2019/023551号国际申请,所述美国专利和所述国际申请全部以全文引用的方式并入。
技术领域
本文中公开的至少一些实施例大体上涉及半导体装置,且具体地涉及提供用于存取或非型闪存存储器装置等存储器装置的安全接口。
背景技术
当前,许多半导体装置用于存储重要信息。此类装置的实例包含但不限于或非型闪存、与非型闪存和其它非易失性半导体装置。默认情况下,经由软件或固件限制或保护对这些装置的存取。然而,对此类装置的硬件攻击可能会危及此类装置的完整性。一般来说,对存储器装置的硬件攻击是指攻击者以物理方式存取存储器装置的攻击。例如,攻击者可以通过对零件进行拆焊和对零件进行重新编程或更换零件来修改存储器的内容。替代地,或结合前述内容,被攻击者可以使用逻辑分析器来探测传输到存储器装置的命令,并且在需要时重放命令。存在各种其它硬件攻击,并且出于简洁起见未描述所述各种其它硬件攻击。
许多攻击涉及提取存储器中的已知值。例如,存储器可以存储安全性凭证。尽管进行了加密,但攻击者可以标识内容的给定、固定片段的密文,并且使用所述密文来利用存储器装置或凭证。基本上,如果密文始终与一段明文相关联,则加密就不能充分地保护下层明文。因此,用户可以使用密文来代替明文而不会“破坏”加密,这是因为密文始终相同且可以通过硬件攻击标识。
阻止此攻击的一种尝试是使用重放保护单调计数器(RPMC)或多个RPMC。这些计数器生成附加到命令和响应的伪随机值,以确保每一命令或响应是唯一的,从而防止命令重放。
当RPMC提供的安全性很低时,它们不能充分保护存储器装置的内容。所公开的实施例提供建立在RPMC之上的额外安全性,所述RPMC保护存储器装置,同时维持与RPMC启用装置的后向兼容性。
发明内容
本申请的方面涉及一种存储器装置,其包括:控制器,所述控制器经配置以对主机装置发出的命令进行解码并执行所述命令;密码引擎,所述密码引擎经配置以认证所述命令的子集,所述命令的所述子集各自包含数字签名;以及第一单调计数器,所述第一单调计数器在执行所述命令的至少一些所述子集之后递增;其中所述第一单调计数器的值用于生成所述数字签名。
本申请的另一方面涉及一种方法,其包括:在存储器装置处从主机装置接收安全命令,所述安全命令包括第一数字签名;由所述存储器装置通过生成所述命令的第二数字签名并将所述第二数字签名与所述第一数字签名进行比较来认证所述安全命令;由所述存储器装置在所述安全命令成功完成后使第一单调计数器递增;由所述存储器装置生成对所述安全命令的响应,所述响应包含所述第一单调计数器的值;由所述存储器装置对所述响应进行签名;以及由所述存储器装置将所述响应返回给所述主机装置。
附图说明
图1是示出根据一个实施例的用于保护存储器装置的系统的框图。
图2是示出根据本公开的一些实施例的用于维持多个单调计数器的方法的流程图。
图3是示出根据本公开的一些实施例的用于请求存储器装置存储的参数的安全命令的泳道图。
图4是示出根据本公开的一些实施例的用于预配和取消预配存储器装置的安全性特征的安全命令的泳道图。
图5是示出根据本公开的一些实施例的用于保护对存储器装置的媒体的数据读取和写入的安全命令的泳道图。
图6是示出根据本公开的一些实施例的用于保护存储器装置的寄存器数据读取和写入的安全命令的泳道图。
图7是示出根据本公开的一些实施例的用于保护存储器装置的块锁定和解锁的安全命令的泳道图。
具体实施方式
所公开的实施例涉及改进的存储器系统,例如或非型闪存存储器装置。
所公开的实施例充分利用RPMC循环和数据包格式来扩展RPMC提供的安全性功能性之外的安全性功能性。可以根据存储器供应商所需的任何协议预先共享额外的非易失性密钥。经由充当安全命令计数器的单独单调计数器(A-MTC0)实施防重放功能性。A-MTC0的值在通电后和安全命令成功完成时递增。在一些实施例中,对于RPMC命令或类似的不安全命令,所述值不递增。在一个实施例中,A-MTC0是与RPMC计数器匹配的32位计数器,并且在给定充分利用此计数器类型的命令的情况下是足够的。没有对现有RPMC计数器功能性作出改变,并且RPMC与安全循环命令计数器之间不存在交互。可以三种方式获得A-MTC值:自动通电、响应于安全性寄存器的直接读取,以及在每次成功的安全写入命令之后。在所说明的实施例中,进行安全读取循环以在这三种事件之一后检索HMAC签名输出。因此,软件经由此计数器与存储器装置保持“同步”非常容易。所公开的实施例另外描述了可用以对功率循环进行计数的第二额外计数器(A-MTC1)。此计数器提供信息且用于去激活安全性。
所公开的实施例基于制造商选择的密钥共享方法来利用装置根密钥。在一个实施例中,基于对A-MTC1的值和根密钥执行的HMAC运算而生成装置会话密钥。此会话密钥导出方法符合RPMC规范。安全数据包格式遵循RPMC数据包格式,如下所示:
字节 | RPMC命令 | 安全写入命令 |
1 | 命令类型 | 命令类型 |
2 | 计数器地址 | 配置数据 |
3 | 保留 | 变化 |
4-端 | 变化 | 变化 |
(端-X到端) | 签名 | 签名 |
本文中公开了各种命令。下表简要示出了实施于所公开的实施例中的命令。
图1是示出根据一个实施例的用于保护存储器装置的系统的框图。
在图1中,主机装置102可以经由通信信道与存储器装置104通信。主机装置102可以是具有一或多个中央处理单元(CPU)的计算机,计算机外围装置(例如,存储器装置104)可以经由互连件(例如,计算机总线(例如,外围组件互连(PCI)、扩展PCI(PCI-X)、PCI高速(PCIe))、通信部分和/或计算机网络附接到所述计算机。
存储器装置104可以用于例如将主机装置102的数据存储在非易失性存储媒体108中。一般来说,存储器装置的实例包含硬盘驱动器(HDD)、固态驱动器(SSD)、闪存存储器、动态随机存取存储器、磁带、网络附接存储装置等。存储器装置104具有使用通信信道来实施与主机装置102的通信的主机接口110。例如,在一个实施例中,主机装置102与存储器装置104之间的通信信道为外围组件互连高速(PCI高速或PCIe)总线;并且主机装置102与存储器装置104使用NVMe协议(非易失性存储器主机控制器接口规范(NVMHCl),也称为NVM高速(NVMe))彼此通信。
在一些实施方案中,主机装置102与存储器装置104之间的通信信道包含计算机网络,例如局域网、无线局域网、无线个人局域网、蜂窝式通信网络、宽带高速始终连接的无线通信连接(例如,当前代或未来代的移动网络链接);并且主机装置102和存储器装置104可以经配置以使用数据存储管理和使用与NVMe协议中的命令类似的命令来彼此通信。
控制器106可以运行固件122来执行响应于来自主机装置102的通信的操作和/或其它操作。如将论述的,这些操作可以包括存取非易失性存储媒体108的安全和不安全操作两者。一般来说,固件是提供对工程化计算装置的控制、监测和数据操纵类型的计算机程序。在一些实施例中,固件控制控制器106在操作存储器装置104时的操作,例如密码引擎120的操作,如下文进一步论述的。
存储器装置104具有非易失性存储媒体108,例如或非型闪存存储器、与非型闪存存储器或其它类型的存储媒体。非易失性存储媒体108是非易失性的,这是因为不需要电力来维持存储在非易失性存储媒体108中的数据/信息,可以在非易失性存储媒体108断电然后再次通电之后检索到所述数据/信息。可以使用以下各种存储器/存储装置技术来实施存储器单元,例如基于与非门或者或非门的闪存存储器、相变存储器(PCM)、磁存储器(MRAM)、电阻式随机存取存储器和3D XPoint,从而使得非易失性存储媒体108是非易失性的,并且可以在没有电力的情况下将其中存储的数据保留数天、数月和/或数年。
存储器装置104可以包含易失性动态随机存取存储器(DRAM)(120),用于存储控制器106使用的运行时间数据和指令,以改进控制器106的计算性能和/或提供用于在主机装置102与非易失性存储媒体108之间传送的数据的缓冲器。DRAM是易失性的,这是因为它需要电力来维持其中存储的数据/信息,当电力中断时,所述数据/信息立即或快速丢失。
易失性DRAM通常具有比非易失性存储媒体108少的时延,但会在失去电力时快速丢失其数据。因此,有利的是,使用易失性DRAM来临时存储在其当前计算任务中用于控制器106的指令和数据以改进性能。在一些情况下,易失性DRAM替换为在一些应用中使用比DRAM少的电力的易失性静态随机存取存储器(SRAM)。当非易失性存储媒体108具有与易失性DRAM类似的数据存取性能(例如,在时延、读取/写入速度方面)时,可以除去易失性DRAM;并且控制器106可以通过针对指令和数据对非易失性存储媒体108进行操作而不是对易失性DRAM进行操作来执行计算。
例如,交叉点存储装置和存储器装置(例如,3D XPoint存储器)具有与易失性DRAM类似的数据存取性能。交叉点存储器装置使用无晶体管存储器元件,所述无晶体管存储器元件中的每一个具有在一起堆叠成列的存储器单元和选择器。存储器元件列经由两个垂直导线层连接,其中一个层处于存储器元件列上方,并且另一个层处于存储器元件列下方。可以单独地在两个层中的每一层上的一个导线的交叉点处选择每个存储器元件。交叉点存储器装置是快速且非易失性的,并且可以用作通用存储器池以用于处理和存储。
在一些情况下,控制器106具有处理器内高速缓冲存储器,其数据存取性能优于易失性DRAM和/或非易失性存储媒体108。因此,优选的是,在控制器106的计算操作期间将当前计算任务中使用的部分指令和数据高速缓存在控制器106的处理器内高速缓冲存储器中。在一些情况下,控制器106具有多个处理器,各自具有其自身的处理器内高速缓冲存储器。
任选地,控制器106使用组织于存储器装置104中的数据和/或指令来执行数据集中存储器处理。例如,响应于来自主机装置102的请求,控制器106对存储在存储器装置104中的数据集执行实时分析,并且将减小的数据集传送到主机装置102作为响应。例如,在一些应用中,存储器装置104连接到实时传感器以存储传感器输入;并且控制器106的处理器112经配置以基于传感器输入执行机器学习和/或模式辨识,以支持至少部分地经由存储器装置104和/或主机装置102实施的人工智能(AI)系统。
在一些实施方案中,控制器106的处理器在计算机芯片制造中与存储器集成,以启用存储器中处理,且因此克服冯·诺依曼(von Neumann)瓶颈,其因根据冯·诺伊曼结构单独配置的处理器与存储器之间的数据移动的时延引起的吞吐量限制而限制了计算性能。处理和存储器的集成提高了处理速度和存储器传送速率,并且减少了时延和电力使用。
存储器装置104可以用于各种计算系统,例如云计算系统、边缘计算系统、雾计算系统和/或独立计算机。在云计算系统中,远程计算机服务器连接到网络以存储、管理和处理数据。边缘计算系统通过在接近数据源的计算机网络边缘处执行数据处理来优化云计算,且因此减少与集中式服务器和/或数据存储区的数据通信。雾计算系统使用一或多个终端用户装置或近用户边缘装置来存储数据,且因此减少或消除了在集中式数据仓库中存储数据的需求。
本文中所公开的至少一些实施例可以使用由控制器106(例如,固件)执行的计算机指令实施。在一些情况下,硬件电路可以用于实施固件的至少一些功能。所述固件可以最初存储在非易失性存储媒体108或另一非易失性装置中,并且加载到易失性DRAM和/或处理器内高速缓冲存储器中以供控制器106执行。
例如,固件可以经配置以使用下文所论述的技术来操作安全环境。然而,下文所论述的技术不限于在图1的计算机系统和/或上文所论述的实例中使用。
在所说明的实施例中,控制器进一步包含密码引擎124。在一个实施例中,密码引擎124处理由控制器106通过主机接口110接收到的所有安全命令。在一些实施例中,安全命令包括控制器106可以处理的所有命令的子集。在一些实施例中,密码引擎124可以实施为控制器106的一部分,但为方便起见单独地进行了说明。密码引擎124以通信方式耦合到密钥存储区118和单调计数器存储区114。在一些实施例中,这两种装置均包括低时延存储位置,例如寄存器组中的寄存器。在一些实施例中,在通电期间,密钥存储区118和单调计数器存储区114从存储在非易失性存储媒体108中的数据填充,并且密钥存储区118和单调计数器存储区114用作用于其中存储的数据的高速缓冲存储器。如将论述的,密钥存储区118存储多个密码密钥,包含由制造商或其他实体设置的根密钥以及每次存储器装置104通电时生成的会话密钥。单调计数器存储区114存储多个单调计数器,并且密码引擎124经配置以存取并更新这些计数器。密码引擎124进一步经配置以验证并执行安全命令。在一些实施例中,密码引擎124包含基于硬件的散列计算器,例如硬件HMAC-SHA1计算器。在以下图2到7的论述中提供密码引擎124的操作的细节。
图2是示出根据本公开的一些实施例的用于维持多个单调计数器的方法的流程图。
图2所示的方法从步骤202开始,此时存储器装置通电。在一些实施例中,图2到7中所描述的方法可以实施于存储器装置的硬件中。替代地,图2到7中所描述的方法可以实施于控制器中,例如存储器装置的可重新编程的微控制器。在任一情境中,每当装置通电时,图2中的方法执行。
在步骤204,存储器装置使通电单调计数器(MTC)递增。如本文中所使用,通电单调计数器被称为A-MTC1。如将论述的,单独的安全命令MTC被称为A-MTC0。A-MTC0和A-MTC1均包括从起始值(例如,0x0)递增的固定宽度计数器。在一些实施例中,A-MTC1存储在非易失性位置(例如,下层非易失性存储媒体的扇区和页)中以在电力循环期间保持不变。任选地,A-MTC1的值可以存储在寄存器或其它低时延存储位置中。在此实施例中,从非易失性存储区读取A-MTC1的值并将其写入易失性(例如,寄存器)存储区以供更快速地存取。由于A-MTC1的值仅在通电时更新,因此在存储器装置的操作期间将值复制到较低时延存储装置可能仅发生一次。
在步骤216,存储器装置基于A-MTC1的值和根密钥生成会话密钥。
在所说明的实施例中,存储器装置经配置以存储根密钥。此根密钥包括在对称加密系统中使用的预先共享密钥(PSK)。在一些实施例中,主机装置另外存取相同的PSK,并且主机和存储器装置可以使用PSK安全地通信,如将描述的。根密钥存储在存储器装置上的安全存储位置中。任选地,可以在制造期间由存储器装置的制造商写入根密钥。
如将描述的,经由密码术来保护存储器装置与外部装置之间的一些或所有通信。存储器装置和外部装置利用每次存储器装置通电时唯一的会话密钥。这防止重复使用单个密钥(例如,根密钥),所述重复使用可能会导致存储器装置中存在漏洞。可以各种方式生成会话密钥,并且生成会话密钥的特定方法应受到过分限制。
作为一个实例,可以使用A-MTC1的值和根密钥生成会话密钥。在此实例中,基于散列的消息认证码(HMAC)算法(例如,HMAC-SHA1)用于生成会话密钥。在此实例中,会话密钥可以定义为Ksession=H(Kroot,A-MTC1),其中H表示选定HMAC(或类似)函数,Kroot包括存储器装置板载的根密钥,并且A-MTC1是通电MTC的当前值。在此实例和其它实例中,每次存储器装置基于A-MTC1值通电时,将保证会话密钥是唯一的。
在步骤222,在生成会话密钥之后,存储器装置使安全命令单调计数器(A-MTC0)的值递增。任选地,存储器装置可以略过步骤220。在一个实施例中,在电力循环期间将A-MTC0的值重置为零。替代地,A-MTC0的值可以在电力循环期间保持不变。
在使A-MTC0的值递增之后,存储器装置在步骤206中接收命令。如将论述的,命令可以包括不安全命令(例如,未签名的命令)或安全命令。在一个实施例中,安全命令包括所有命令的子集。一般来说,安全命令将包含可以用于验证发送器和消息的完整性的签名。安全命令是在认证之后对下层非易失性存储媒体执行特许操作的命令。相比而言,不安全命令包括不利用本公开中所描述的签名和MTC值的现有命令。例如,现有RPMC命令可以包括所公开的实施例的上下文中的不安全命令。
如果存储器装置在步骤208中接收到不安全命令,则所述存储器装置在步骤214中处理所述不安全命令。存储器装置以本领域中已知的任何合理方式处理不安全命令,并且本文中未提供处理不安全命令的细节。
如果存储器装置在步骤208中接收到安全命令,则存储器装置从步骤210开始处理安全命令。在一个实施例中,存储器装置可以对所述命令进行解码。在一个实施例中,存储器装置可以对不安全和安全命令两者进行解码。在一个实施例中,存储器装置可以选择性地仅对安全命令进行解码。存储器装置在对命令进行解码期间(例如,通过标识操作码和命令类型)区分不安全和安全命令。在一个实施例中,安全命令包括所有命令的子集。在一个实施例中,存储器装置可以基于命令结构对命令进行解码。在一个实施例中,存储器装置可以基于操作码对命令进行解码。在一个实施例中,存储器装置可以基于命令的标志或其它内容对命令进行解码。
在步骤210,存储器装置在处理(例如,执行解码操作)命令之后尝试处理安全命令。以下流程图中提供了处理各种安全命令的细节,本文中不再重复。一般来说,处理安全命令包含验证命令的签名并检查命令中的MTC值。如将论述的,安全命令包含命令的发出方(即,主机装置)与存储器装置之间同步的一或多个MTC值。存储器装置将接收到的MTC值与预期MTC值进行比较以防止重放攻击。另外,主机装置使用会话密钥对每个命令进行签名,并且存储器装置验证此签名,所述签名确保发送装置能够存取会话密钥(且因此根密钥),这验证了发送装置被准许发出安全命令。关于图3到7中描绘的方法更详细地描述了此通用方法的变体。
在步骤212,存储器装置基于安全命令是否成功而分支。简单来说,安全命令会由于三种主要原因而失败。首先,安全命令可能会由于物理或逻辑缺陷而失败。例如,安全命令可以存取无效地址,或存储器装置可以包含阻止其响应的物理缺陷。尽管存在此类失败,但本公开中未进行详细阐述。其次,安全命令可能会由于签名无法被验证而失败。因此,安全命令可以是有效命令,但缺少有效签名意味着存储器装置无法验证发送器的身份。因此,存储器装置将其视为失败的安全命令。再者,命令中的MTC值可能会与存储器装置存储的对应MTC值不匹配。在此情境下,安全命令可能是先前命令的重放(具体地,当签名有效时)。因此,存储器装置也将此情境视为失败的命令。
如一个实施例中所说明,如果存储器装置检测到安全命令失败,则存储器装置停止处理安全命令。任选地,存储器装置可以返回指示命令失败的错误响应。
替代地,如果存储器装置确定安全命令有效且成功,则存储器装置在步骤218中使A-MTC0的值递增。如所说明的,存储器装置针对每个有效安全命令使A-MTC0递增,并且持续使A-MTC0递增,直到达到A-MTC0的最大值或装置断电。任选地,A-MTC0的值可能会超过限制并且在达到最大可存储值后“重置”为零。
在任选实施例中,存储器装置可以仅响应于安全写入命令而执行步骤218。也就是说,存储器装置仅响应于将数据写入存储器的安全请求而使A-MTC0递增。
在任选实施例中,存储器装置可以先执行步骤218,再执行步骤210。在此实施例中,A-MTC0的值将针对接收到的每个安全命令与每个有效安全命令相比而递增。也就是说,存储器装置将针对有效安全命令和无效的安全命令(例如,具有不正确签名或MTC值)两者使A-MTC0递增。
在步骤220,在使A-MTC0的值递增之后,存储器装置生成并返回对安全命令的响应。在图3-7中更详细地描述了生成特定命令的响应的细节。一般来说,存储器装置将提取A-MTC0的已递增值,并且针对一些命令,提取A-MTC1的值。存储器装置将一或多个MTC值与响应数据(例如,读取结果、状态寄存器数据等)组合且并形成有效负载。存储器装置接着使用HMAC函数等密码函数生成有效负载的数字签名。
类似于对步骤216的论述,存储器装置可以使用HMAC函数来使用会话密钥对有效负载进行签名。因此,响应可以包括有效负载和签名S=H(Ksession,有效负载),其中H是HMAC(例如,HMAC-SHA1)等密码函数并且有效负载包括待返回的数据,包含任何MTC值。
如将在图3到7中更详细地描述的,接收装置(例如,主机装置)在本地存储MTC值并且在后续安全请求中使用这些值,由此确保与存储器装置的通信中的新鲜度。与需要针对MTC的值的主机装置主动查询的现有系统相比,存储器装置在对安全命令的每个响应中自动包含MTC值,因此确保主机装置与存储器装置始终同步。
可以各种方式将A-MTC0和A-MTC1的值提供到主机装置。在所说明的实施例中,在安全命令的响应数据包中提供A-MTC0和A-MTC1的值。然而,在任选实施例中,存储器装置可以其它方式提供A-MTC0和A-MTC1的值。作为第一实例,当存储器装置通电时,存储器装置可以提供A-MTC0或A-MTC1的值。因此,当存储器装置通电时,主机装置可以收听A-MTC0或A-MTC1的值。作为第二实例,存储器装置可以经由对寄存器的直接读取——包含A-MTC0或A-MTC1的值——而提供A-MTC0或A-MTC1的值。在一些实施例中,此直接读取可以包括如先前所描述的安全命令。替代地,直接读取可以包括不安全命令。
将前述方法的各种步骤描述为由存储器装置执行。在一些实施例中,所述步骤可以由其它类型的装置以类似方式执行。另外,各种步骤可以由存储器装置的不同组件执行。
图3是示出根据本公开的一些实施例的用于请求存储器装置存储的参数的安全命令的泳道图。在一个实施例中,安全命令包括所有命令的子集。
在所说明的实施例中,主机将命令发给存储器装置以检索存储器装置存储的唯一标识符(UID)。在一些实施例中,UID包括存储器装置的唯一值,并且在由单一制造商制造的所有此类存储器装置之间是唯一的。
在步骤302,主机装置生成随机数值。在一个实施例中,随机数值包括在主机上生成的随机或伪随机值。在所说明的实施例中,利用随机数值以防止在步骤304中重放发出的命令。
在步骤304,主机发出命令以请求UID。在一些实施例中,命令具有以下形式:
表1
请求UID命令格式
如表1中所说明,命令包含预定操作码(例如,9Bh)和指示特定命令(例如,0x3E)的类型修改符。任选地,命令包含一字节的配置数据(“Config”)。最后,命令的后四个字节包含主机生成的随机数值。表1和所有表中的命令的特定形式仅为示例性的,并且可以使用其它形式。应注意,在步骤304中发出的命令包括未签名的命令。因此,命令可以由任何装置发出,无论所述装置是否包含预先共享密钥(PSK),如将论述的。
在所说明的实施例中,主机和存储器装置可以包括通过SPI或UART连接等有线连接通信的集成电路装置。
在步骤306,在接收到命令之后,存储器装置读取UID。在一些实施例中,UID包括永久地存储在存储器装置上的固定标识符。在一些实施例中,可以将UID存储在非易失性存储媒体的已分割节段中。在一些实施例中,可以将UID烧入存储器装置板载的单独存储位置的保险丝中。存储UID的特定方法不是限制性的。
接下来,在步骤308,存储器装置使MTC递增。在所说明的实施例中,此MTC对应于安全命令MTC且标记为A-MTC0。如所论述的,存储器装置针对成功完成的每个安全命令使A-MTC0的值递增。在一个实施例中,安全命令包括所有命令的子集。在所说明的实施例中,在步骤304中发出的命令是未签名的,且因此被假设为成功完成。在一些实施例中,当使A-MTC0的值递增时,存储器装置保留已递增的值以包含在响应数据包中,如将论述的。
在步骤310,存储器装置生成响应数据包并对所述响应进行签名。下文提供响应数据包的示例格式:
表2
请求UID响应格式
在所说明的实施例中,响应包含返回扩展状态寄存器(ESR)的内容的第一字节。在一些实施例中,ESR存储存储器装置的情况或状态,并且可以采取已知的值集之一。ESR的特定格式不是限制性的。所述响应另外包含不是限制性的各种保留字段(简称为“Res.”)。
在所说明的实施例中,所述响应另外返回表示存储器装置的提供状态(“Prov.Status”)的一字节状态字段。提供和解除提供分别指启用和停用存储器装置的安全性特征。类似于ESR,提供状态可以包括表示存储器装置的安全性配置的值集之一。在一些实施例中,所述响应另外包含返回存储器装置和/或固件的当前修改的3字节修改字段。
在一些实施例中,上文所描述的所有字段是任选的或可以基于系统的需要进行修改。相比而言,在大多数实施例中,A-MTC0、UID和签名字段包括必选字段,但字段的位置可以变化。
在所说明的实施例中,A-MTC0字段返回安全命令MTC的当前值。如所说明的,MTC值是32位值,但可以基于下层寄存器结构按需要使用不同宽度。如结合图2所描述,针对每个安全命令使安全命令MTC递增,而不针对不安全命令使安全命令MTC递增。在所说明的实施例中,响应于对UID的请求而使A-MTC0的值递增。在其它替代实施例中,A-MTC0的值可以不递增,并且可以略过步骤308。
在所说明的实施例中,UID包括存储器装置的唯一标识符,并且包括128位标识符。可以使用其它标识符宽度。
最后,响应包含256位签名。在一个实施例中,由存储器装置使用上文所描述的会话密钥生成签名。具体地,在所说明的实施例中,单向散列函数(例如,基于散列的消息认证码)可以用于生成签名。当使用基于散列的消息认证码(HMAC)时,会话密钥和响应消息的所有字段(除了签名)用作到HMAC的输入。因此,HMAC采用H=(Ksession,{A-MTC0,UID,…})的形式,其中H包括HMAC-SHA1等HMAC函数,A-MTC0包括安全命令MTC的值,UID包括存储器装置的唯一标识符,Ksession包括通电时生成的会话密钥,并且省略号表示响应中的任何额外数据(例如ESR、提供状态等)。如所说明,除Ksession外的值可以串接或以其它方式组合以形成单个消息m,使得m={A-MTC0,UID,…},且因此签名包括S=H(Ksession,m)。
在步骤312,存储器装置将已签名消息返回给主机。如所论述的,已签名消息至少包含A-MTC0的值、UID的值和签名。
在步骤314,主机提取A-MTC0的值并在本地存储此值。以此方式,存储器装置和主机均与A-MTC0的值同步,如将论述的。这是因为存储器装置在每个安全命令期间持续地提供A-MTC0的最新值,因此使得主机能够管理同步。
图4是示出根据本公开的一些实施例的用于预配和取消预配存储器装置的安全性特征的安全命令的泳道图。在一个实施例中,安全命令包括所有命令的子集。
在步骤402,主机装置读取A-MTC0的值并生成随机数值。在图3中描述了随机数值的生成,并且本文中不再重复。如上文所描述的,主机装置从存储器装置接收A-MTC0的最新值。在步骤402中,主机装置读取此当前值,之后发送提供或取消提供命令。
在步骤404,主机装置对提供或取消提供命令进行签名。在一个实施例中,提供和取消提供命令共享以下格式:
表3
提供/取消提供命令格式
如表3中所说明,提供和取消提供命令共享相同格式。命令均以指定操作码(例如,9Bh)开始并且包含命令类型(例如,提供的0x35和取消提供的0x33)、一字节配置字段和四字节主机生成的随机值。另外,主机装置插入A-MTC0的当前值。在一个实施例中,主机装置通过从存储器装置接收当前值来维持此值。如上文所描述的,当存储器装置通电时,可以响应于明确读取命令或响应于各种安全命令接收此值。最后,主机装置生成具有零到十字节的安全签名并且将所述签名附加到前十字节。在一个实施例中,使用HMAC-SHA1等HMAC函数、使用会话密钥作为签名密钥,生成签名。在一个实施例中,主机装置通过检索A-MTC1的值且使用共享根密钥生成会话密钥来生成其自身的会话密钥。在替代实施例中,主机装置可以从存储器装置直接读取会话密钥。
在步骤406,主机装置将已签名的提供或取消提供命令发给存储器装置。
在步骤408,存储器装置验证签名。在所说明的实施例中,存储器装置提取命令的非签名字节并且使用会话密钥生成其自身的签名。如果存储器装置生成的签名与命令中的签名匹配(例如,通过比较值),则存储器装置确认发送器的真实性。
在步骤410,存储器装置激活(提供命令的)安全性特征或去激活(取消提供命令的)安全性特征。在一个实施例中,存储器装置更新指示存储器装置是否支持安全命令的配置或状态寄存器。存储器装置基于提供或取消提供命令更新此寄存器的值。在一个实施例中,在提供之后,存储器装置将接受如本说明书通篇所描述的已签名安全命令。相比而言,当取消提供时,存储器装置将不再接受安全命令。任选地,存储器装置可以忽略安全命令。作为另一选项,存储器装置可以在适当时将安全命令处理为不安全的(例如,读取和写入,但不是已认证的锁定)。如上文所论述的,安全命令处理例程存储在固件中或存储在专用硬件电路或装置中。因此,存储器装置在取消提供时使此逻辑“短路”,并且在提供时启用此逻辑。
接下来,在步骤412,存储器装置使MTC递增。在所说明的实施例中,此MTC对应于安全命令MTC且标记为A-MTC0。如所论述的,存储器装置针对成功完成的每个安全命令使A-MTC0的值递增。已在图3的步骤308中提供此步骤的细节,并且本文中不再重复。任选地,如果存储器装置仅经配置以针对安全写入操作更新A-MTC0,则存储器装置可以不针对提供或取消提供命令使A-MTC0递增。
在步骤414,存储器装置生成响应数据包并对所述响应进行签名。下文提供响应数据包的示例格式:
表4
提供响应格式
对取消提供命令的响应可以类似方式格式化。表4中的数据包与表2中的数据包共享字段,并且本文中不重复对那些共享字段(例如,签名、UID、A-MTC0、ESR、随机数等)的描述。那些字段的格式化和生成以全文引用的方式并入本文中。除A-MTC0之外,响应数据包另外包含可以与A-MTC0相同的方式检索的通电A-MTC1值。
在一些实施例中,上文所描述的所有字段是任选的或可以基于系统的需要进行修改。相比而言,在大多数实施例中,A-MTC0、A-MTC1、UID和签名字段包括必选字段,但字段的位置可以变化。
在步骤416,存储器装置将已签名消息返回给主机。如所论述的,已签名消息至少包含A-MTC0的值、A-MTC1的值和签名。
在步骤418,主机提取A-MTC0和A-MTC1的值并在本地存储这些值。以此方式,存储器装置和主机均与A-MTC0和A-MTC1的值同步,如将论述的。这是因为存储器装置在每个安全命令期间持续地提供A-MTC0的最新值,因此使得主机能够管理同步。
图5是示出根据本公开的一些实施例的用于保护对存储器装置的媒体的数据读取和写入的安全命令的泳道图。在一个实施例中,安全命令包括所有命令的子集。
在步骤502,主机装置读取A-MTC0的值。如上文所描述的,主机装置从存储器装置接收A-MTC0的最新值。在步骤502中,主机装置读取此当前值,之后发送提供或取消提供命令。
在步骤504,主机装置生成已认证修改命令并对所述已认证修改命令进行签名,以对来自存储器装置的媒体的数据进行编程或擦除所述数据。在一个实施例中,已认证修改命令具有以下格式:
表5
已认证修改命令格式
如表5中所说明,已认证修改开始于指定操作码(例如,9Bh)并且包含命令类型(例如,0x34)、指定命令的任何选项的两字节配置字段,以及A-MTC0的四字节值。如同其它命令,主机装置通过从存储器装置接收当前值来维持此值。如上文所描述的,当存储器装置通电时,可以响应于明确读取命令或响应于各种安全命令接收此值。
命令另外包含三位源和目的地地址字段以及三位大小字段。这些字段的特定格式可以取决于实施方案而变化,但大体上包含支持存储器装置上的编程或擦除(或类似)操作所需的任何字段。
最后,主机装置生成具有零到十八字节的安全签名并且将所述签名附加到前十八字节。在一个实施例中,使用HMAC-SHA1等HMAC函数、使用会话密钥作为签名密钥,生成签名。在一个实施例中,主机装置通过检索A-MTC1的值且使用共享根密钥生成会话密钥来生成其自身的会话密钥。在替代实施例中,主机装置可以从存储器装置直接读取会话密钥。
在步骤506,主机装置将已签名的已认证修改命令发给存储器装置。
在步骤508,存储器装置验证签名。在所说明的实施例中,存储器装置提取命令的非签名字节并且使用会话密钥生成其自身的签名。如果存储器装置生成的签名与命令中的签名匹配(例如,通过比较值),则存储器装置确认发送器的真实性。
在步骤510,存储器装置执行以已认证修改命令表示的所请求编程或擦除操作。在一些实施例中,可以本领域中已知的任何方式执行编程或擦除以对存储器装置进行编程或擦除。
接下来,在步骤512,存储器装置使MTC递增。在所说明的实施例中,此MTC对应于安全命令MTC且标记为A-MTC0。如所论述的,存储器装置针对成功完成的每个安全命令使A-MTC0的值递增。已在图3的步骤308中提供此步骤的细节,并且本文中不再重复。任选地,如果存储器装置仅经配置以针对编程操作更新A-MTC0,则存储器装置可以不针对提供或取消提供命令使A-MTC0递增。
在步骤514,存储器装置读取A-MTC1的值,并且在步骤616,所述存储器装置生成响应数据包并对所述响应进行签名。下文提供响应数据包的示例格式:
表6
提供响应格式
表6中的数据包与表2和4中的数据包共享字段,并且本文中不重复对那些共享字段(例如,签名、A-MTC0、A-MTC1ESR等)的描述。那些字段的格式化和生成以全文引用的方式并入本文中。
如图所示,除A-MTC0之外,响应数据包另外包含可以与A-MTC0相同的方式检索的通电A-MTC1值。由于寄存器读取未签名,因此寄存器读取命令可以用于获得A-MTC1的当前值。然后,如上文所描述的,主机装置可以利用A-MTC1的所述值来生成会话密钥。因此,在一些实施例中,主机装置将读取寄存器值,然后发出安全命令(并对所述安全命令进行签名)。响应数据包返回在读取命令中请求的寄存器值,或要在写入命令中写入的数据的补零副本。另外,在一些实施例中,命令包含副本签名(DupSig),其包括总签名的一部分。最后,可以将源、目的地和大小字段返回到主机装置以确认操作。
在一些实施例中,上文所描述的所有字段是任选的或可以基于系统的需要进行修改。相比而言,在大多数实施例中,A-MTC0、A-MTC1和签名字段包括必选字段,但字段的位置可以变化。
在步骤516,存储器装置将已签名消息返回给主机。如所论述的,已签名消息至少包含A-MTC0的值、A-MTC1的值和签名。
在步骤518,主机提取A-MTC0和A-MTC1的值并在本地存储这些值。以此方式,存储器装置和主机均与A-MTC0和A-MTC1的值同步,如将论述的。这是因为存储器装置在每个安全命令期间持续地提供A-MTC0的最新值,因此使得主机能够管理同步。
图6是示出根据本公开的一些实施例的用于保护存储器装置的寄存器数据读取和写入的安全命令的泳道图。在一个实施例中,安全命令包括所有命令的子集。
在步骤602,主机装置读取A-MTC0的值。如上文所描述的,主机装置从存储器装置接收A-MTC0的最新值。在步骤602中,主机装置读取此当前值,之后发送提供或取消提供命令。
在步骤604,主机装置生成安全寄存器读取或写入命令并对所述安全寄存器读取或写入命令进行签名,以从存储器装置的寄存器读取或写入数据。在一个实施例中,安全读取或写入命令具有以下格式:
表7安全读取寄存器命令格式
表8
安全写入寄存器命令格式
如表7和8中所说明的,安全寄存器读取和写入命令共享字节零到八的相同格式。命令均开始于指定操作码(例如,9Bh)并且包含命令类型(例如,读取的0x38、写入的0x3C)、一字节配置字段、A-MTC0的四位值以及要分别从其读取或写入到其的两位寄存器地址。另外,表8中的写入寄存器命令包含要写入的任意数据的四个位。应注意,在所说明的实施例中,仅写入寄存器命令包含签名字段。如同先前命令,主机装置基于表8的字节为零到十二的数据生成此签名。在一个实施例中,使用HMAC-SHA1等HMAC函数、使用会话密钥作为签名密钥,生成签名。在一个实施例中,主机装置通过检索A-MTC1的值且使用共享根密钥生成会话密钥来生成其自身的会话密钥。在替代实施例中,主机装置可以从存储器装置直接读取会话密钥。
在步骤606,主机装置将已签名的读取或写入寄存器命令发给存储器装置。
在步骤608,存储器装置验证签名。在所说明的实施例中,存储器装置提取命令的非签名字节并且使用会话密钥生成其自身的签名。如果存储器装置生成的签名与命令中的签名匹配(例如,通过比较值),则存储器装置确认发送器的真实性。如表7中所说明的,可以针对寄存器读取略过步骤608。
在步骤610,存储器装置在认证命令之后进行到所标识寄存器的读取或写入。存储器装置以本领域中已知的任何方式读取或写入到寄存器。
接下来,在步骤612,存储器装置使MTC递增。在所说明的实施例中,此MTC对应于安全命令MTC且标记为A-MTC0。如所论述的,存储器装置针对成功完成的每个安全命令使A-MTC0的值递增。已在图3的步骤308中提供此步骤的细节,并且本文中不再重复。任选地,如果存储器装置仅经配置以针对寄存器写入等安全写入操作更新A-MTC0,则存储器装置可以不针对提供或取消提供命令使A-MTC0递增。
在步骤614,存储器装置生成响应数据包并对所述响应进行签名。下文提供响应数据包的示例格式:
表9
寄存器读取/写入响应格式
表9中的数据包与表3中的数据包共享字段,并且本文中不重复对那些共享字段(例如,签名、A-MTC0、ESR等)的描述。那些字段的格式化和生成以全文引用的方式并入本文中。
如图所示,除A-MTC0之外,响应数据包另外包含,可以与A-MTC0相同的方式检索的通电A-MTC1值。由于寄存器读取未签名,因此寄存器读取命令可以用于获得A-MTC1的当前值。然后,如上文所描述的,主机装置能够利用A-MTC1的所述值来生成会话密钥。因此,在一些实施例中,主机装置将读取寄存器值,然后发出安全命令(并对所述安全命令进行签名)。响应数据包返回在读取命令中请求的寄存器值,或要在写入命令中写入的数据的补零副本。两个命令包含受影响的寄存器地址。
在一些实施例中,上文所描述的所有字段是任选的或可以基于系统的需要进行修改。相比而言,在大多数实施例中,A-MTC0、A-MTC1和签名字段包括必选字段,但字段的位置可以变化。
在步骤616,存储器装置将已签名消息返回给主机。如所论述的,已签名消息至少包含A-MTC0的值、A-MTC1的值和签名。
在步骤618,主机提取A-MTC0和A-MTC1的值并在本地存储这些值。以此方式,存储器装置和主机均与A-MTC0和A-MTC1的值同步,如将论述的。这是因为存储器装置在每个安全命令期间持续地提供A-MTC0的最新值,因此使得主机能够管理同步。
图7是示出根据本公开的一些实施例的用于保护存储器装置的块锁定和解锁的安全命令的泳道图。
在步骤702,主机装置读取A-MTC0的值。如上文所描述的,主机装置从存储器装置接收A-MTC0的最新值。在步骤702中,主机装置读取此当前值,之后发送解锁命令。
在步骤704,生成已认证锁定或解锁命令并对所述已认证锁定或解锁命令进行签名。在一个实施例中,已认证锁定或解锁包含将命令标识为解锁命令的命令类型字段和A-MTC0的值。然后使用主机装置与存储器装置之间共享的会话密钥来对已认证锁定或解锁进行签名。前述操作类似于先前操作且本文中未详细地重复。在一些实施例中,已认证锁定或解锁命令可以包含以供块解锁的块地址。在其它实施例中,解锁命令可以适用于存储器装置中的所有块。
在步骤706,主机装置将已签名的已认证锁定或解锁命令发给存储器装置。
在步骤708,存储器装置验证签名。在所说明的实施例中,存储器装置提取命令的非签名字节并且使用会话密钥生成其自身的签名。如果存储器装置生成的签名与命令中的签名匹配(例如,通过比较值),则存储器装置确认发送器的真实性。
在步骤710中,存储器装置解锁存储器装置的一或多个块。如本文所使用的,块锁定是指保护整个存储器装置或块范围免于进行编程和擦除。然而,在传统的存储器装置中,不存在关于来自硬件层级的块锁定或解锁的约束。因此,在具有块锁定的现有存储器装置中,块锁定防止恶意用户进行编程和擦除,但那些相同用户可以不受惩罚地解锁块锁定,因此阻挠锁定块的目的。
在一些实施例中,存储器装置维持存储已认证锁定状态的专用寄存器。由于已认证锁定或解锁命令已签名,因此仅已认证用户可以更新此寄存器。在一些实施例中,当寄存器指示接收到已认证锁定命令且未接收到对应的已认证解锁命令时,存储器装置将阻止传统解锁操作。当接收到已认证解锁命令时,寄存器更新并且未来传统编程和擦除命令正常起作用。以此方式,具有根密钥存取权的制造商或其他实体可以在发出已认证锁定命令之前利用已认证解锁命令和传统编程/擦除命令对装置进行快速编程或擦除,从而防止未来未认证编程或擦除。由于传统编程/擦除操作不需要生成签名,因此与需要此签名的更安全操作相比,可以更快速地执行所述传统编程/擦除操作。
接下来,在步骤712,存储器装置使MTC递增。在所说明的实施例中,此MTC对应于安全命令MTC且标记为A-MTC0。如所论述的,存储器装置针对成功完成的每个安全命令使A-MTC0的值递增。已在图3的步骤308中提供此步骤的细节,并且本文中不再重复。任选地,如果存储器装置仅经配置以针对安全写入操作更新A-MTC0,则存储器装置可以不针对已认证锁定或解锁命令使A-MTC0递增。
在步骤714,存储器装置生成响应数据包并对所述响应进行签名。
在步骤716,存储器装置将已签名消息返回给主机。如先前关于其它命令所论述的,已签名消息至少包含A-MTC0、A-MTC1(如果已传输的话)的值和签名。
在步骤718,主机提取A-MTC0和A-MTC1的值(如果已传输的话)并在本地存储这些值。以此方式,存储器装置和主机均与A-MTC0和A-MTC1的值同步,如将论述的。这是因为存储器装置在每个安全命令期间持续地提供A-MTC0的最新值,因此使得主机能够管理同步。
除上文所描述的命令之外,存储器装置可以支持已签名事务缓存命令集。此集包含用以开始事务的命令和用以结束事务的第二命令,从而支持对下层存储器媒体的事务操作。
前述实施例提供相比于或非型闪存装置等现有存储器装置的各种改进和益处。作为初始益处,前述命令使得能够重复使用现有或非型驱动器。具体地,命令经设计以重复利用熟悉RPMC硬件定序,并且仅需要安全性专用中间件来支持额外命令。提供和取消提供命令允许以编程方式打开和关闭安全性命令。因此,可以在出厂设置中或在字段中预配或取消预配存储器装置。另外,通过完全支持传统读取操作,平台启动和读取性能得以保持。最后,当与已认证锁定或解锁命令组合时,通过密码保护来增强传统非易失性块锁定。具体地,锁定块可以仅通过已认证锁定或解锁命令来进行解锁,并且可以在锁定时仅通过使用已认证修改命令来进行修改。当使用不安全命令进行解锁时,传统软件可以仍对块进行擦除,但使用已认证锁定或解锁和修改命令允许更可自定义地控制安全性特征,尤其是当装置通过供应链时。
本公开包含执行方法并实施上述系统的各种装置,包含执行这些方法的数据处理系统,以及含有指令的计算机可读媒体,所述指令当在数据处理系统上执行时使得系统执行这些方法。
描述和图式是说明性的,且不应理解为限制性的。描述许多特定细节以提供透彻理解。然而,在某些情况下,不描述众所周知的或常规的细节以免混淆描述。本公开中对一个或一实施例的参考不一定参考同一实施例;并且此类参考意味着至少一个。
在本说明书中,对“一个实施例”或“一实施例”的引用意味着结合实施例描述的特定特征、结构或特性包含在本公开的至少一个实施例中。本说明书中各个位置的短语“在一个实施例中”的出现不一定完全是指相同实施例,也不是与其它实施例相互排斥的单独或替代实施例。此外,描述了可以由一些实施例而不是由其它实施例展示的各种特征。类似地,描述了各种要求,这些要求可能是对一些实施例的要求而不是对其它实施例的要求。
在此描述中,各种功能和操作可被描述为由软件代码执行或由软件代码引起以简化描述。然而,本领域的技术人员将认识到,这类表达的意思是所述功能由一或多个处理器执行代码所引起,所述处理器例如微处理器、专用集成电路(ASIC)、图形处理器和/或现场可编程门阵列(FPGA)。替代地或组合地,可使用专用电路系统(例如,逻辑电路系统)在有或没有软件指令的情况下实施功能和操作。可使用并无软件指令的固线式电路系统或结合软件指令实施实施例。因此,所述技术不限于硬件电路系统和软件的任何特定组合,也不限于由计算装置执行的指令的任何特定来源。
尽管一些实施例可以在功能全面的计算机和计算机系统中实施,但是各种实施例能够分布为各种形式的计算产品,并且能够不论实际上用于实现分布的机器或计算机可读媒体的特定类型如何都适用。
所公开的至少一些方面可至少部分体现于软件中。也就是说,可在计算装置或其它系统中响应于其处理器(例如,微处理器)执行存储器(例如,ROM、易失性RAM、非易失性存储器、高速缓冲存储器或远程存储装置)中包含的指令序列而进行所述技术。
经执行以实施实施例的例程可实施为操作系统、中间件、业务交付平台、软件开发工具包(SDK)组件、网络服务或其它被称为“计算机程序”的特定应用程序、组件、程序、对象、模块或指令序列的一部分。对这些例程的调用接口可作为应用程序编程接口(API)暴露于软件开发团体。计算机程序通常在各种时间在计算机中的各种存储器和存储装置中包括一或多个指令集,并且所述指令集在由计算机中的一或多个处理器读取和执行时使所述计算机执行对执行涉及各个方面的要素来说必要的操作。
机器可读媒体可以用于存储软件和数据,所述软件和数据当由计算装置执行时使所述装置执行各种方法。可执行软件和数据可以存储在包含例如ROM、易失性RAM、非易失性存储器和/或高速缓冲存储器的各处。此软件和/或数据的部分可存储在这些存储装置中的任一个中。另外,可从集中式服务器或对等网络获得数据和指令。可在不同时间且在不同通信会话中或相同通信会话中从不同集中式服务器和/或对等网络获得数据和指令的不同部分。可在执行应用程序之前获得全部数据和指令。替代地,可动态地、及时地在需要执行时获得数据和指令的部分。因此,并不要求数据及指令在特定时刻处全部在机器可读媒体上。
计算机可读媒体的实例包含但不限于可记录和不可记录类型的媒体,例如易失性和非易失性存储器装置、只读存储器(ROM)、随机存取存储器(RAM)、闪存存储器装置、固态驱动器存储媒体、可装卸式磁盘、磁盘存储媒体、光学存储媒体(例如,光盘只读存储器(CDROM)、数字通用光盘(DVD)等)等。计算机可读媒体可存储指令。
一般来说,有形或非暂时性机器可读媒体包含以机器(例如,计算机、移动装置、网络装置、个人数字助理、制造工具、具有一或多个处理器集的任何装置等)可存取的形式提供(例如,存储)信息的任何机制。
在各种实施例中,固线式电路系统可与软件和固件指令组合使用以实施所述技术。因此,所述技术既不限于硬件电路系统和软件的任何特定组合,也不限于由计算装置执行的指令的任何特定来源。
可使用广泛多种不同类型的计算装置来实施本文中阐述的各种实施例。如本文中所使用,“计算装置”的实例包含但不限于服务器、集中式计算平台、多个计算处理器和/或组件的系统、移动装置、用户终端、车辆、个人通信装置、可佩戴数字装置、电子自助服务终端、通用计算机、电子文档阅读器、平板计算机、手提式计算机、智能电话、数码相机、住宅家庭设备、电视或数字音乐播放器。计算装置的额外实例包含被称为“物联网”(IOT)的装置的一部分。这类“物”可与其拥有者或管理员偶然交互,所述拥有者或管理员可监控所述物或修改这些物上的设置。在一些情况下,这类拥有者或管理员扮演关于“物”装置的用户的角色。在一些实例中,用户的主要移动装置(例如,苹果iPhone(Apple iPhone))可以是关于用户佩戴的配对的“物”装置(例如,苹果手表(Apple watch))的管理员服务器。
在一些实施例中,计算装置可以是计算机或主机系统,其例如实施为台式计算机、手提式计算机、网络服务器、移动装置,或包含存储器和处理装置的另一计算装置。主机系统可以包含或耦合到存储器子系统,使得主机系统可以从存储器子系统读取数据或将数据写入所述存储器子系统。主机系统可以经由物理主机接口耦合到存储器子系统。一般来说,主机系统可以经由相同通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
在一些实施例中,计算装置是包含一或多个处理装置的系统。处理装置的实例可包含微控制器、中央处理单元(CPU)、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)、芯片上系统(SoC)或另一合适的处理器。
尽管图式中的一些以特定次序说明多个操作,但可将非次序相依性操作重新排序且可组合或分解其它操作。虽然具体提及了一些重新排序或其它分组,但是其它重新排序或分组对于本领域的普通技术人员来说是显而易见的,因此不提供详尽的替代方案列表。此外,应认识到,阶段可以硬件、固件、软件或其任何组合实施。
在前述说明书中,已参考其具体示例性实施例描述了本公开。将显而易见的是,可在不脱离所附权利要求书中阐述的更广精神和范围的情况下对其进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
Claims (20)
1.一种存储器装置,其包括:
控制器,所述控制器经配置以对主机装置发出的命令进行解码并执行所述命令;
密码引擎,所述密码引擎经配置以认证所述命令的子集,所述命令的所述子集各自包含数字签名;以及
第一单调计数器,所述第一单调计数器在执行所述命令的至少一些所述子集之后递增;
其中所述第一单调计数器的值用于生成所述数字签名。
2.根据权利要求1所述的存储器装置,其进一步包括第二单调计数器,当所述存储器装置通电时,所述第二单调计数器递增。
3.根据权利要求2所述的存储器装置,所述数字签名是通过使用会话密钥对有效负载执行HMAC运算而生成的。
4.根据权利要求3所述的存储器装置,所述会话密钥是通过对所述第二单调计数器的值执行HMAC运算而生成的。
5.根据权利要求1所述的存储器装置,所述控制器经配置以响应于所述主机装置发出的每个安全命令而返回所述第一单调计数器的所述值。
6.根据权利要求1所述的存储器装置,所述控制器经配置以响应于所述主机装置发出的将数据写入所述存储器装置的每个安全命令而返回所述第一单调计数器的所述值。
7.根据权利要求1所述的存储器装置,所述命令的所述子集包含选自以下各者组成的组的命令:提供命令、取消提供命令、已认证修改命令、写入寄存器命令、已认证锁定命令和已认证解锁命令。
8.一种方法,其包括:
在存储器装置处从主机装置接收安全命令,所述安全命令包括第一数字签名;
由所述存储器装置通过生成所述命令的第二数字签名并将所述第二数字签名与所述第一数字签名进行比较来认证所述安全命令;
由所述存储器装置在所述安全命令成功完成后使第一单调计数器递增;
由所述存储器装置生成对所述安全命令的响应,所述响应包含所述第一单调计数器的值;
由所述存储器装置对所述响应进行签名;以及
由所述存储器装置将所述响应返回给所述主机装置。
9.根据权利要求8所述的方法,其进一步包括使第二单调计数器递增,当所述存储器装置通电时,所述第二单调计数器递增。
10.根据权利要求9所述的方法,其进一步包括使用所述第二单调计数器的值来生成会话密钥。
11.根据权利要求10所述的方法,所述会话密钥是通过在所述存储器装置通电后对所述第二单调计数器的值执行HMAC运算而生成的。
12.根据权利要求10所述的方法,所述第二数字签名是通过使用所述会话密钥对有效负载执行HMAC运算而生成的。
13.根据权利要求8所述的方法,所述安全命令选自以下各者组成的组:提供命令、取消提供命令、已认证修改命令、写入寄存器命令、已认证锁定命令和已认证解锁命令。
14.根据权利要求12所述的方法,其中所述安全命令包括提供命令,并且所述方法进一步包括响应于执行所述提供命令而启用对安全命令的处理。
15.根据权利要求12所述的方法,其中所述安全命令包括取消提供命令,并且所述方法进一步包括响应于执行所述取消提供命令而停用对安全命令的处理。
16.根据权利要求12所述的方法,其中所述安全命令包括已认证修改命令,并且所述方法进一步包括响应于所述已认证修改命令而对所述存储器装置存储的数据进行编程或擦除所述数据。
17.根据权利要求12所述的方法,其中所述安全命令包括写入寄存器命令,并且所述方法进一步包括将数据写入所述存储器装置的寄存器。
18.根据权利要求12所述的方法,其中所述安全命令包括已认证锁定命令,并且所述方法进一步包括锁定所述存储器装置的一或多个块。
19.根据权利要求12所述的方法,其中所述安全命令包括已认证解锁命令,并且所述方法进一步包括解锁所述存储器装置的一或多个块。
20.根据权利要求8所述的方法,其进一步包括接收不安全命令和执行所述不安全命令,其中不响应于所述不安全命令而使所述第一单调计数器的值递增。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063052122P | 2020-07-15 | 2020-07-15 | |
US63/052,122 | 2020-07-15 | ||
US17/368,386 US20220021544A1 (en) | 2020-07-15 | 2021-07-06 | Secure Serial Peripheral Interface (SPI) Flash |
US17/368,386 | 2021-07-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113946881A true CN113946881A (zh) | 2022-01-18 |
Family
ID=79293012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110799866.3A Pending CN113946881A (zh) | 2020-07-15 | 2021-07-15 | 安全串行外围接口(spi)闪存 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220021544A1 (zh) |
CN (1) | CN113946881A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114398013A (zh) * | 2022-01-26 | 2022-04-26 | 东芯半导体股份有限公司 | Nand存储器安全代码生成模块和生成方法、以及nand存储器 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11809566B2 (en) * | 2020-10-02 | 2023-11-07 | Infineon Technologies LLC | Methods for fast, secure boot from nonvolatile memory device and corresponding systems and devices for the same |
TWI835296B (zh) * | 2022-09-16 | 2024-03-11 | 旺宏電子股份有限公司 | 記憶體操作方法及應用其之記憶體與主控裝置 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5347648A (en) * | 1990-06-29 | 1994-09-13 | Digital Equipment Corporation | Ensuring write ordering under writeback cache error conditions |
US6339824B1 (en) * | 1997-06-30 | 2002-01-15 | International Business Machines Corporation | Method and apparatus for providing public key security control for a cryptographic processor |
JP3979195B2 (ja) * | 2002-06-25 | 2007-09-19 | ソニー株式会社 | 情報記憶装置、およびメモリアクセス制御方法、並びにコンピュータ・プログラム |
JP4016741B2 (ja) * | 2002-06-25 | 2007-12-05 | ソニー株式会社 | 情報記憶装置、メモリアクセス制御システム、および方法、並びにコンピュータ・プログラム |
US7523111B2 (en) * | 2002-12-02 | 2009-04-21 | Silverbrook Research Pty Ltd | Labelling of secret information |
US7757301B2 (en) * | 2004-12-21 | 2010-07-13 | Seagate Technology Llc | Security hardened disc drive |
FI20051023L (fi) * | 2005-10-11 | 2007-04-12 | Meridea Financial Software Oy | Menetelmä, laitteet ja järjestely yhteyden autentikoimiseksi kannettavan laitteen avulla |
FR2908880B1 (fr) * | 2006-11-21 | 2009-01-16 | Centre Nat Rech Scient | Dispositif de detection d'interferences monolithique integre |
US8102710B2 (en) * | 2007-10-17 | 2012-01-24 | Micron Technology, Inc. | System and method for setting access and modification for synchronous serial interface NAND |
JP5371698B2 (ja) * | 2009-10-30 | 2013-12-18 | 株式会社エヌ・ティ・ティ・データ | 電子署名システム及び電子署名方法 |
CN103988185B (zh) * | 2011-12-20 | 2017-02-15 | 英特尔公司 | 用于安全的重放保护存储的系统、装置和方法 |
US9164841B2 (en) * | 2012-06-05 | 2015-10-20 | Cleversafe, Inc. | Resolution of a storage error in a dispersed storage network |
DE102012210327A1 (de) * | 2012-06-19 | 2013-12-19 | Bayerische Motoren Werke Aktiengesellschaft | Verfahren zum Übertragen von Nachrichten in einem Kommunikationssystem, insbesondere eines Fahrzeugs |
US10771448B2 (en) * | 2012-08-10 | 2020-09-08 | Cryptography Research, Inc. | Secure feature and key management in integrated circuits |
US9276812B1 (en) * | 2013-03-15 | 2016-03-01 | Amazon Technologies, Inc. | Automated testing of a direct network-to-network connection |
US9735968B2 (en) * | 2014-10-20 | 2017-08-15 | Microsoft Technology Licensing, Llc | Trust service for a client device |
US9934412B2 (en) * | 2015-06-23 | 2018-04-03 | Microsoft Technology Licensing, Llc | Implementing replay protected storage |
US10127405B2 (en) * | 2016-05-10 | 2018-11-13 | Qualcomm Incorporated | Techniques for determining an anti-replay counter for preventing replay attacks |
US10601217B2 (en) * | 2017-04-27 | 2020-03-24 | Qualcomm Incorporated | Methods for detecting an imminent power failure in time to protect local design state |
US10698816B2 (en) * | 2018-06-29 | 2020-06-30 | Micron Technology, Inc. | Secure logical-to-physical caching |
US10693968B2 (en) * | 2018-09-12 | 2020-06-23 | Pivotal Software, Inc. | Secure binding workflow |
US11487908B2 (en) * | 2019-08-16 | 2022-11-01 | Macronix International Co., Ltd. | Secure memory |
US11334446B2 (en) * | 2019-12-03 | 2022-05-17 | Kyndryl, Inc. | Backup system for an overlay network |
JP2022012905A (ja) * | 2020-07-02 | 2022-01-17 | キオクシア株式会社 | メモリシステム及び半導体装置の特性情報の管理方法 |
-
2021
- 2021-07-06 US US17/368,386 patent/US20220021544A1/en active Pending
- 2021-07-15 CN CN202110799866.3A patent/CN113946881A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114398013A (zh) * | 2022-01-26 | 2022-04-26 | 东芯半导体股份有限公司 | Nand存储器安全代码生成模块和生成方法、以及nand存储器 |
Also Published As
Publication number | Publication date |
---|---|
US20220021544A1 (en) | 2022-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102254256B1 (ko) | 보안형 메모리 칩의 롤백 방지 버전 업그레이드 | |
US10482275B2 (en) | Implementing access control by system-on-chip | |
US8914627B2 (en) | Method for generating a secured boot image including an update boot loader for a secured update of the version information | |
CN113946881A (zh) | 安全串行外围接口(spi)闪存 | |
US20160028728A1 (en) | Implementing access control by system-on-chip | |
TW201516733A (zh) | 用以核對uefi認證變量變化之系統及方法 | |
TWI738097B (zh) | 具有密碼學組件的記憶體裝置 | |
US10360370B2 (en) | Authenticated access to manageability hardware components | |
EP3284000A1 (en) | Secure software authentication and verification | |
US11683155B2 (en) | Validating data stored in memory using cryptographic hashes | |
WO2022093542A1 (en) | Endpoint authentication based on boot-time binding of multiple components | |
US20230132559A1 (en) | I/o command control apparatus and storage system | |
US20230273977A1 (en) | Managing ownership of an electronic device | |
WO2020000491A1 (zh) | 一种文件存储方法、装置及存储介质 | |
CN115391844A (zh) | 安全密钥存储装置 | |
US20240146525A1 (en) | Batch Transfer of Control of Memory Devices over Computer Networks | |
US20220231858A1 (en) | Control of Memory Devices over Computer Networks | |
CN113647050B (zh) | 基于块链的存储器命令验证 | |
CN113826071A (zh) | 空中更新确认 | |
US20220231838A1 (en) | Server System to Control Memory Devices over Computer Networks | |
CN115037492A (zh) | 基于在存储器装置中实施的安全特征的在线安全服务 | |
WO2024097428A1 (en) | Owner revocation emulation container | |
CN118737218A (zh) | 用于只读存储器的模拟方法和电路 | |
CN115037493A (zh) | 监测具有安全存储器装置的端点的完整性以用于身份认证 | |
CN115037496A (zh) | 经由在线固件商店的端点定制 |
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 |