CN109388974A - 具有安全读取的非易失性存储器装置 - Google Patents
具有安全读取的非易失性存储器装置 Download PDFInfo
- Publication number
- CN109388974A CN109388974A CN201810641796.7A CN201810641796A CN109388974A CN 109388974 A CN109388974 A CN 109388974A CN 201810641796 A CN201810641796 A CN 201810641796A CN 109388974 A CN109388974 A CN 109388974A
- Authority
- CN
- China
- Prior art keywords
- data
- host
- memory device
- memory
- abstract
- 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
Classifications
-
- 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
-
- 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/75—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 by inhibiting the analysis of circuitry or operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/22—Safety or protection circuits preventing unauthorised or accidental access to memory cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/005—Circuit means for protection against loss of information of semiconductor storage devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/24—Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/76—Masking faults in memories by using spares or by reconfiguring using address translation or modifications
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
公开了一种为对储存在非易失性存储器装置中的数据的请求者提供安全的技术。在一个方面中,只有对数据的摘要匹配对数据的期望的摘要,非易失性存储器装置才在主机接口上提供数据。非易失性存储器装置可以储存各种逻辑地址的对数据的期望的摘要。一旦在主机接口上接收到请求以读取逻辑地址的数据,非易失性存储器装置可以存取逻辑地址的数据,计算对存取的数据的摘要,并且将计算的摘要和期望的摘要进行比较。在一个方面中,只有计算的摘要匹配期望的摘要,非易失性存储器装置才在主机接口上提供存取的数据。非易失性存储器装置可以用于提供主机的安全启动。
Description
技术领域
本公开涉及用于非易失性储存体的技术。
背景技术
半导体存储器广泛用于各种电子装置中,诸如移动计算装置、移动电话、固态驱动器、数码相机、个人数字助理、医疗电子设备、服务器和非移动计算装置。半导体存储器可以包括非易失性存储器或易失性存储器。即使当非易失性存储器装置未连接到电源时,非易失性存储器装置也允许储存或保留信息。
非易失性存储器装置可以用于为主机提供数据。主机的示例包含但不限于智能电话、个人数字助理(PDA)、膝上型计算机、笔记本计算机、机顶盒、相机、或其它电子装置。在一些情况下,非易失性存储器装置可以嵌入在主机内。然而,在其它情况下,非易失性存储器装置可以不嵌入在主机内。例如,USB闪速驱动器典型地不嵌入在主机中。
可以希望,电子装置所使用的数据(诸如但不限于程序)被电子装置信任。作为一个示例,用于启动蜂窝电话的程序代码可能需要被蜂窝电话信任,以用于安全执行。确保信任由电子装置所使用的数据可能是非常困难的。诸如蜂窝电话、膝上型计算机等的许多电子装置允许软件应用载入其上,从而在确保由电子装置所使用的数据是被信任的方面出现挑战。
验证数据的完整性是指验证数据相对于数据的一些参考版本尚未被更改。例如,对于蜂窝电话可以存在启动数据的参考版本。对于黑客等,出于恶意的目的来更改或替换启动数据的参考版本是可能的。
验证数据的认证是指验证数据是其要旨趣(purport)的那个。例如,上述启动数据可以来源于“真的”源,诸如制造电话的实体。验证数据的认证可以用于确定数据是否来源于真的源。注意到,如果认证测试失败,则数据完整性检查可以或可以不通过。例如,软件的非认证副本可以准确匹配软件的参考版本。
如本文中使用的术语,“信任的数据”是指对其已经验证了完整性或认证的数据。
发明内容
第一实施例包含设备,其包括非易失性存储器;主机接口;以及控制电路,其与非易失性存储器和主机接口通信。控制电路配置为:响应于在主机接口上的对逻辑地址的数据的请求,存取储存在非易失性存储器中的数据;计算对存取的数据的摘要;并且只有计算的摘要匹配对逻辑地址的数据的期望的摘要,才在主机接口上提供存取的数据。
在第二实施例中,根据第一实施例,控制电路还配置为基于计算的摘要是否匹配对逻辑地址的数据的期望的摘要来验证存取的数据的完整性。控制电路还配置为如果存取的数据的完整性被验证,则在主机接口上提供存取的数据。
在第三实施例中,根据第一或第二实施例,控制电路还配置为基于计算的摘要是否匹配期望的摘要来验证存取的数据的认证。控制电路还配置为如果存取的数据的认证被验证,则在主机接口上提供存取的数据。
在第四实施例中,根据第一到第三实施例,非易失性存储器和控制电路驻留在存储器装置内。主机接口连接到去往存储器装置的主机连接。
在第五实施例中,根据第四实施例,控制电路还配置为从对逻辑地址的期望的摘要的列表存取对逻辑地址的数据的期望的摘要。列表储存在存储器装置上。
在第六实施例中,根据第四或第五实施例,将对逻辑地址的数据的期望的摘要经由主机连接从主机提供到存储器装置。控制电路还配置为基于存储器装置和信任的实体之间的共享的秘密来验证期望的摘要。
在第七实施例中,根据第四至第六实施例,设备还包括连接到主机连接的主机控制器。主机控制器配置为在主机连接之上请求数据。
在第八实施例中,根据第七实施例,主机控制器还配置为响应于主机启动序列,在主机连接之上请求数据。
一个实施例包含一种方法,其包括:在非易失性存储器装置的主机接口上从主机接收请求,以读取主机逻辑地址的数据;从非易失性存储器装置存取主机逻辑地址的数据;基于储存在非易失性存储器装置上的信息,确定主机逻辑地址的存取的数据是否被主机信任;以及只有在数据被主机信任的条件下,才在主机接口上将数据提供给主机。
一个实施例包含非易失性存储器装置,其包括非易失性存储器装置、以及用于与主机通信的主机接口构件,该主机外置于非易失性存储器装置。主机接口构件还用于从主机接收请求,以读取储存在主机逻辑地址的非易失性存储器中的数据。非易失性存储器装置还包括用于从非易失性存储器存取主机逻辑地址的数据的存储器接口构件。非易失性存储器装置还包括用于基于储存在非易失性存储器装置上的信息来确定存取的数据的完整性和认证的数据完整性和认证验证构件。非易失性存储器装置还包括用于只有在验证了存取的数据的完整性和认证时才将存取的数据传送到主机的数据传送控制构件。
附图说明
在不同附图中,类似编号的元件是指公共的组件。
图1A是嵌入在主机装置中的存储器装置的框图。
图1B是连接到主机装置中的存储器装置的框图。
图2是存储器装置的一个示例的框图。
图3是非易失性存储器裸芯的框图。
图4A是存储器装置的一个实施例的框图。
图4B描绘了逻辑地址和对逻辑地址的期望的摘要(digest)的对的示例性列表。
图5是操作非易失性储存体的过程的一个实施例的流程图。
图6是验证从非易失性存储器存取的数据的过程的一个实施例。
图7是给存储器装置安全地提供数据和对数据的期望的摘要的过程的一个实施例的流程图。
图8是向可以用于验证数据的存储器装置提供令牌(token)的服务器的图。
图9是存储器装置验证来自服务器的令牌的过程的一个实施例的流程图。
图10是向存储器装置提供令牌的服务器的图。
图11是存储器装置在主机上验证来自安全环境的令牌的过程的一个实施例的流程图。
图12是存储器装置向主机提供作为服务的安全启动的过程的一个实施例的流程图。
具体实施方式
提出了一种为对储存在非易失性存储器装置中的数据的请求者提供安全的技术。在一个实施例中,只有对数据的摘要匹配对数据的期望的摘要,非易失性存储器装置才在主机接口上提供数据。非易失性存储器装置可以储存各种逻辑地址的对数据的期望的摘要。一旦在主机接口上接收到请求以读取逻辑地址的数据,非易失性存储器装置可以存取逻辑地址的数据,计算对存取的数据的摘要,并且将计算的摘要和期望的摘要进行比较。在一个实施例中,只有计算的摘要匹配期望的摘要,非易失性存储器装置才在主机接口上提供存取的数据。
在一个实施例中,如果非易失性存储器装置验证了数据的完整性,则非易失性存储器装置在主机接口上仅提供数据。在一个实施例中,只有非易失性存储器装置验证了数据的认证,非易失性存储器装置才在主机接口上提供数据。在一个实施例中,只有非易失性存储器装置验证了数据被请求该数据的主机信任,非易失性存储器装置才在主机接口上提供数据。在一个实施例中,只有非易失性存储器装置验证了数据的完整性和认证两者,非易失性存储器装置才在主机接口上提供数据。因而,除非满足了诸如数据完整性和/或数据认证的条件(或多个条件),否则非易失性存储器装置可以阻止数据离开存储器装置。
主机开始操作并且进入对预期的操作进行读取的状态的过程称为“启动”或“启动过程”。非易失性存储器装置可以用于提供主机的安全启动。例如,当主机启动时,主机可以将请求发送到启动数据的非易失性存储器装置。启动数据可以包含代码以及参考信息(例如,字段、整数、浮点数、字符、字、指针等)。主机可以为启动数据指定逻辑地址(或各种逻辑地址)。非易失性存储器装置可以存取在(多个)逻辑地址的非易失性存储器装置上储存的数据。通过例如将对存取的数据的计算的摘要与对数据的期望的摘要进行匹配,非易失性存储器装置可以确定(多个)逻辑地址的存取的数据(例如,启动数据)是否被主机信任。在一个实施例中,只有非易失性存储器装置确定数据被主机信任,非易失性存储器装置才在主机接口上将数据(例如,启动数据)提供给主机。注意到,因为主机可以允许软件应用载入于其中,所以非法侵入(hack)非易失性存储器装置比非法侵入主机可能是难得多的。然而,非易失性存储器装置可以典型地不允许软件应用载入于其中。因而,非易失性存储器装置验证数据(例如,启动数据)可以比主机验证数据(例如,启动数据)安全得多。
图1A和1B是可以实践本文公开的实施例的两个替代环境。在图1A的环境中,存储器装置20嵌入在主机装置2内。在图1B的环境中,存储器装置20不嵌入在主机装置2内。
每个环境具有通过主机连接30而连接到主机2的存储器装置20。主机连接30表示允许信号在存储器控制器22与主机控制器6之间传送信息(例如,数据、命令等)的路径。连接30可以包含物理连接(例如,导电引线或迹线、光学波导等),或者是无线的。信号可以经由电压、电流、光学信号、电磁辐射等发送。注意到,存储器控制器22和主机控制器6可以各自在其上含有逻辑装置(logic),以控制在主机连接30之上的信号传送。这样的逻辑装置还可以生成要在主机连接30之上发送的信号,并且接收以及解码在主机连接30之上接收的信息。
图1A描绘了对嵌入在实现本文所描述的技术的实施例的主机装置2中的非易失性存储器装置20的一个实施例进行描绘的框图。在一个实施例中,存储器装置20是嵌入式多媒体卡(eMMC)存储器装置,并且存储器装置具有多媒体卡(MMC)接口。在一个实施例中,存储器装置20是固态驱动器(SSD)。主机装置2包含用于进行主机2的预期的功能的主机逻辑装置4。例如,主机2可以是智能电话、个人数字助理(PDA)、膝上型计算机、笔记本计算机、机顶盒、相机、或其它电子装置。主机逻辑装置4进行智能电话、PDA、膝上型计算机、笔记本计算机、机顶盒、相机等的功能。主机逻辑装置4可以包含应用处理器。ROM 8和/或非易失性存储器24可以储存在应用处理器上运行的软件应用。RAM 10可以用于在执行软件应用时临时储存数据和/或代码。RAM 10可以是DRAM、SRAM等。
主机逻辑装置4连接到主机控制器6,用于经由主机连接30而与存储器装置20通信。主机连接30可以遵守各种格式,包含但不限于多媒体卡(MMC)、通用闪存(UniversalFlash Storage)(UFS)、快速非易失性存储器(NVMe)和快速外围组件互连(PCIe)。主机控制器6和存储器控制器22两者可以含有用于在主机连接30之上通信的逻辑装置。因而,主机控制器6和存储器控制器22可以含有遵守例如MMC、UFS、NVMe或PCIe的逻辑装置。
主机控制器6还通过总线12与ROM 8和RAM 10通信。在一个实施例中,ROM 8储存开始主机2的启动过程的代码。当打开或重启主机2(或者以其它方式重启启动过程)时,主机控制器6访问ROM 8中的代码以开始启动过程。该代码将指导主机控制器6读取来自嵌入式存储器装置20的启动数据。在一个实施例中,代码将告知主机控制器启动数据储存在哪个逻辑地址和/或逻辑单元编号(LUN)处。可以包含代码以及参考信息(例如,字段、整数、浮点数、字符、字、指针等)的启动数据将由主机用于进行启动过程。在一个实施例中,存储器装置20为主机2提供安全启动。例如,在一些实施例中,信任的根(root)位于存储器装置上,而不是用于主机启动的信任的根位于主机(此处的主机是指外置于存储器装置20的逻辑装置)上。
存储器装置20包含与非易失性存储器24通信的存储器控制器22。注意到,图1A示出了非易失性存储器24的逻辑描绘。在一个实施例中,非易失性存储器24可以使用一个或多个存储器裸芯来实现。存储器控制器22和非易失性存储器24之间的接口32可以是任何适当的接口。在一个实施例中,非易失性存储器24是NAND存储器接口,并且接口32与开放式NAND闪速接口(ONFI)的版本兼容。然而,非易失性存储器24不限于NAND。在一个实施例中,非易失性存储器24是NOR。在一个实施例中,非易失性存储器24是电阻性随机存取存储器(ReRAM)。在一个实施例中,非易失性存储器24是磁性储存体(诸如硬盘驱动器)。非易失性存储器24可以是另一种类型的存储器。在一个实施例中,非易失性存储器包含非易失性存储器单元的二维阵列。在一个实施例中,非易失性存储器包含非易失性存储器单元的三维阵列。
在一个实施例中,主机具有主机逻辑地址空间。当主机2在主机连接30之上发送请求以将数据写入到非易失性存储器24或从其读取数据时,主机可以指定逻辑地址。存储器控制器22可以将逻辑地址转换成非易失性存储器24内的物理地址,并且将命令发送到非易失性存储器24,以将数据写入到该物理地址或从其读取数据。
在该示例中,非易失性存储器24在其中储存一个或多个加密密钥、期望的摘要、摘要计算算法、以及数据。在一个实施例中,一个或多个加密密钥在存储器装置20和信任的实体之间含有共享的秘密。在一个实施例中,信任的实体是除了主机2之外的一些实体,诸如安全服务器(注意到,在该上下文中的主机2排除了存储器装置20)。在一个实施例中,信任的实体是主机上的安全环境(SE)。信任的实体可以是从非易失性存储器24存取的信任的数据源。期望的摘要可以包含逻辑地址(例如,逻辑区块地址、逻辑单元编号等…)的列表和对储存在每个逻辑地址的非易失性存储器24中的数据的期望的摘要。摘要计算算法可以用于计算对储存在非易失性存储器24中的数据的摘要。在一个实施例中,摘要计算算法是加密散列(hash)函数(例如,消息摘要算法)。摘要计算算法的示例包含但不限于SHA-1、SHA-2、MD2、MD4、MD5、MD6。在本上下文中,SHA是指“安全散列算法”,并且MD是指“消息摘要”。
在一个实施例中,(多个)加密密钥和期望的摘要储存在存储器装置的安全部分中。储存(多个)加密密钥和期望的摘要,使得使用标准写入命令不可以修改或更改它们。(多个)加密密钥、期望的摘要和/或摘要计算算法可以储存在存储器装置24中的非易失性存储器单元中,但是可以储存在存储器装置20上的其它位置。在一个实施例中,(多个)加密密钥储存在存储器控制器22中的ROM中。在一个实施例中,摘要计算算法储存在存储器控制器22中的ROM中。数据典型地储存在非易失性存储器24中的非易失性存储器单元中。
在一个实施例中,当主机2发送请求以在逻辑地址处读取数据时,存储器控制器22将逻辑地址转换成物理地址,并且将命令发送给非易失性存储器24,以读取储存在该物理地址处的数据。非易失性存储器24可以将在该物理地址处的数据提供给存储器控制器22。如果非易失性存储器24储存期望的摘要,则非易失性存储器24还将对逻辑地址的期望的摘要发送给存储器控制器22。存储器控制器22可以计算对存取的数据的摘要,并且将计算的摘要与期望的摘要进行比较。在一个实施例中,只有计算的摘要和期望的摘要匹配,存储器控制器22才将在主机接口220上把逻辑地址的数据提供给主机控制器6。在一个实施例中,这导致只有信任的数据将从存储器装置20被提供给主机控制器6。在一个实施例中,这导致已经验证了完整性和认证两者的数据将从存储器装置20被提供给主机控制器6。因而,存储器装置20可以为主机2提供安全读取。
储存在非易失性存储器24中的数据可以是任何数据。作为一个示例,数据可以包含用于主机2的启动数据。当制造存储器装置时,(多个)加密密钥、期望的摘要、摘要计算算法和/或数据可以储存在存储器装置20上。然而,可以经由主机连接30在现场(field)提供(多个)加密密钥、期望的摘要、摘要计算算法和/或数据。例如,可以在现场作为为主机2提供软件更新的方式来提供数据和期望的摘要。例如,安全服务器可以将代码更新发送到主机2。主机可以指导存储器装置20,在非易失性存储器24中将代码更新储存为数据。在一个实施例中,服务器还安全地发送对要储存在存储器装置20上的代码更新的期望的摘要。在另一个实施例中,主机(例如,安全环境(SE))处的安全实体安全地发送对要储存在存储器装置20上的代码更新的期望的摘要。因而,响应于主机请求存储器装置20将代码更新提供给主机,存储器装置20稍后可以使用期望的摘要来验证代码更新的完整性和/或认证。以下讨论更多细节。
存储器装置20不需要嵌入在主机2内。图1B描绘了存储器装置20不嵌入在主机2内的环境。存储器装置20可以是例如USB闪速驱动器、记忆棒、安全数字(SD)存储器卡、UFS卡、MMC、紧凑型闪速(CF)储存装置。存储器装置20可以由缆线或无线连接连接到主机2。因而,主机连接30可以是无线的或者有线的接口。主机连接30可以是例如通用串行总线(USB)接口、蓝牙接口、小型计算机系统接口(SCSI)等。在一些情况下,存储器装置20的主机连接30可以通过例如端口(诸如作为USB端口)临时插入到主机2中。在一些情形下,主机2可以具有卡读取器,主机连接30可以插入/移除到该卡读取器中。
图2是存储器装置20的一个示例的框图。然而,图2中描绘的架构还可以用于实现其它类型的非易失性存储器装置。存储器装置20包含连接到一个或多个非易失性存储器裸芯108(其包括在图1A或图1B中描绘的非易失性存储器24)的控制器22。如本文所使用的,对于使用非易失性存储器的系统,控制器是管理储存在非易失性存储器上的数据并与主机通信的装置。控制器22可以具有除了本文所描述的专用功能之外的各种功能。例如,控制器22可以格式化非易失性存储器,以确保存储器正确地操作,映射出坏的存储器单元(储存体的物理单元),以及分配空闲的存储器单元以替换将来失效的单元。空闲存储器单元的一些部分可以用于将固件保持为操作控制器并且实现其它特征。在操作中,当主机需要从非易失性存储器读取数据或者将数据写入到非易失性存储器时,其将与控制器22通信。如果主机提供要读取/写入数据的逻辑地址,则控制器22将从主机接收的逻辑地址转换为物理闪速存储器中的物理地址。替代地,主机可以提供物理地址。控制器22还可以进行各种存储器管理功能,诸如但不限于磨损均衡(在存储器裸芯或者存储器裸芯的区块之间分布写入操作以避免磨损存储器的以其它方式将重复写入的特定区块)和垃圾收集(在区块满了之后,仅将数据的有效页移动到新的区块,所以可以擦除和重复使用满的区块)。
在一些实施例中,存储器装置20包含在控制器22和非易失性存储器裸芯108之间的单个信道;然而,本文所描述的主题不限于具有单个存储器信道。例如,在一些存储器系统架构中,取决于控制器的能力,2、4、8或更多个信道可以存在于控制器22与存储器裸芯108之间。在本文所描述的实施例的任一个中,即使在附图中示出了单个信道,但是多于一个信道可以存在于控制器22与存储器裸芯108之间。
如图2中所描绘的,控制器22包含与主机相接合的主机接口220、与一个或多个非易失性存储器裸芯108相接合的后端模块210、以及进行现在将描述的功能的各种其它模块。
图2中描绘的控制器22的组件可以采用以下形式:为与其它组件一起使用所设计的封装的功能性硬件单元(例如,电气电路)、由通常进行相关功能的特定功能的(微)处理器或处理电路所执行的程序代码(例如,软件或固件)、或者与更大的系统相接合的自包括的硬件或软件组件。例如,每个模块可以包含专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路的组合、门、或者任何其它类型的硬件、或其组合。替代地或附加地,每个模块可以包含储存在处理器可读装置(例如,存储器)中的软件,该软件用于编程处理器来进行本文所描述的功能。
再次参考控制器22的模块,缓冲器管理器/总线控制214管理随机存取存储器(RAM)216,并且控制控制器22的内部总线仲裁(arbitration)。只读存储器(ROM)218储存用于控制器的启动代码。尽管在图2中是出了为位于从控制器22分开的位置,在其它实施例中,RAM 216和ROM 218中的一个或两者可以位于控制器22内。在其它实施例中,RAM和ROM的部分可以既位于控制器22内又位于控制器的外部。另外,在一些实现方式中,控制器22、RAM216和ROM 218可以位于分开的半导体裸芯上。
主机接口220包含逻辑装置220A和物理层接口(PHY)220B。PHY 220B可以提供与主机或下一级储存控制器的电接口。逻辑装置220A可以配置为便于数据、控制信号和时序信号的传送。主机接口220的类型的选择可以取决于正在使用的存储器的类型。主机接口220的示例可以包含但不限于SATA、快速SAST、SAS、光纤通道、USB、M-PHY、UniPro、UFS、PCIe、MMC和NVMe。在一个实施例中,主机接口220提供适应于与控制器22的外置计算装置和存储器装置20的存储器裸芯108相通信的单个通信接口。
后端模块210包含错误校正码(ECC)引擎224,该ECC引擎224将从主机接收的数据字节编码,并且将从非易失性存储器裸芯108读取的数据字节解码和错误校正。命令定序器226产生要发送到非易失性存储器裸芯108的命令序列,诸如编程和擦除命令序列。RAID(独立裸芯的冗余式阵列)模块228管理RAID奇偶的生成以及失败数据的恢复。RAID奇偶可以用作对写入到非易失性存储器系统100中的数据的保护的附加级别。在一些情况下,RAID模块228可以是ECC引擎224的部分。注意到,RAID奇偶可以添加为如通用名所隐含的额外裸芯或多个裸芯,但是其也可以添加在现存的裸芯内,例如作为额外平面、或者额外区块、或者区块内的额外WL。存储器接口230将命令序列提供给非易失性存储器裸芯108并且从非易失性存储器裸芯108接收状态信息。闪速存储器控制层232控制后端模块210的总体操作。
图2中示出的存储器装置20的附加组件包含介质管理层238,其进行非易失性存储器裸芯108的存储器单元的磨损均衡。系统100还可以包含其它分立组件240,诸如外部电接口、外部RAM、电阻器、电容器、或可以与控制器22相接合的其它组件。在替代实施例中,物理层接口222、RAID模块228、介质管理层238和缓冲器管理/总线控制器214中的一个或多个是可选的组件,其不必在控制器22中。
闪速存储器转换层(FTL)或介质管理层(MML)238可以被集成为可以处理闪速存储器错误并与主机接合的闪速存储器管理的一部分。特别地,MML负责非易失性存储器管理的内部。特别地,MML 238可以包含在存储器装置固件中的算法,该算法将从主机写入转换成写入到存储器裸芯108的存储器。可能需要MML 238,因为:1)存储器可能具有有限的耐用性;2)存储器可能仅可以在多个页中写入;和/或3)除非存储器作为区块被擦除,否则存储器可能不被写入。MML 238理解存储器的这些潜在极限,这些潜在极限对主机可以是不可见的。因此,MML 238尝试将来自主机的写入转换成到闪速存储器126中的写入。如下所述,可以使用MML 238来识别和记录不稳定位。这种不稳定位的记录可以用于评估区块和/或字线(字线上的存储器单元)的健康状况。
控制器22还包含数据信任管理器236,其可以仅是硬件(例如,电路)或者在处理器上运行的软件。在一个实施例中,数据信任管理器236管理储存在非易失性存储器108中的数据中的至少一些的完整性和认证的验证。数据信任管理器236可以确定储存在非易失性存储器108中的数据是否被主机信任。数据信任管理器236可以进行以下相对于图6以及图5的步骤506-512、图9的步骤908和/或图10的步骤1006-1010和1014所描述的过程。
注意到,尽管将图2中的控制器22描述为控制闪速存储器,但是更普遍地,控制器22不限于控制闪速存储器。控制器22可以配置为管理ReRAM存储器、磁阻存储器(例如,MRAM)、相变存储器(例如,PCRAM)或其它类型的存储器中的操作。
图3是示例性存储器裸芯108的功能性框图。图3中描绘的组件是电路。在一个实施例中,每个存储器裸芯108包含存储器单元的单片三维存储器结构126(诸如,例如存储器单元的3D阵列)、控制电路110以及读取/写入电路128。在其它实施例中,可以使用存储器单元的二维阵列。存储器结构126通过字线经由行解码器124并且通过位线经由列解码器132是可寻址的。读取/写入电路128包含多个感测区块150,并且允许存储器单元的页并行读取或编程,感测区块150包含SB1、SB2、...、SBp(感测电路)。命令和数据在控制器22与存储器裸芯108之间经由信号线118传送。在一个实施例中,存储器裸芯108包含连接到线118的输入和/或输出(I/O)管脚的集合。
存储器结构126的一个实施例包含单片三维存储器结构,其中多个存储器级别形成在单个基板(诸如晶片)的上方(并且不在单个基板中),而不具有介于其中的基板。存储器结构可以包括任何类型的非易失性存储器,该非易失性存储器单片地形成在存储器单元的阵列的一个或多个物理级中,该一个或多个物理级别具有设置在硅基板上方的有源区。在一个实施例中,存储器结构126实现为三维NAND闪速存储器。其它实施例包含二维NAND闪速存储器、二维NOR闪速存储器、ReRAM交叉点存储器、磁阻存储器(例如,MRAM)、相变存储器(例如,PCRAM)、以及其它。
控制电路110与读取/写入电路128协作以在存储器结构126上进行存储器操作(例如,擦除、编程、读取和其它),并且包含状态机112、片上地址解码器114和功率控制模块116。状态机112提供了存储器操作的裸芯级别的控制。在一个实施例中,状态机112是可由软件编程的。在其它实施例中,状态机112不使用软件,并且完全以硬件(例如,电路)来实现。在一个实施例中,控制电路110包含用于储存诸如基底电压和其它参数的缺省值的寄存器、ROM熔丝和其它储存装置。片上地址解码器114向由解码器124和132所使用的硬件地址提供了由主机140或控制器22使用的地址之间的地址接口。功率控制模块116控制在存储器操作期间供应给字线和位线的功率和电压。其可以包含用于字线、选择晶体管、源极线和其它组件的驱动器。功率控制模块116可以包含用于创建电压的电荷泵。感测区块150包含位线驱动器。
控制电路110、状态机112、解码器114/124/132、功率控制模块116、感测区块150、读取/写入电路128、数据信任管理器236和控制器22中的任一个或任何组合可以被认为是进行本文所描述的功能的一个或多个控制电路。
可以配置存储器结构126中的多个存储器元件,以便它们串联连接或者以便每个元件单独地存取。通过非限制性的示例,NAND配置中的闪速存储器装置(NAND闪速存储器)典型地含有串联连接的存储器元件。NAND串是可以与存储器结构126一起使用的串联连接的存储器单元和选择栅极晶体管的集合的示例。可以配置NAND闪速存储器阵列,使得阵列由多个NAND串组成,多个NAND串中的NAND串由共享单个位线的多个存储器单元构成并且成组地存取。替代地,可以配置存储器元件,使得每个元件单独地可存取,例如,NOR存储器阵列。NAND和NOR存储器配置是示例性的,并且存储器单元可以以其它方式被配置。
存储器单元可以以诸如多个行和/或列的有序阵列的方式布置在单个存储器装置级别中。然而,存储器元件可以排列成非正则或非正交的配置,或者排列成不考虑阵列的结构。
在一个实施例中,布置三维存储器阵列,使得存储器单元占据多个平面或者多个存储器装置级别,从而以三维的方式(即在x、y和z方向上,其中z方向实质上垂直于基板的主表面,且x方向和y方向实质上平行于基板的主表面)形成结构。作为非限制性的示例,三维存储器结构可以垂直地布置成多个二维存储器装置级别的堆叠体。作为另一个非限制性的示例,三维存储器阵列可以被布置成多个垂直列(例如,实质上垂直于基板的主表面(即在y方向上)延伸的列),而每个列具有多个存储器单元。可以以二维配置(例如在x-z平面中)来布置垂直列,产生存储器单元的三维布置,存储器单元在多个垂直堆叠的存储器平面上。三维形式的存储器元件的其它配置还可以构成三维存储器阵列。
通过非限制性的示例,在三维NAND存储器阵列中,存储器元件可以耦合在一起,以形成横穿多个水平存储器装置级别的垂直NAND串。可以设想其它的三维配置,其中一些NAND串在单个存储器级别中含有存储器元件,而其它串含有跨越穿过多个存储器级别的存储器元件。三维存储器阵列还可以设计成NOR配置。
一个示例性存储器系统是包含具有电荷俘获材料的垂直NAND串的三维存储器结构。其它(2D和3D)存储器结构也可以与本文所描述的技术一起使用。例如,也可以使用浮置栅极存储器(例如,NAND型和NOR型闪速存储器)、ReRAM交叉点存储器、磁阻存储器(例如MRAM)和相变存储器(例如PCRAM)。
ReRAM交叉点存储器的一个示例包含在由X线和Y线(例如,字线和位线)存取的交叉点阵列中布置的可逆电阻开关元件。在另一个实施例中,存储器单元可以包含导电电桥式存储器元件。导电电桥式存储器元件也可以被称为可编程金属化单元。基于固体电解质内的离子的物理重新定位,导电电桥式存储器元件可以用作状态改变元件。在一些情况下,导电电桥式存储器元件可以包含两个固体金属电极(一个相对惰性的(例如钨)和另一个电化学活性的(例如银或铜)),在两个电极之间具有固体电解质的薄膜。随着温度增加,离子的迁移率也增加,使得导电电桥式存储器单元的编程阈值降低。因而,导电电桥式存储器元件在温度上可具有宽范围的编程阈值。
磁阻存储器(MRAM)由磁储存元件来储存数据。元件从由薄绝缘层分开的两个铁磁板形成,该铁磁板中的任一个可以保持磁化。两个板中的任一个是设置为特定极性的永磁体;另一个板的磁化可以改变,以匹配外部磁场的磁化以储存存储器。这种配置已知为自旋阀,并且是MRAM位的最简单的结构。存储器装置从这样的存储器单元的网格构建。在用于编程的一个实施例中,每个存储器单元位于彼此成直角布置的一对写入线(平行于单元、一个在单元上方而一个在单元下方)之间。当电流通过它们时,创建感应的磁场。
相变存储器(PCRAM)利用了硫属化物玻璃的独特行为。一个实施例通过简单地改变锗原子与激光脉冲(或来自另一源的光脉冲)的协调状态,使用GeTe-Sb2Te3超晶格来实现非热相变。因此,编程的剂量是激光脉冲。可以通过阻止存储器单元接收光来禁止存储器单元。注意到,在本文档中的“脉冲”使用不需要方形脉冲,但是包含声音、电流、电压光或其它波的(连续或非连续)的振动或突发。
本领域技术人员将认识到,本文所描述的技术不限于单个专用存储器结构,而是覆盖如本文所描述的并如本领域普通技术人员所理解的在本技术的精神和范围内的许多相关存储器结构。
图4A是存储器装置20的一个实施例的框图。如在图1A的示例中,存储器装置20可以嵌入在主机中。如在图1B的示例中,存储器装置20不需要嵌入在主机中。图4A描绘了数据信任管理器236的一个实施例的其它元件。数据信任管理器236具有摘要计算机402、摘要匹配逻辑装置404、数据信任管理器406和令牌验证逻辑装置408。
主机接口220可以接收请求来读取储存在非易失性存储器24中的数据。这些请求可以来自主机2(在图4A中未描绘)。读取请求可以指定逻辑地址,诸如逻辑区块地址(LBA)。逻辑地址可以在主机的地址空间中。后端模块210可以从非易失性存储器24存取逻辑地址的数据,并且将该数据提供给数据信任管理器236。
在一个实施例中,摘要计算机402配置为计算对从非易失性存储器24存取的数据的摘要。在一个实施例中,摘要计算机402存取储存在存储器装置上的摘要计算算法,以计算摘要。在一个实施例中,摘要计算算法是应用于认证的数据的散列功能。存储器装置20还可以储存加密密钥,其可以与摘要计算算法一起使用来计算摘要。加密密钥可以是与实体共享的秘密,该实体是验证的数据的信任的源。
摘要匹配逻辑装置404配置为确定计算的摘要是否匹配对逻辑地址(或者地址的集合)的数据的期望的摘要。在一个实施例中,摘要匹配逻辑装置404存取储存在存储器装置20上的期望的摘要的列表。图4B描绘了逻辑地址和对逻辑地址的期望的摘要的对的示例列表450。例如,列表450含有对LBA1的期望的摘要1、对LBA2的期望的摘要2。逻辑地址可以由除了区块地址之外的来指定。期望的摘要还可以指定一个范围的地址或地址的集合。在一个实施例中,存储器装置20将列表450储存在非易失性储存体中。列表450可以储存在存储器装置20(包括但不限于非易失性存储器24、存储器裸芯108)上的任何位置(以及临时地在RAM 216中)。当存储器装置20第一次配置时,列表450可以储存在存储器装置20上。列表450可以在现场更新(或者第一次储存)。图9示出了将含有列表450的令牌在现场提供给存储器装置20的一个实施例。作为数据信任管理器236使用列表450来验证数据的条件,令牌验证逻辑装置408配置为验证令牌的完整性和/或认证。
在一个实施例中,数据传送控制器406配置为基于是否对数据验证了完整性和/或认证来限制对数据的存取。数据传送控制器406可以根据计算的数据摘要是否匹配期望的数据摘要来限制存取。在一个实施例中,在对数据验证了完整性和/或认证的条件下,数据传送控制器406仅将数据提供给主机接口220。因而,在对数据验证了完整性和/或认证的条件下,主机接口220将仅把数据提供给主机。换言之,在一个实施例中,如果主机信任数据,则数据仅被提供给主机。注意到,在一个实施例中,主机接口220将外部接口提供给存储器装置20。因而,在一个实施例中,除非对其验证了完整性和/或认证,否则阻止数据离开存储器装置20。由于存储器装置20可能非常难以非法侵入,这提供了非常安全的技术解决方案。在一些实施例中,当主机可能允许时,存储器装置20不允许软件应用载入于其中。注意到,当主机对数据验证完整性和/或认证时,主机上的恶意软件可能阻止数据的适当验证。出于至少这个原因,存储器装置20可以比主机安全得多。
数据信任管理器236的组件可以采用以下形式:为与其它组件一起使用所设计的封装的功能性硬件单元(例如,电气电路)、由通常进行相关功能的特定功能的(微)处理器或处理电路所执行的程序代码(例如,软件或固件)、或者与更大的系统相接合的自包括的硬件或软件组件。例如,每个模块可以包含专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路的组合、门、或者任何其它类型的硬件、或其组合。替代地或附加地,每个模块可以包含储存在处理器可读装置(例如,存储器)中的软件,以编程处理器来进行本文所描述的功能。
图5是控制对非易失性储存体中的数据的过程500的一个实施例的流程图。过程500可以用于验证被主机请求的数据的完整性和/或认证。过程500可以在非易失性存储器装置20(诸如图1A、图1B、图2或图4中的这些)内进行。响应于来自主机控制器6的数据的请求,可以进行过程500。在进行过程500之前,某些信息可以已经储存在非易失性存储器装置20上。该信息可以包含对储存在非易失性存储器装置20上的数据的期望的摘要的列表。列表可以含有逻辑地址和对该逻辑地址的数据的期望的摘要的对。该信息还可以包括一个或多个加密密钥,以及摘要计算算法。因而,该信息可以用于验证数据的完整性和/或认证。
步骤502包含:非易失性存储器装置20在主机接口220上接收请求以读取一些主机逻辑地址的数据。在一个实施例中,在主机接口220上接收该请求。例如,该请求已经在主机连接30之上从例如主机控制器6发送。
步骤504包含:非易失性存储器装置20从非易失性存储器24存取主机逻辑地址的数据。在一个实施例中,控制器22将主机逻辑地址转换成在非易失性存储器24中的物理地址。在一个实施例中,后端模块210将命令发送给非易失性存储器24,以存取在物理地址处的数据。注意到,步骤504可以包含对数据进行错误校正。例如,ECC引擎224可以用于解码和错误校正从非易失性存储器24读取的数据。因而,如果由于例如存储器单元上的电荷损耗而翻转了数据中的一些位,则这样的翻转的位可以在步骤504中被校正。
步骤506包含:非易失性存储器装置20验证存取的数据。注意到,可以在已经对数据进行了错误校正之后进行步骤506。步骤506可以包含验证存取的数据的完整性和/或认证。在一个实施例中,步骤506验证数据完整性,但是不验证数据认证。在一个实施例中,步骤506验证数据认证,但是不验证数据完整性。在一个实施例中,步骤506验证数据完整性和数据认证两者。步骤506可以包含确定存取的数据是否被主机信任。在一个实施例中,存储器控制器22计算对存取的数据的摘要,并且将计算的摘要与期望的摘要进行比较。在一个实施例中,存储器控制器22使用加密散列功能和加密密钥来生成摘要。结合图6对步骤506的一个实施例的其它细节进行描述。
步骤508包含:响应于数据是否通过或失败步骤506的验证来确定采取什么步骤。在一个实施例中,如果步骤506对数据完整性和数据认证两者进行测试,则对于该验证通过,必须成功验证了数据完整性和数据认证两者。在一个实施例中,如果步骤506对数据完整性但非数据认证进行测试,则对于该验证通过,仅需要成功验证了数据完整性。在一个实施例中,如果步骤506对数据认证但非数据完整性进行测试,则对于该验证通过,仅需要成功验证了数据认证。如本文所限定的,如果成功验证了数据完整性和数据认证两者,则将该数据认为是被主机信任的。
如果该数据确定为已经验证(步骤508=通过),则在步骤510中,非易失性存储器装置20在主机接口220上提供数据。
然而,如果该数据未被验证(步骤508=失败),则非易失性存储器装置20在主机接口220上不提供数据。因而,非易失性存储器装置不允许数据离开非易失性存储器装置。此外,将不在主机连接30之上提供该数据。因此,如果数据未被验证,则主机2将不接收该数据。在一个实施例中,主机将不会被提供有主机不信任的数据。
在数据未被验证的事件中,步骤512包含各种选项。一个选项是将替代数据提供给主机2。例如,如果数据是启动数据,则非易失性存储器装置20可以提供已知为被主机信任的替代启动数据。另一个选项是将错误消息提供给主机,而不在主机接口220上提供任何数据。
图6是对数据验证完整性和/或认证的过程600的一个实施例。过程600可以在控制器22内进行。在一个实施例中,过程600由数据信任管理器236进行。过程600是过程500的步骤506的一个实施例。
步骤602包含:存储器装置20计算对从逻辑地址的非易失性存储器24存取的数据的摘要。在一个实施例中,数据信任管理器236使用摘要计算算法来计算摘要。在一个实施例中,摘要计算算法是加密散列(hash)功能(例如,消息摘要算法)。摘要计算算法的示例包含但不限于SHA-1、SHA-2、MD2、MD4、MD5、MD6。数据信任管理器236还可以使用秘密加密密钥。在一个实施例中,秘密加密密钥是具有认证的数据的信任的源的共享的秘密。例如,信任的源可以是托管存储器装置20的手机的制造商。在一个实施例中,计算的摘要是密钥散列消息认证码(HMAC)。
步骤604包含:存储器装置20存取对为逻辑地址所存取的数据的期望的摘要。在一个实施例中,数据信任管理器236存取LBA和相关联的期望的摘要的列表450。注意到,列表450可以安全地储存在存储器装置20上。
步骤606包含:确定计算的摘要是否匹配期望的摘要。如果存在匹配,则数据确定为已认证(步骤608)。如果不存在匹配,则数据确定为未认证(步骤610)。取决于过程600的结果,可以进行过程500的步骤510或者512。
图7是给存储器装置20安全地提供数据和对数据的期望的摘要的过程700的一个实施例的流程图。当制造存储器装置或者在现场时,可以进行过程700。如果在制造时进行,则配置工具可以用于将数据和期望的摘要提供给存储器装置。如果在现场进行,则主机侧(例如,SE)的安全服务器(例如,图8的服务器)或安全元件可以提供数据和期望的摘要。数据和期望的摘要可以通过主机进行传递,但是这不是必需的。在一个实施例中,在过程500之前进行过程700,使得存储器装置20具有数据和期望的摘要。可以颠倒过程700的步骤。在一个实施例中,期望的摘要将通过RPMB(重放受保护的存储器区块)协议进行传递。
步骤702包含:给存储器装置20提供对逻辑地址的期望的摘要。在一个实施例中,将诸如图4B中的列表提供给存储器装置。因而,对每个LBA可以存在一个期望的摘要。作为一个示例,每个LBA可以用于诸如4KB的一些固定大小的数据。然而,该数据不需要是一些固定大小的。在一个实施例中,在制造时将列表450储存到存储器装置20的安全区域中。在一个实施例中,在现场通过具有服务器的安全信道将列表450提供给存储器装置20。如在加密领域已知的,安全信道是阻止窃听和篡改的传送数据方式。
步骤704包含:给存储器装置20提供逻辑地址储存的数据。例如,主机可以向存储器装置20发送列表450上的每个LBA的数据的区块。注意到,甚至在列表被构造之前,主机可以将数据发送到存储器装置20。典型地,存储器装置20将在非易失性存储器24中储存数据。
图8是向存储器装置20提供令牌806的服务器802的图。服务器802具有加密密钥804和令牌806。在一个实施例中,令牌806包含列表,该列表包含逻辑地址和对逻辑地址的数据的期望的摘要的对。该列表可以相似于图4B中的列表450。在一个实施例中,令牌806是带符号的结构。存储器装置20还具有加密密钥804的副本。在一个实施例中,加密密钥804是重放受保护的存储器区块(RPMB)的密钥。注意到,加密密钥804可以是与可以用于计算对数据的摘要的加密密钥不同的加密密钥。
连接830表示服务器802与主机2之间的连接。连接830可以具有各种各样的实现方式,包含但不限于网络(例如,因特网)连接。注意到,为了传递令牌806,服务器802与主机2之间的连接830不需要是安全连接。注意到,在图8中,令牌806从服务器802传递到存储器装置20,主机2仅用作导管。注意到,主机2不具有加密密钥804的副本。因而,主机2不可能篡改或甚至观察列表450。
图9是存储器装置20验证令牌806的过程900的一个实施例的流程图,该令牌806含有逻辑地址和对逻辑地址的期望的摘要的对的列表。过程900将参考图8进行讨论。在步骤902中,存储器装置20提供有加密密钥804,以验证令牌806的完整性和/或认证。存储器装置20可以在任何时间提供加密密钥804。例如,当制造存储器装置20时,可以由配置工具将加密密钥804提供给存储器装置20。加密密钥804可以代替地由服务器802提供给存储器装置。
步骤904包含:服务器802签署具有加密密钥804的列表450,以生成令牌806。在一个实施例中,服务器802签署具有RPMB密钥的列表450。注意到,服务器802还可以创建期望的摘要/逻辑地址对的列表。为此,服务器802可以使用相同的摘要计算算法,该相同的摘要计算算法提供给存储器装置20以计算对即将(或者已经)储存在存储器装置20上的数据的摘要。还注意到,如果服务器802使用加密密钥来计算摘要,则这可以是与加密密钥不同的加密密钥。注意到,在一个实施例中,存储器装置20具有由服务器802用于计算摘要的加密密钥的副本。
注意到,服务器802还可以具有要储存在存储器装置20上的数据的副本。在分开的过程中,服务器802可以将数据提供给主机2,使得主机2可以指导存储器装置来在适当的(多个)逻辑地址处储存数据。在一个实施例中,服务器802提供有逻辑地址,在该逻辑地址处将把数据(或者已经把数据)储存在存储器装置20上。作为一个示例,如果数据是启动数据,则主机2中的ROM 8可以含有逻辑地址,在该逻辑地址处启动数据将从存储器装置20存取。这些逻辑地址可以以各种方式提供给服务器802。在一个实施例中,主机2给服务器802提供逻辑地址,其指导存储器装置在该逻辑地址处储存数据。例如,在主机指导存储器装置20在一些LBA处储存数据之后,主机可以将LBA提供给服务器802。
步骤906包含:服务器802将签署的令牌806提供给存储器装置20。步骤906可以包含:服务器802在连接830之上将签署的令牌806提供给主机2,以及主机2在主机连接30之上将签署的令牌提供给存储器装置20。注意到,主机2不具有加密密钥804。因此,主机不能够篡改列表450。另外,主机甚至不能够观察列表450的细节。
步骤908包含:存储器装置20验证签署的令牌806的完整性和认证。存储器装置20可以使用其的加密密钥804的版本来验证签署的令牌806的完整性和认证。假设令牌806的完整性和认证被认证,则存储器装置20可以保存列表450并且储存该列表以用于将来的使用。
过程900描述了信任的实体在安全信道之上将列表450提供给存储器装置20的一种技术。列表450可以由各种类型的安全信道提供给存储器装置20。
图10是向存储器装置20提供令牌806的主机2的图。在该实施例中,主机被分成安全环境(SE)1002和不安全环境1004。在一些实施例中,SE包含信任的执行环境(TEE)。可以实现全部或部分SE 1002的示例是安全集成电路、安全微处理器和安全微处理器内核,所有这些都集成有安全软件。SE 1002具有加密密钥804和令牌806。在一个实施例中,令牌806包含列表,该列表包含逻辑地址和对逻辑地址的数据的期望的摘要的对。该列表可以相似于图4B中的列表450。在一个实施例中,令牌806是带符号的结构。存储器装置20还具有加密密钥804的副本。在一个实施例中,加密密钥804是重放受保护的存储器区块(RPMB)的密钥。注意到,加密密钥804可以是与可以用于计算对数据的摘要的加密密钥不同的加密密钥。
图11是存储器装置20验证令牌806的过程1100的一个实施例的流程图,该令牌806含有逻辑地址和对逻辑地址的期望的摘要的对的列表。过程1100将参考图10进行讨论。在步骤1102中,存储器装置20提供有加密密钥804,以验证令牌806的完整性和/或认证。存储器装置20可以在任何时间提供加密密钥804。例如,当制造存储器装置20时,可以由配置工具将加密密钥804提供给存储器装置20。加密密钥804可以代替地由SE 1002提供给存储器装置。
步骤1104包含:SE 1002签署具有加密密钥804的列表450,以生成令牌806。在一个实施例中,SE 1002签署具有RPMB密钥的列表450。注意到,SE 1002还可以创建期望的摘要/逻辑地址对的列表。为此,SE 1002可以使用相同的摘要计算算法,该相同的摘要计算算法提供给存储器装置20以计算对即将(或者已经)储存在存储器装置20上的数据的摘要。还主要到,如果SE 1002使用加密密钥来计算摘要,则这可以是与加密密钥不同的加密密钥。还注意到,在一个实施例中,存储器装置20具有由SE 1002用于计算摘要的加密密钥的副本。
步骤1106包含:SE 1002将签署的令牌806提供给存储器装置20。注意到,不安全环境1004不具有加密密钥804。因此,不安全环境1004不能够篡改列表450。
步骤1008包含:存储器装置20验证签署的令牌806的完整性和认证。存储器装置20可以使用其的加密密钥804的版本来验证签署的令牌806的完整性和认证。假设令牌806的完整性和认证被认证,则存储器装置20可以保存列表450并且储存该列表以用于将来的使用。
过程1100描述了信任的实体在安全信道之上将列表450提供给存储器装置20的技术。列表450可以由各种类型的安全信道提供给存储器装置20。
图12是存储器装置20向主机2提供作为服务的安全启动的过程1200的一个实施例的流程图。在一个实施例中,过程1200由图1A中的主机和存储器装置实现。在一个实施例中,过程1200由图1B中的主机和存储器装置实现。在过程1200之前,可以进行过程700,以给存储器装置20提供启动数据和对启动数据的期望的摘要。可以进行过程900或过程1100,以给存储器装置20提供对启动数据的期望的摘要的列表450。注意到,存储器装置20可以在制造时期时或者在现场提供有启动数据和对启动数据的期望的摘要。
步骤1202包含:主机启动过程开始。当打开或重启主机2(或者以其它方式重启启动过程)时,主机控制器6可以存取ROM 8中的代码以开始启动过程。
步骤1204包含:主机控制器6从存储器装置20请求启动数据。在一个实施例中,来自ROM 8的代码指导主机控制器6来从存储器装置20读取启动数据。在一个实施例中,主机从一个或多个逻辑地址(例如,LBA)请求数据。
步骤1206包含:存储器装置20验证启动数据。可以对启动数据验证数据完整性和/或数据认证。在一个实施例中,存储器装置20验证主机信任启动数据。过程600可以用于验证启动数据。
步骤1208是启动数据是否被验证的条件。如果启动数据被成功验证,则存储器装置20在步骤1210中将启动数据提供给主机控制器6。步骤1210可以包含:数据信任管理器236在主机接口220上提供启动数据。启动数据可以在主机连接30之上传递到主机控制器6。
步骤1212包含:使用启动数据来启动主机。可以包含代码以及参考信息(例如,字段、整数、浮点数、字符、字、指针等)的启动数据可以由主机用于启动。
在启动数据未被成功验证(即,响应于步骤1208=否)的事件中进行步骤1214。步骤1214可以包含:存储器装置20将启动数据的替代版本提供给主机,该替代版本可以被存储器装置20确定为被验证。步骤1214可以包含:存储器装置20将错误消息的一些分类提供给主机,以指示可以不验证启动数据。
在一个实施例中,主机接口构件包括主机接口220、逻辑222A、PHY220B、封装功能硬件单元、由(微)处理器或处理电路可执行的程序代码(例如,软件或固件)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路的组合、门、或任何其它类型的硬件或其组合中的一个或多个。
在一个实施例中,存储器接口构件包含后端模块210、定序器226、存储器接口230、闪速控制层232、ECC 224、RAID 228、线118、状态机112、解码器114、124、132、功率控制116、读取/写入电路128、封装功能硬件单元、由(微)处理器或处理电路可执行的程序代码(例如,软件或固件)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路的组合、门、或任何其它类型的硬件或其组合中的一个或多个。
在一个实施例中,数据完整性和认证验证构件包括数据信任管理器236、摘要计算器402、摘要匹配逻辑装置、数据传送控制器406、令牌验证逻辑装置、封装功能硬件单元、由(微)处理器或处理电路可执行的程序代码(例如,软件或固件)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路的组合、门、或任何其它类型的硬件或其组合中的一个或多个。
在一个实施例中,数据传送控制构件包括数据传送控制器406、封装功能硬件单元、由(微)处理器或处理电路可执行的程序代码(例如,软件或固件)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路的组合、门、或任何其它类型的硬件或其组合中的一个或多个。
在一个实施例中,非易失性存储器装置包含非易失性存储器、主机接口构件、存储器接口构件、数据完整性和认证验证构件,并且数据传送控制构件还包含:用于初始化主机启动序列的主机启动构件;以及用于响应于初始化的主机启动序列将主机启动数据传输到主机的请求的启动数据请求构件。
在一个实施例中,主机启动构件包括主机逻辑装置4、主机控制器6、ROM 8、封装功能硬件单元、由(微)处理器或处理电路可执行的程序代码(例如,软件或固件)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路的组合、门、或任何其它类型的硬件或其组合中的一个或多个。
在一个实施例中,启动数据请求构件包括主机逻辑装置4、主机控制器6、ROM 8、封装功能硬件单元、由(微)处理器或处理电路可执行的程序代码(例如,软件或固件)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路的组合、门、或任何其它类型的硬件或其组合中的一个或多个。
为了本文档的目的,在说明书中对“实施例”、“一个实施例”、“一些实施例”或“另一个实施例”的引用可以用于描述不同的实施例或相同的实施例。
为了本文档的目的,连接可以是直接连接或间接连接(例如,经由一个或多个其它零件)。在一些情况下,当元件被称为连接到或耦合到另一个元件时,元件可以直接连接到其它元件,或者经由中间元件间接连接到其它元件。当一个元件被称为直接连接到另一个元件时,则元件和另一个元件之间不存在中间元件。如果两个装置直接或间接地连接,使得它们可以在它们之间通信电信号,则两个装置“进行通信”。
为了本文档的目的,术语“基于”可以解读为“至少部分基于”。
为了本文档的目的,在没有附加情景的情况下,使用诸如“第一”对象、“第二”对象和“第三”对象的数值术语可以不隐含对象的排序,而是可以代替地出于识别不同的对象的识别目的。
为了本文档的目的,术语对象的“集合”可以是指一个或多个对象的“集合”。
出于图示和描述的目的已经呈现了前述的详细描述。其不意图穷举或限制所公开的精确形式。鉴于以上教导,可以进行诸多修改和变体。选择所描述的实施例,以便最佳地解释所提出的技术的原理及其应用,以由此使得本领域其它技术人员能够在各种实施例中且以如适合于预期的特定用途的各种修改中最佳地利用所提出的技术。本发明的范围意图由所附权利要求限定。
Claims (10)
1.一种设备,包括:
非易失性存储器(24);
主机接口(220);以及
控制电路(22、110、124、128、132),其与所述非易失性存储器和所述主机接口通信,所述控制电路配置为:
响应于在所述主机接口上的对逻辑地址的数据的请求,存取储存在所述非易失性存储器中的数据;
计算对所述存取的数据的摘要;并且
只有所述计算的摘要匹配对所述逻辑地址的数据的期望的摘要,才在所述主机接口上提供所述存取的数据。
2.如权利要求1所述的设备,其中所述控制电路还配置为:
基于所述计算的摘要是否匹配所述期望的摘要,验证所述存取的数据的完整性;并且
只有所述存取的数据的完整性被验证,才在所述主机接口上提供所述存取的数据。
3.如权利要求1或2所述的设备,其中所述控制电路还配置为:
基于所述计算的摘要是否匹配所述期望的摘要,验证所述存取的数据的认证;并且
只有所述存取的数据的认证被验证,才在所述主机接口上提供所述存取的数据。
4.如权利要求1至2中任一个所述的设备,其中:
所述非易失性存储器和所述控制电路驻留在存储器装置(20)内;并且
所述主机接口连接到去往所述存储器装置的主机连接。
5.如权利要求4所述的设备,其中:
所述控制电路配置为从对逻辑地址的期望的摘要的列表存取对所述逻辑地址的数据的所述期望的摘要;并且
所述列表储存在所述存储器装置上。
6.如权利要求4所述的设备,其中:
将对所述逻辑地址的数据的所述期望的摘要经由所述主机连接从主机提供到所述存储器装置;并且
所述控制电路配置为基于所述存储器装置与信任的实体之间的共享的秘密来验证所述期望的摘要。
7.如权利要求4所述的设备,还包括连接到所述主机连接的主机控制器(6)并且配置为在所述主机连接之上请求所述数据。
8.如权利要求7所述的设备,其中所述主机控制器配置为响应于主机启动序列,在所述主机连接之上请求所述数据。
9.一种方法,包括:
在非易失性存储器装置(20)的主机接口(220)上从所述主机(2)接收请求,以读取主机逻辑地址的数据;
从所述非易失性存储器装置(20)存取所述主机逻辑地址的数据;
基于储存在所述非易失性存储器装置上的信息,确定所述主机逻辑地址的所述存取的数据是否被所述主机信任;以及
只有在所述数据被所述主机信任的条件下,在所述主机接口(220)上将所述数据提供给所述主机。
10.如权利要求9所述的方法,其中确定所述存取的数据是否被所述主机信任包括:
从所述非易失性存储器装置上的储存体(24、216)存取对所述主机逻辑地址的数据的期望的摘要;
计算对所述主机逻辑地址的存取的数据的摘要;以及
基于所述期望的摘要是否匹配所述计算的摘要,确定所述存取的数据是否被所述主机信任。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/676,708 | 2017-08-14 | ||
US15/676,708 US10521617B2 (en) | 2017-08-14 | 2017-08-14 | Non-volatile memory device with secure read |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109388974A true CN109388974A (zh) | 2019-02-26 |
Family
ID=65084625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810641796.7A Pending CN109388974A (zh) | 2017-08-14 | 2018-06-21 | 具有安全读取的非易失性存储器装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10521617B2 (zh) |
CN (1) | CN109388974A (zh) |
DE (1) | DE102018114266A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10430117B2 (en) * | 2017-10-23 | 2019-10-01 | Micron Technology, Inc. | Host accelerated operations in managed NAND devices |
US11789874B2 (en) | 2018-01-09 | 2023-10-17 | Qualcomm Incorporated | Method, apparatus, and system for storing memory encryption realm key IDs |
US10936722B2 (en) * | 2018-04-18 | 2021-03-02 | Nuvoton Technology Corporation | Binding of TPM and root device |
JP6824929B2 (ja) * | 2018-06-07 | 2021-02-03 | 株式会社日立製作所 | 記憶制御システム及び記憶制御方法 |
US11271720B2 (en) * | 2019-03-25 | 2022-03-08 | Micron Technology, Inc. | Validating data stored in memory using cryptographic hashes |
FR3100632B1 (fr) * | 2019-09-06 | 2022-01-28 | Stmicroelectronics Grand Ouest Sas | Système électronique |
EP3839750A1 (en) * | 2019-12-18 | 2021-06-23 | Thales Dis France Sa | Method for secure executing of a security related process |
US11861012B2 (en) * | 2021-07-01 | 2024-01-02 | Macronix International Co., Ltd. | Memory device having safety boot capability |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1538284A (zh) * | 2003-04-14 | 2004-10-20 | ��ʽ���������Ƽ� | 存储设备 |
US20040250036A1 (en) * | 2003-06-06 | 2004-12-09 | Willman Bryan Mark | Trusted data store for use in connection with trusted computer operating system |
US20060242513A1 (en) * | 2000-10-19 | 2006-10-26 | Loaiza Juan R | Enhancements to data integrity verification mechanism |
US20070226412A1 (en) * | 2006-02-16 | 2007-09-27 | Hitachi Global Storage Technologies Netherlands B. V. | Storage device, controller for storage device, and storage device control method |
US20080082819A1 (en) * | 2006-09-28 | 2008-04-03 | Jack Brizek | Authenticating data returned from non-volatile memory commands |
US20130205137A1 (en) * | 2009-08-31 | 2013-08-08 | Apple Inc. | Zero-knowledge based authentication method, system, and apparatus |
CN103578555A (zh) * | 2012-07-19 | 2014-02-12 | 三星电子株式会社 | 非易失性存储器、其的读取方法和包括其的存储系统 |
CN106575271A (zh) * | 2014-06-23 | 2017-04-19 | 谷歌公司 | 管理存储设备 |
CN107015920A (zh) * | 2015-12-30 | 2017-08-04 | 三星电子株式会社 | 存储设备和存储设备的操作方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060064759A1 (en) * | 2004-09-22 | 2006-03-23 | Wildlife Acoustics, Inc. | Method and apparatus for controlling access to downloadable content |
US8291226B2 (en) * | 2006-02-10 | 2012-10-16 | Qualcomm Incorporated | Method and apparatus for securely booting from an external storage device |
US8108692B1 (en) | 2006-06-27 | 2012-01-31 | Siliconsystems, Inc. | Solid-state storage subsystem security solution |
US7900032B2 (en) | 2006-10-06 | 2011-03-01 | Broadcom Corporation | Method and system for NAND flash support in autonomously loaded secure reprogrammable system |
US8254568B2 (en) | 2007-01-07 | 2012-08-28 | Apple Inc. | Secure booting a computing device |
US9058491B1 (en) | 2009-03-26 | 2015-06-16 | Micron Technology, Inc. | Enabling a secure boot from non-volatile memory |
US8356184B1 (en) | 2009-06-25 | 2013-01-15 | Western Digital Technologies, Inc. | Data storage device comprising a secure processor for maintaining plaintext access to an LBA table |
US8745365B2 (en) | 2009-08-06 | 2014-06-03 | Imation Corp. | Method and system for secure booting a computer by booting a first operating system from a secure peripheral device and launching a second operating system stored a secure area in the secure peripheral device on the first operating system |
US9223511B2 (en) * | 2011-04-08 | 2015-12-29 | Micron Technology, Inc. | Data deduplication |
KR20130064518A (ko) * | 2011-12-08 | 2013-06-18 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
US9183390B2 (en) * | 2011-12-22 | 2015-11-10 | Intel Corporation | Systems and methods for providing anti-malware protection on storage devices |
JP6017392B2 (ja) * | 2013-09-27 | 2016-11-02 | 株式会社東芝 | 情報処理装置、ホストデバイス、及びシステム |
US20160314288A1 (en) | 2015-04-22 | 2016-10-27 | Qualcomm Incorporated | Method and apparatus for write restricted storage |
US10025600B2 (en) | 2015-10-02 | 2018-07-17 | Google Llc | NAND-based verified boot |
US10254972B2 (en) * | 2016-09-13 | 2019-04-09 | Toshiba Memory Corporation | Storage device and storage system |
-
2017
- 2017-08-14 US US15/676,708 patent/US10521617B2/en active Active
-
2018
- 2018-06-14 DE DE102018114266.8A patent/DE102018114266A1/de active Pending
- 2018-06-21 CN CN201810641796.7A patent/CN109388974A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060242513A1 (en) * | 2000-10-19 | 2006-10-26 | Loaiza Juan R | Enhancements to data integrity verification mechanism |
CN1538284A (zh) * | 2003-04-14 | 2004-10-20 | ��ʽ���������Ƽ� | 存储设备 |
US20040250036A1 (en) * | 2003-06-06 | 2004-12-09 | Willman Bryan Mark | Trusted data store for use in connection with trusted computer operating system |
US20070226412A1 (en) * | 2006-02-16 | 2007-09-27 | Hitachi Global Storage Technologies Netherlands B. V. | Storage device, controller for storage device, and storage device control method |
US20080082819A1 (en) * | 2006-09-28 | 2008-04-03 | Jack Brizek | Authenticating data returned from non-volatile memory commands |
US20130205137A1 (en) * | 2009-08-31 | 2013-08-08 | Apple Inc. | Zero-knowledge based authentication method, system, and apparatus |
CN103578555A (zh) * | 2012-07-19 | 2014-02-12 | 三星电子株式会社 | 非易失性存储器、其的读取方法和包括其的存储系统 |
CN106575271A (zh) * | 2014-06-23 | 2017-04-19 | 谷歌公司 | 管理存储设备 |
CN107015920A (zh) * | 2015-12-30 | 2017-08-04 | 三星电子株式会社 | 存储设备和存储设备的操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US10521617B2 (en) | 2019-12-31 |
US20190050602A1 (en) | 2019-02-14 |
DE102018114266A1 (de) | 2019-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109388974A (zh) | 具有安全读取的非易失性存储器装置 | |
US11088845B2 (en) | Non-volatile memory with replay protected memory block having dual key | |
CN110023939A (zh) | 用于存储装置中基于范围的检查点的方法和设备 | |
CN110176267A (zh) | 存储器系统及其操作方法 | |
TWI738097B (zh) | 具有密碼學組件的記憶體裝置 | |
US11960632B2 (en) | Data attestation in memory | |
US11683155B2 (en) | Validating data stored in memory using cryptographic hashes | |
CN113015975A (zh) | 安全逻辑到物理高速缓存 | |
CN115576483A (zh) | 可信计算基础的组件之间的安全身份链接 | |
US11669643B2 (en) | Block chain based validation of memory commands | |
US11228443B2 (en) | Using memory as a block in a block chain | |
KR20210134053A (ko) | 오버-디-에어 업데이트 유효성 확인 방법 | |
KR20210132741A (ko) | 중개 디바이스와 네트워크 간의 보안 통신 | |
CN114647374A (zh) | 执行处理代码的存储装置和存储装置的操作方法 | |
US20220138114A1 (en) | Using memory as a block in a block chain | |
US20230350980A1 (en) | Management of Storage Devices Utilizing Non-Fungible Tokens | |
EP4152686A1 (en) | Storage device, method for generating key in storage device, and method for performing certification of storage device | |
US20230131062A1 (en) | Storage device and operating method thereof |
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 |