一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

使用加密散列验证存储在存储器中的数据的制作方法

2021-12-08 02:13:00 来源:中国专利 TAG:
1.本公开大体上涉及半导体存储器及方法,且更特定来,说涉及使用加密散列验证存储在存储器中的数据。
背景技术
::2.存储器装置通常作为内部半导体集成电路及/或外部可卸除装置提供于计算机或其它电子装置中。存在许多不同类型的存储器,其包含易失性及非易失性存储器。易失性存储器可能需要电力来维持其数据,并且包含随机存取存储器(ram)、动态随机存取存储器(dram)及同步动态随机存取存储器(sdram)等。非易失性存储器可通过在未供电时留存所存储数据来提供持久数据,并且可包含nand快闪存储器、nor快闪存储器、只读存储器(rom)及电阻可变存储器(例如相变随机存取存储器(pcram))、电阻式随机存取存储器(rram)及磁性随机存取存储器(mram)等。3.存储器装置可组合在一起以形成固态驱动器(ssd)、嵌入式多媒体卡(e.mmc)及/或通用快闪存储(ufs)装置。ssd、e.mmc及/或ufs装置可包含非易失性存储器(例如,nand快闪存储器及/或nor快闪存储器),及/或可包含易失性存储器(例如,dram及/或sdram)等各种其它类型的非易失性及易失性存储器。非易失性存储器可用于广泛的电子应用,例如个人计算机、便携式记忆棒、数码相机、蜂窝电话、便携式音乐播放器,例如mp3播放器、电影播放器等。4.例如,快闪存储器装置可包含以电荷存储结构(例如浮动栅极)存储数据的存储器单元。快闪存储器装置通常使用允许高存储器密度、高可靠性及低功耗的单晶体管存储器单元。电阻可变存储器装置可包含电阻式存储器单元,其可基于存储元件(例如,具有可变电阻的电阻式存储器元件)的电阻状态来存储数据。5.存储器单元可布置成阵列,并且阵列架构中的存储器单元可编程为目标(例如,期望)状态。例如,可将电荷放置在快闪存储器单元的电荷存储结构(例如,浮动栅极)上或从其移除电荷,以将所述单元编程到特定数据状态。所述单元上的电荷存储结构上的所存储电荷可指示所述单元的阈值电压(vt)。快闪存储器单元的状态可通过感测所述单元的电荷存储结构上的所存储电荷(例如,vt)来确定。6.许多威胁可影响存储在存储器装置的存储器单元中的数据。举例来说,此类威胁可包含存储器装置中发生的故障及/或来自黑客或其它恶意用户的威胁。此类威胁可造成重大财务损失,及/或可能造成重大安全及/或安保问题。附图说明7.图1说明根据本公开的实施例的具有数个物理块的存储器阵列的一部分的图。8.图2是根据本公开的实施例的包含主机及呈存储器装置的形式的计算系统的框图。9.图3a说明根据本公开的实施例的用于定义安全存储器阵列的寄存器的实例。10.图3b说明包含根据本公开的实施例定义的安全存储器阵列的存储器阵列的一部分的图。11.图4说明根据本公开的实施例的用于将存储在存储器阵列中的数据划分为多个区段以及验证及修复存储在每一相应区段中的数据的寄存器的实例。12.图5说明根据本公开的实施例的使用加密散列验证存储在存储器中的数据区段的方法。13.图6是根据本公开的实施例的包含主机及存储器装置的实例系统的框图。14.图7是根据本公开的实施例确定数个参数的实例过程的框图。15.图8是根据本公开的实施例确定数个参数的实例过程的框图。16.图9是根据本公开的实施例的验证证书的实例过程的框图。17.图10是根据本公开的实施例的验证签名的实例过程的框图。18.图11是根据本公开的实施例的实例存储器装置的框图。具体实施方式19.本公开包含用于使用加密散列来验证存储在存储器中的数据的设备、方法及系统。一实施例包含存储器及电路系统,所述电路系统经配置以:将所述存储器划分为多个区段,其中每一相应区段与不同加密散列相关联;在所述存储器的供电期间,使用与所述相应区段相关联的所述加密散列来验证存储在第一数目个所述多个区段中的每一相应者中的数据;及在所述存储器的所述供电之后,使用与所述相应区段相关联的所述加密散列来验证存储在第二数目个所述多个区段中的数据、存储在第二数目个所述多个区段中的每一相应者中的数据。20.许多威胁可影响存储在存储器中(例如,在存储器装置中)的数据。举例来说,故障可发生在存储器的阵列及/或电路系统中,其可导致数据中发生错误。作为额外实例,黑客或其它恶意用户可能试图执行活动以出于恶意目的对数据进行未经授权的改变。例如,恶意用户可能试图更改存储在存储器中的数据,以便不利地影响使用所述存储器执行的商业交易(例如,转移其流量)(例如,通过跳过验证支付的代码来错误地指示已为所提供的服务进行支付),在存储器上执行的软件许可证检查(例如,通过跳过验证许可证的代码来错误指示存储器的软件已获得正确许可),或使用存储器执行的自动控制(例如,跳过零件真实性检查、环境检查或出故障报警检查),以及其它类型的黑客活动。此类黑客活动(例如,攻击)可造成重大财务损失,及/或可带来重大安全及/或安保问题。21.因而,为确保安全的存储器系统,验证(例如,认证及/或证明)存储在存储器中的数据是真实的(例如,与最初编程的相同)并且尚未被黑客活动或其它未经授权及/或非预期改变所更改是重要的。例如,可在存储器的供电期间(例如,在存储器的上电及/或通电期间,其在本文可称为“启动”)执行此数据验证。然而,数据验证的性能可增加为存储器供电所需的时间量(例如,可增加启动时间的时延),其可对存储器系统的用户体验产生不利影响。22.然而,本公开的实施例可有效地验证存储在存储器中的数据,且因此在存储器的供电期间确保安全的存储器系统,同时减少为存储器供电所需的时间量(例如,减少存储器启动时间的延迟)。例如,本公开的实施例可将存储器划分为区段,并且在存储器的供电(例如,启动)期间使用与所述区段中的每一相应者相关联的不同加密散列验证存储在区段的仅一部分(例如,小于全部)中的数据。然后,存储在存储器的剩余区段中的数据可在存储器的供电已经完成之后使用与所述区段中的每一相应者相关联的不同加密散列来验证。23.如本文使用,“一(a/an)”或“数个”可指事物中的一或多者,且“多个”可指两个或更多个此类某物。举例来说,存储器装置可指一或多个存储器装置,且多个存储器装置可指两个或更多个存储器装置。另外,如本文使用的指示符“r”、“b”、“s”、“n”及“k”(尤其是关于图式中的参考编号)指示如此指示的数个特定特征可包含在本公开的数个实施例中。数字可在指示之间相同或不同。24.本文中的图式遵循编号惯例,其中第一个或前几个数字对应于图式图号,并且其余数字标识图式中的元件或组件。可通过使用类似数字来标识不同图式之间的类似元件或组件。举例来说,101在图1中指涉元件“01”,并且类似元件在图2中可标注为201。25.图1说明根据本公开的实施例的具有数个物理块的存储器阵列101的一部分的示意图。举例来说,存储器阵列101可为例如nand快闪存储器阵列的快闪存储器阵列。作为额外实例,存储器阵列101可为电阻可变存储器阵列,例如pcram、rram、mmram或自旋转矩转移(stt)阵列等。然而,本公开的实施例不限于特定类型的存储器阵列。此外,存储器阵列101可为安全存储器阵列,如本文将进一步描述。此外,尽管未在图1中展示,但存储器阵列101可与与其操作相关联的各种外围电路系统一起定位在特定半导体裸片上。26.如在图1中展示,存储器阵列101具有存储器单元的数个物理块107‑0(块0)、107‑1(块1)、…、107‑b(块b)。存储器单元可为单电平单元及/或多电平单元,例如二电平单元、三电平单元(tlc)或四电平单元(qlc)。作为实例,存储器阵列101中的物理块的数目可为128个块、512个块或1,024个块,但实施例不限于2的特定次幂或存储器阵列101中的任何特定数目个物理块。27.存储器单元的数个物理块(例如,块107‑0、107‑1、…、107‑b)可包含在存储器单元的平面中,并且存储器单元的数个平面可包含在裸片上。例如,在图1中展示的实例中,每一物理块107‑0、107‑1、…、107‑b可为单个裸片的部分。也就是说,图1中说明的存储器阵列101的部分可为存储器单元的裸片。28.如在图1中展示,每一物理块107‑0、107‑1、…、107‑b包含耦合到存取线(例如,字线)的存储器单元的数个物理行(例如,103‑0、103‑1、…、103‑r)。每一物理块中的行(例如,字线)的数目可为32,但实施例不限于每物理块特定数目个行103‑0、103‑1、…、103‑r。此外,尽管图1中未展示,但存储器单元可耦合到感测线的列(例如,数据线及/或数字线)。29.如所属领域的一般技术人员将了解,每一行103‑0、103‑1、…、103‑r可包含存储器单元的数个页面(例如,物理页面)。物理页面是指编程及/或感测的单位(例如,作为功能群组一起编程及/或感测的数个存储器单元)。在图1中展示的实施例中,每一行103‑0、103‑1、…、103‑r包括存储器单元的一个物理页面。然而,本公开的实施例不如此受限。例如,在一个实施例中,每一行可包括存储器单元的多个物理页面(例如,耦合到偶数编号数据线的存储器单元的一或多个偶数页面,以及耦合到奇数编号数据线的存储器单元的一或多个奇数页面)。另外,对于包含多电平单元的实施例,存储器单元的物理页面可存储数据的多个页面(例如,逻辑页面)(例如,数据的上页面及数据的下页面,其中物理页面中的每一单元存储朝向数据的上页面的一或多个位及朝向数据的下页面的一或多个位)。30.如在图1中展示,存储器单元的页面可包括数个物理扇区105‑0、105‑1、…、105‑s(例如,存储器单元的子集)。单元的每一物理扇区105‑0、105‑1、…、105‑s可存储数个逻辑扇区的数据。另外,数据的每一逻辑扇区可对应于数据的特定页面的一部分。作为实例,存储在特定物理扇区中的数据的第一逻辑扇区可对应于与数据的第一页面对应的逻辑扇区,并且存储在特定物理扇区中的数据的第二逻辑扇区可对应于数据的第二页面。每一物理扇区105‑0、105‑1、…、105‑s可存储系统及/或用户数据,及/或可包含开销数据,例如错误校正码(ecc)数据、逻辑块地址(lba)数据及元数据。31.逻辑块寻址是可由主机用于识别数据的逻辑扇区的方案。举例来说,每一逻辑扇区可对应于唯一逻辑块地址(lba)。另外,lba还可对应于(例如,动态映射到)物理地址,例如物理块地址(pba),其可指示所述数据的逻辑扇区在存储器中的物理位置。数据的逻辑扇区可为数个字节的数据(例如,256字节、512字节、1,024字节或4,096字节)。然而,实施例不限于这些实例。32.应注意,物理块107‑0、107‑1、…、107‑b,行103‑0、103‑1、…、103‑r,扇区105‑0、105‑1、…、105‑s及页面的其它配置是可能的。举例来说,物理块107‑0、107‑1、…、107‑b的行103‑0、103‑1、…、103‑r可各自存储对应于单个逻辑扇区的数据,所述逻辑扇区可包含例如多于或少于512字节的数据。33.图2是根据本公开的实施例的包含主机202及呈存储器装置206的形式的设备的计算系统200的框图。举例来说,如本文所使用,“设备”可指代但不限于多种结构中的任一者或结构的组合,例如电路或电路系统、裸片或若干裸片、模块或若干模块、装置或若干装置或系统或若干系统。此外,在实施例中,计算系统200可包含类似于存储器装置206的数个存储器装置。34.在图2中说明的实施例中,存储器装置206可包含具有存储器阵列201的存储器212。存储器阵列201可类似于先前结合图1描述的存储器阵列101。尽管图2中说明一个存储器阵列201,但存储器212可包含类似于存储器阵列201的任何数目个存储器阵列。35.在实施例中,存储器阵列201(例如,阵列201的子集或整个阵列201)可为安全阵列(例如,将保持在控制之下的存储器212的区域)。举例来说,存储在存储器阵列201中的数据可包含敏感(例如,非用户)数据,例如主机固件及/或待针对敏感应用程序执行的代码。在此实施例中,一或多个非易失性寄存器可用于定义安全阵列。举例来说,在图2中说明的实施例中,电路系统210包含可用于定义安全阵列的一对寄存器214‑1及214‑2。例如,寄存器214‑1可定义安全阵列的地址(例如,数据的起始lba),且寄存器214‑2可定义安全阵列的大小(例如,数据的结束lba)。本文将进一步描述(例如,结合图3a到3b)此类寄存器的实例及其在定义安全阵列中的使用。36.如图2中说明,主机202可经由接口204耦合到存储器装置206。主机202及存储器装置206可在接口204上通信(例如,发送命令及/或数据)。主机202及/或存储器装置206可为膝上型计算机、个人计算机、数码相机、数字记录及回放装置、移动电话、pda、记忆卡读取器、接口集线器或物联网(iot)启用装置(例如汽车(例如,交通工具及/或运输基础设施)iot启用装置或医疗(例如,植入式及/或健康监测)iot启用装置)等其它主机系统或为其一部分,并且可包含存储器存取装置(例如,处理器)。所属领域的一般技术人员将了解,“处理器”可意指一或多个处理器,例如并行处理系统、数个协处理器等。37.接口204可呈标准化物理接口的形式。举例来说,当存储器装置206用于计算系统200中的信息存储时,接口204可为串行高级技术附件(sata)物理接口、外围组件互连快速(pcie)物理接口、通用串行总线(usb)物理接口或小型计算机系统接口(scsi)等其它物理连接器及/或接口。然而,一般来说,接口204可提供用于在存储器装置206与具有针对接口204的兼容接受器的主机(例如,主机202)之间传递控制、地址、信息(例如,数据)及其它信号的接口。38.存储器装置206包含控制器208以与主机202及与存储器212(例如,存储器阵列201)通信。例如,控制器208可发送命令以对存储器阵列201执行操作,其包含用以感测(例如,读取)、编程(例如,写入)、移动及/或擦除数据的操作以及其它操作。39.控制器208可包含在与存储器212相同的物理装置(例如,相同裸片)上。替代地,控制器208可包含在通信地耦合到包含存储器212的物理装置的单独物理装置上。在实施例中,控制器208的组件可作为分布式控制器跨越多个物理装置散布(例如,一些组件在与存储器相同的裸片上,而一些组件在不同裸片、模块或板上)。40.主机202可包含主机控制器(图2中未展示)以与存储器装置206通信。主机控制器可经由接口204向存储器装置206发送命令。主机控制器可与存储器装置206及/或存储器装置206上的控制器208通信以读取、写入及/或擦除数据以及其它操作。此外,在一个实施例中,主机202可为如本文先前描述的具有iot通信能力的iot启用装置。41.存储器装置206上的控制器208及/或主机202上的主机控制器可包含控制电路系统及/或逻辑(例如,硬件及固件)。在实施例中,存储器装置206上的控制器208及/或主机202上的主机控制器可为耦合到包含物理接口的印刷电路板的专用集成电路(asic)。此外,存储器装置206及/或主机202可包含易失性及/或非易失性存储器的缓冲器以及数个寄存器。42.举例来说,如在图2中展示,存储器装置可包含电路系统210。在图2中说明的实施例中,电路系统210包含在控制器208中。然而,本公开的实施例不如此受限。例如,在实施例中,电路系统210可包含在存储器212中(例如,代替在控制器208中)(例如,在与存储器212相同的裸片上)。电路系统210可包括例如硬件、固件及/或软件,并可用于验证(例如,认证及/或证明)存储在存储器212中(例如,在存储器阵列201中)的数据。43.举例来说,电路系统210可将存储在存储器阵列201中的数据划分为多个区段,并将不同加密散列与每一相应区段相关联。例如,电路系统210可使用从主机202接收的经过认证(例如,安全的)及反重放保护的命令为每一相应区段产生(例如,计算)不同加密散列(例如,使得仅存储器装置206知道这些加密散列,并且仅存储器装置206能够产生加密散列并对其进行更新)。为每一相应区段产生的加密散列在本文中可称为针对所述区段的黄金散列,并且可包括例如sha‑256加密散列。这些黄金散列可存储在包含在电路系统210中的存储器装置206及/或主机202的用户无法存取的非易失性寄存器216‑3中(例如,在存储器装置206的“隐藏”区中),并且可在验证存储在存储器阵列201中的数据的过程期间使用,如本文将进一步描述。44.此外,如在图2中展示,电路系统210可包含可用于定义多个区段的一或多个非易失性寄存器(例如,寄存器216‑1及216‑2)。例如,寄存器216‑1可定义多个区段中的每一相应者的地址(例如,数据的起始lba),且寄存器216‑2可定义多个区段中的每一相应者的大小(例如,数据的结束lba)。多个区段可各自具有相同的大小(例如,存储相同的数据量),或者可具有不同大小(例如,存储不同数据量)。本文将进一步描述(例如,结合图4)寄存器216‑1、216‑2及216‑3的实例。45.在存储器装置206的供电(例如,上电及/或通电)期间,电路系统210可使用与所述相应区段相关联的黄金散列来验证(例如,确定是否验证)存储在第一数目个多个区段中的每一相应者中的数据。如本文所用,验证数据可包含及/或涉及、认证及/或证明数据是真实的(例如,与最初编程的相同)并且尚未被黑客活动或其它未经授权及/或非预期改变所更改。46.举例来说,电路系统210可为存储在第一数目个区段中的每一相应者中的数据产生(例如,计算)不同的运行时间加密散列,并将为存储在每一相应区段中的数据产生的运行时间加密散列与针对存储在寄存器216‑3中的所述相应区段的黄金散列进行比较。在比较指示为存储在相应区段中的数据产生的运行时间加密散列与针对所述相应区段的黄金散列匹配时,可确定存储在所述相应区段中的数据尚未被更改,且因此可验证存储在所述相应区段中的数据(例如,可被确定为有效)。因而,存储在每一相应区段中的数据可独立于存储在其它区段中的数据进行验证。47.第一数目个多个区段可包括存储在存储器阵列201中的数据被划分到其中的多个区段的仅一部分(例如,小于全部)。作为实例,第一数目个多个区段可包括由主机202(例如,由主机202的用户)定义的特定数量的区段。此数量可存储在包含在电路系统210中的非易失性寄存器218‑1中。作为额外实例,第一数目个多个区段可包括可由电路系统210在特定时间量内验证的一定数量的区段。此时间量可对应于存储器装置206的供电持续的时间量,所述时间量可由存储器装置206(例如,由电路系统210)自动确定并存储在包含在电路系统210中的非易失性寄存器218‑2中。48.然而,如果比较指示为存储在相应区段中的数据产生的运行时间加密散列与所述相应区段的黄金散列不匹配,此可指示存储在所述相应区段中的数据已被改变(例如,由于黑客或存储器中的故障),且因此存储在所述相应区段中的数据可能不是有效(例如,可能被确定为不是有效的)。在此情况下,电路系统210可修复(例如,尝试修复)存储在所述区段中的数据。例如,修复存储在区段中的数据可包含确定是否允许修复数据,并且如果允许修复,那么从存储器212恢复(例如,复原)数据(例如,从包含在存储器中的修复块,例如结合图11进一步描述的修复块1117)。49.如在图2中展示,电路系统210可包含额外寄存器216‑4、216‑5、216‑6、216‑7及216‑8,其可在验证及修复过程期间由电路系统210使用。寄存器216‑4可为可提供存储在多个区段中的每一相应者中的数据的验证状态的指示(例如,是否已完成数据验证的指示)的易失性寄存器,且寄存器216‑5可为可提供存储在每一相应区段中的数据的验证结果的指示(例如,数据是否已被确定为有效的指示)的易失性寄存器,所述指示可由电路系统210用以确定是否应尝试修复存储在每一相应区段中的数据。50.寄存器216‑6可为可提供是否允许对存储在多个区段中的每一相应者中的数据的修复的指示的非易失性寄存器,所述指示可由电路系统210用于在确定数据无效且应尝试修复之后确定是否允许修复存储在区段中的数据。寄存器216‑7可为可用于定义存储器212中(例如,在修复块中)的、可从其恢复存储在多个区段中的每一相应者中的数据的的地址的非易失性寄存器,所述地址可由电路系统210用于在所述数据的修复期间恢复所述数据。寄存器216‑8可为可在允许对存储在多个区段中的每一相应者中的数据的修复的情况下提供对所述数据的修复结果的指示(例如,所述数据是否已被修复)的易失性寄存器。本文将进一步描述(例如,结合图4)寄存器216‑4到216‑8的实例及其在验证及修复过程中的使用。51.在存储器装置206的供电(例如,启动)完成之后,电路系统210可使用与所述相应区段相关联的黄金散列来验证(例如,确定是否验证)存储在第二数目个多个区段中的每一相应者中的数据。第二数目个多个区段可包括存储在存储器阵列201中的数据被划分到其中的剩余区段(例如,不包含在第一数目个多个区段中的区段)。然而,本公开的实施例不限于第一及第二数目个区段(例如,多个区段可包括多于第一及第二数目个区段)。52.验证存储第二数目个多个区段中的每一相应者中的数据的过程可类似于本文先前描述的验证存储在第一数目个多个区段中的每一相应者中的数据的过程。举例来说,电路系统210可以类似于本文先前针对第一数目个区段描述的方式的方式为存储在第二数目个多个区段中的每一相应者中的数据产生不同运行时间加密散列,并将为存储在每一相应区段中的数据产生的运行时间加密散列与针对存储在寄存器216‑3中的所述相应区段的黄金散列进行比较。此外,如果存储在第二数目个多个区段中的一者的数据被确定为不是有效的,那么电路系统210可以类似于本文先前针对第一数目个区段描述的方式的方式修复存储在所述区段中的数据。此外,电路系统210可以类似于本文先前针对第一数目个区段描述的方式的方式在存储在第二数目个多个区段中的数据的验证及修复过程期间使用寄存器216‑4到216‑8。53.此外,在存储器装置206的供电完成之后(例如,在存储在第二数目个多个区段中的数据正在被验证时),在存储在第一数目个区段中的所述相应者中的数据被验证或修复之后,电路系统210可经由接口204向主机202发送存储在第一数目个区段中的每一相应者中的数据(例如,主机202可从存储器装置206接收数据)。例如,如果存储在所述相应区段中的数据已被确定为不是有效的且未被修复,那么不可将存储在第一数目个区段中的每一相应者中的数据发送到主机202;而是,存储在每一相应区段中的数据仅可在已被确定为有效或已被修复的情况下才可将其发送到主机202。电路系统210可使用寄存器216‑4到216‑8来确定存储在第一数目个区段中的每一相应者中的数据是否已被确定为有效或已被修复,如本文先前描述。54.在发送存储在第一数目个多个区段中的每一相应者中的数据之后,在存储在第二数目个区段中的所述相应者中的数据被验证或修复之后,电路系统210可经由接口204向主机202发送存储在第二数目个区段中的每一相应者中的数据(例如,主机202可从存储器装置206接收数据)。例如,如果存储在所述相应区段中的数据已被确定为不是有效的且未被修复,那么可不将存储在第二数目个区段中的每一相应者中的数据发送到主机202;而是,存储在每一相应区段中的数据仅可在已被确定为有效或已被修复的情况下才可将其发送到主机202。电路系统210可使用寄存器216‑4到216‑8来确定存储在第二数目个区段中的每一相应者中的数据是否已被确定为有效或已被修复,如本文先前描述。55.图2中说明的实施例可包含未说明以避免混淆本公开的实施例的额外电路系统、逻辑及/或组件。举例来说,存储器装置206可包含用以锁存通过i/o电路系统经由i/o连接器提供的地址信号的地址电路系统。地址信号可由行解码器及列解码器接收及解码,以存取存储器阵列201。此外,存储器装置206可包含与存储器阵列201分离及/或作为存储器阵列201的补充的主存储器,例如dram或sdram。本文将进一步描述(例如,结合图11)进一步说明存储器装置206的额外电路系统、逻辑及/或组件的实例。56.图3a说明根据本公开的实施例用于定义安全存储器阵列的寄存器314‑1及314‑2的实例,且图3b说明包含根据本公开的实施例的使用寄存器314‑1及314‑2定义的安全存储器阵列的存储器阵列301的一部分的图。寄存器314‑1及314‑2可为例如先前结合图2描述的寄存器214‑1及214‑2,且安全存储器阵列301可为例如先前结合图2描述的存储器阵列201。例如,如在图3b中展示,安全存储器阵列301可以类似于先前结合图1描述的存储器阵列101的方式包含存储器单元的数个物理块307‑0、307‑1、…、307‑b,其各自包含具有存储器单元的数个扇区的数个物理行303‑0、303‑1、…、303‑r,。57.如在图3a中展示,寄存器314‑1可定义安全阵列的地址(例如,安全阵列的不同部分的地址),且寄存器314‑2可定义安全阵列的大小(例如,安全阵列的不同部分的大小)。由寄存器314‑1定义的安全阵列的地址可对应于例如安全阵列的起始点(例如,起始lba)(例如,安全阵列的不同部分的起始点),并且由寄存器314‑2定义的安全阵列的大小可对应于例如安全阵列的结束点(例如,结束lba)(例如,安全阵列的不同部分的结束点)。58.举例来说,如在图3a中展示,寄存器314‑1及314‑2可定义n对值,其中每一相应对包括由寄存器314‑1定义的地址值(例如,addr)及由寄存器314‑2定义的大小值(例如,大小)。例如,在图3a中说明的实例中,pair0包括地址值addr0及大小值size0(例如,pair0=[addr0,size0]),pair1包括地址值addr1及大小值size1(例如,pair1=[addr1,size1]),以此类推,其中pairn包括地址值addrn及大小值sizen(例如,pairn=[addrn,sizen])。一对的地址值可对应于安全阵列的一部分的起始点(例如,起始点lba),并且所述对的地址值及大小值的总和可对应于安全阵列的所述部分的结束点(例如,结束点lba)。因而,整个安全阵列(例如,包括整个安全阵列的部分)可由以下给出:[addr0,addr0 size0]∪[addr1,addr1 size1]∪…∪[addrn,addrn sizen]。[0059]其由寄存器314‑2定义的大小值为零的第一对可停止安全阵列的定义。例如,在图3a中说明的实例中,如果pair2的大小值为零,那么安全阵列将由以下给出:[addr0,addr0 size0]∪[addr1,addr1 size1]。[0060]由寄存器314‑1及314‑2定义的安全阵列的实例(例如,其中由寄存器314‑2定义的所有大小值为非零)在图3b中说明。例如,如在图3b中展示,与存储器阵列301的扇区305‑0相关联的地址(例如,lba)为addr0,与存储器阵列301的扇区305‑1相关联的地址为addr0 size0,与存储器阵列301的扇区305‑2相关联的地址为addr1,与存储器阵列301的扇区305‑3关联的地址为addr1 size1,与存储器阵列301的扇区305‑4相关联的地址为addrn,并且与存储器阵列301的扇区305‑5相关联的地址是addrn sizen。因而,安全阵列包括扇区(例如,存储在扇区中的数据)305‑0到305‑1、扇区305‑2到305‑3及305‑4到305‑5。然而,在存储器阵列301的扇区305‑0及扇区305‑1到305‑2之前的存储器阵列301的扇区不是安全阵列的部分(例如,安全阵列包括阵列301的子集)。[0061]图4说明根据本公开的实施例的用于将存储在存储器阵列中的数据划分到多个区段中以及验证及修复存储在每一相应区段中的数据的寄存器416‑1到416‑8的实例。寄存器416‑1到416‑8可为例如先前结合图2描述的寄存器216‑1到216‑8,且安全存储器阵列可为例如先前结合图2描述的存储器阵列201。[0062]如在图4中说明的实例中展示,且如本文先前所描述,存储在存储器阵列中的数据可划分到多个(例如,n个)区段中,其中的五者(例如,区段420‑1、420‑2、420‑3、420‑4及420‑5)在图4中说明。此外,如本文先前描述(例如,结合图2),多个区段可包括第一数目个(例如,k)区段,其数据可在存储器的供电期间被验证及/或修复,以及第二数目个(例如,n‑k)区段,其数据可在存储器的供电之后被验证及/或修复。在图4中说明的实例中,区段420‑1、420‑2及420‑3包含在第一数目个多个区段中,且区段420‑4及420‑5包含在第二数目个多个区段中。[0063]如在图4中展示,寄存器416‑1可定义多个区段中的每一相应者的地址(例如,地址值),且寄存器416‑2可定义多个区段中的每一相应者的大小(例如,大小值)。由寄存器416‑1定义的每一相应区段的地址可对应于例如所述区段的起始点(例如,起始lba),且由寄存器416‑2定义的每一相应区段的大小可对应于例如所述区段的结束点(例如,结束lba)。例如,在图4中说明的实例中,区段420‑1的地址由寄存器416‑1定义为0xaabbcc,且区段420‑1的大小由寄存器416‑2定义为0x10000。类似地,区段420‑2、420‑3、420‑4及420‑5由地址寄存器416‑1分别定义为0xaa1122、0x123444、0xddeeff及0xaa55bb,且区段420‑2、420‑3、420‑4及420‑5的大小由寄存器416‑2分别定义为0x10000、0x20000、0x10000及0x20000,如在图4中说明。[0064]如本文先前所述(例如,结合图2),数据的多个区段中的每一相应者可具有与之相关联的不同加密散列(例如,黄金散列)以用于验证存储在所述区段中的数据。例如,在图4中说明的实例中,区段420‑1具有与之相关联的黄金散列#1,区段420‑2具有与之相关联的黄金散列#2,区段420‑3具有与之相关联的黄金散列#k,区段420‑4具有与之相关联的黄金散列#k 1,且区段420‑5具有与之相关联的黄金散列n。如在图4中展示,与每一相应区段相关联的黄金散列可存储在寄存器416‑3中。[0065]如在图4中展示,寄存器416‑4可提供存储在多个区段中的每一相应者中的数据的验证的状态的指示(例如,指示所述状态值)。在图4中说明的实例中,存储在第一数目个多个区段中的数据已被验证,但存储在第二数目个多个区段中的数据尚未被验证(例如,存储器的供电完成,但存储在第二数目个区段中的数据的验证尚未启动)。因而,寄存器416‑4可提供存储在区段420‑1中的数据的验证完成的指示,存储在区段420‑2中的数据的验证完成的指示,存储在区段420‑3中的数据的验证完成的指示,存储在区段420‑4中的数据的验证未完成的指示,及存储在区段420‑5中的数据的验证未完成的指示,如在图4中说明。[0066]如图4中展示,如果存储在区段中的数据的验证完成(例如,如由针对由寄存器416‑4提供的所述区段的值指示),那么寄存器416‑5可提供存储在所述区段中的数据验证结果的指示(例如,指示所述结果的指示)。在图4中说明的实例中,寄存器416‑5正提供存储在区段420‑1中的数据已被确定为有效的指示,存储在区段420‑2中的数据已被确定为不是有效的指示,及存储在区段420‑3中的数据已被确定为不是有效的指示,如在图4中说明。此外,因为存储在区段420‑4及420‑5中的数据尚未验证(例如,如由针对由寄存器416‑4提供的所述区段的值指示),寄存器416‑5未提供(例如,不包含)针对区段420‑4或420‑5的值,如在图4中说明。[0067]如本文先前描述(例如,结合图2),如果存储在区段中的数据的验证结果是数据被确定为不是有效的(例如,如由针对由寄存器416‑5提供的所述区段的值指示),那么存储在所述区段中的数据可被修复。如图4中展示,寄存器416‑6可提供是否允许存储在多个区段中的每一相应者中的数据的修复的指示(例如,指示是否允许存储在多个区段中的每一相应者中的数据的修复的值)。例如,在图4中说明的实例中,寄存器416‑6提供允许存储在区段420‑1中的数据的修复的指示,允许存储在区段420‑2中的数据的修复的指示,不允许存储在区段420‑3中的数据的修复的指示,不允许存储在区段420‑4中的数据的修复的指示,及允许存储在区段420‑5中的数据的修复的指示。[0068]如在图4中展示,如果允许存储在区段中的数据的修复(例如,如由针对由寄存器416‑6提供的所述区段的值指示),寄存器416‑7可定义地址(例如,地址值),在修复期间存储在所述区段中的数据可从所述地址恢复。由寄存器416‑7定义的地址可对应于例如可从其可恢复数据的存储器的修复块中的位置。例如,在图4中说明的实例中,可从其恢复存储在区段420‑1中的数据的地址由寄存器416‑7定义为addr1,可从其恢复存储在区段420‑2中的数据的地址由寄存器416‑7定义为addr2,且可从其恢复存储在区段420‑5中的数据的地址由寄存器416‑7定义为addr3。此外,因为不允许存储在区段420‑3及420‑4中的数据的修复(例如,如由针对由寄存器416‑6提供的所述区段的值指示),寄存器416‑7未定义(例如,不包含)针对区段420‑3或420‑4的地址值,如在图4中说明。[0069]如图4中展示,如果允许对存储在区段中的数据的修复(例如,如由针对由寄存器416‑6提供的所述区段的值指示),寄存器416‑8可提供修复结果的指示(例如,指示所述结果的值)。在图4中说明的实例中,寄存器416‑8提供存储在区段420‑1中的数据尚未被修复的指示(例如,因为存储在区段420‑1中的数据被确定为有效,且因此将不需要所述数据的修复),存储在区段420‑2中的数据已被修复的指示(例如,因为存储在区段420‑2中的数据被确定为不是有效的,但允许被修复),及存储在区段420‑5中的数据尚未被修复的指示(例如,因为存储在区段420‑5中的数据尚未被验证)。此外,因为不允许存储在区段420‑3及420‑4中的数据的修复(例如,如由针对由寄存器416‑6提供的所述区段的值指示),寄存器416‑7不提供(例如,不包含)针对区段420‑3或420‑4的值,如在图4中说明。[0070]图5说明根据本公开的实施例的使用加密散列验证(例如,确定是否验证)存储在存储器中的数据区段的方法525。所述存储器可为例如先前结合图2描述的存储器阵列201,且可被划分为多个区段,如本文先前描述。方法525可由例如先前结合图2描述的存储器装置206(例如,电路系统210)执行。[0071]在框527处,方法525包含从存储器检索存储在多个存储器区段中的一者中的数据。存储在区段中的数据可使用寄存器216‑1及216‑2中定义的所述区段的地址及大小来检索,如本文先前描述(例如,结合图2)。[0072]在框529处,方法525包含为存储在存储器区段中的数据产生运行时间加密散列,并且在框531处,方法525包含检索与存储器区段相关联的黄金散列。黄金散列可从寄存器216‑3中检索,如本文先前描述(例如,结合图2)。[0073]在框533,方法525包含将运行时间加密散列与黄金散列进行比较,并且在框535处,方法525包含确定运行时间加密散列是否与黄金散列匹配。如果确定运行时间加密散列与黄金散列匹配,那么在框537验证(例如,确定为有效)存储在存储器区段中的数据。如果确定运行时间加密散列与黄金散列不匹配,那么方法525前进到框539。[0074]在框539处,方法525包含确定是否允许修复存储在存储器区段中的数据。可使用寄存器216‑6确定是否允许修复存储在存储器区段中的数据,如本文先前描述(例如,结合图2)。[0075]如果确定允许修复存储在存储器区段中的数据,那么在框541处修复所述数据。数据的修复可包含使用寄存器216‑7从存储器恢复数据,如本文先前所述(例如,结合图2)。如果确定不允许修复存储在存储器区段中的数据,那么在框543处存储在存储器区段中的数据未被验证(例如,被确定为不是有效的)。[0076]图6是根据本公开的实施例的包含主机602及存储器装置606的实例系统的框图。主机602及存储器装置606可分别为例如先前结合图2描述的主机202及存储器装置206。[0077]计算装置可使用层分阶段启动,其中每一层认证并加载后续层,并在每一层处提供越来越复杂的运行时间服务。一层可由前一层服务且服务后续层,借此创建建立在较低层之上并服务较高阶层的互连层网络。如在图6中说明,层0(“l0”)651及层1(“l1”)653在主机内。层0651可向层1653提供固件派生密钥(fds)652。fds密钥652可描述层1653的代码的身份及其它安全相关数据。在实例中,特定协议(例如稳健物联网(riot)核心协议)可使用fds652来验证其加载的层1653的代码。在实例中,特定协议可包含装置标识合成引擎(dice)及/或riot核心协议。作为实例,fds可包含层1固件图像本身、以加密方式标识授权的层1固件的清单、在安全启动实施方案的上下文中签名固件的固件版本号及/或装置的安全关键配置设置。装置机密658可用于创建fds652并存储在主机602的存储器中。[0078]如由箭头654中展示,主机可将数据传输到存储器装置606。所传输数据可包含公开的外部标识、证书(例如,外部标识证书)及/或外部公钥。存储器装置606的层2(“l2”)655可接收所传输数据,并在操作系统(“os”)657的操作中以及在第一应用程序659‑1及第二应用程序659‑2上执行数据。[0079]在实例操作中,主机602可读取装置机密658,散列层1653的身份,并执行包含以下的计算:[0080]kl1=kdf[fs(s),hash(“immutableinformation”)][0081]其中kl1是外部公钥,kdf(例如,国家标准与技术研究所(nist)特别出版物800到108中定义的kdf)是密钥派生函数(例如,hmac‑sha256),且fs(s)是装置机密658。fds652可通过执行以下来确定:[0082]fds=hmac‑sha256[fs(s),sha256(“immutableinformation”)][0083]同样地,如由箭头656说明,存储器装置606可向主机602传输数据。[0084]图7是根据本公开的实施例的确定数个参数的实例过程的框图。图7是确定包含外部公共标识、外部证书及外部公钥的参数的实例,所述参数接着被发送到存储器装置(例如,图6中的606)的层2(例如,层2655),如由箭头754指示。图7中的层0(“l0”)751对应于图6中的层0651,且同样地fds752对应于fds652,层1753对应于层1653,且箭头754及756分别对应于箭头654及656。[0085]来自层0751的fds752被发送到层1753,并由非对称id产生器761用于产生公共标识(“idlkpublic”)765及私有标识767。在缩写的“idlkpublic”中,“lk”指示层k(在此实例中为层1),且“public”指示公开共享的标识。公共标识765被说明为由延伸到主机的层1753的右侧及外部的箭头共享。所产生私有标识767用作到加密器773的密钥输入。加密器773可为用于加密数据的任何处理器、计算装置等。[0086]主机的层1753可包含非对称密钥产生器763。在至少一个实例中,随机数产生器(rnd)736可任选地将随机数输入到非对称密钥产生器763中。非对称密钥产生器763可产生与主机(例如图6中的主机602)相关联的公钥(“klkpublic”)769(称为外部公钥)及私钥(“klkprivate”)771(称为外部私钥)。外部公钥769可为到加密器773中的输入(作为“数据”)。加密器773可使用外部私有标识767及外部公钥769的输入产生结果k’775。外部私钥771及结果k’775可输入到额外加密器777中,从而产生输出k”779。输出k”779是传输到层2(图6的655)的外部证书(“idl1certificate”)781。外部证书781可提供验证及/或认证从装置发送的数据的来源的能力。作为实例,从主机发送的数据可通过验证证书与主机的身份相关联,如将结合图9进一步描述。此外,外部公钥(“kl1publickey”)783可传输到层2。因此,可将主机的公共标识765、证书781及外部公钥783传输到存储器装置的层2。[0087]图8是根据本公开的实施例的确定数个参数的实例过程的框图。图8说明产生装置标识(“idl2public”)866、装置证书(“idl2certificate”)882及装置公钥(“kl2publickey”)884的存储器装置(例如,图6中的存储器装置606)的层2855。[0088]如在图7中描述,从主机的层1传输到存储器装置的层2855的外部公钥(“kl1publickey”)883由存储器装置的非对称id产生器862用于产生存储器装置的公共标识(“idlkpublic”)866及私有标识868。在缩写的“idlkpublic”中,“lk”指示层k(在此实例中为层2),且“public”指示公开共享的标识。公共标识866被说明为由延伸到层2855的右侧及外部的箭头共享。所产生私有标识868用作到加密器874中的密钥输入。[0089]如在图8中展示,外部证书881及公共标识865以及外部公钥883由证书验证器899使用。证书验证器899可验证从主机接收的外部证书881,并且响应于外部证书881被验证或未被验证,确定是接受还是丢弃从主机接收的数据。本文进一步描述(例如,结合图9)验证外部证书881的进一步细节。[0090]存储器装置的层2855可包含非对称密钥产生器864。在至少一个实例中,随机数产生器(rnd)838可任选地将随机数输入到非对称密钥产生器864中。非对称密钥产生器864可产生与例如图6中的存储器装置606的存储器装置相关联的公钥(“klkpublic”)870(称为装置公钥)及私钥(“klkprivate”)872(称为装置私钥)。装置公钥870可为到加密器874中的输入(作为“数据”)。加密器874可使用装置私有标识868及装置公钥870的输入产生结果k’876。装置私钥872及结果k’876可输入到额外的加密器878中,从而产生输出k”880。输出k”880是传输回到层1(图6的653)的装置证书(“idl2certificate”)882。装置证书882可提供验证及/或认证从装置发送的数据的来源的能力。作为实例,从存储器装置发送的数据可通过验证证书与存储器装置的身份相关联,如将结合图9进一步描述。此外,装置公钥(“kl2publickey”)884可传输到层1。因此,可将存储器装置的公共标识866、证书882及装置公钥884传输到主机的层1。[0091]在实例中,响应于主机从存储器装置接收公钥,主机可使用装置公钥加密待发送到存储器装置的数据。反之亦然,存储器装置可使用外部公钥加密待发送到主机的数据。响应于存储器装置接收使用装置公钥加密的数据,存储器装置可使用其自己的装置私钥解密数据。同样地,响应于主机接收使用外部公钥加密的数据,主机可使用其自己的外部私钥解密数据。由于装置私钥不与存储器装置外部的另一装置共享,且外部私钥不与主机外部的另一装置共享,因此发送到存储器装置及主机的数据保持安全。[0092]图9是根据本公开的实施例的验证证书的实例过程的框图。在图9的所说明实例中,从主机(例如,从图6中主机602的层1653)提供公钥983、证书981及公共标识965。证书981及外部公钥983的数据可用作到解密器985中的输入。解密器985可为用于解密数据的任何处理器、计算装置等。证书981及外部公钥983的解密结果可与公共标识一起用作到二次解密器987中的输入,导致输出。如在989处说明,外部公钥983及来自解密器987的输出可指示证书是否被验证,从而导致作为输出的是或否991。响应于证书被验证,可接受、解密及处理从正在被验证的装置接收的数据。响应于证书未被验证,可丢弃、移除及/或忽略从被验证装置接收的数据。以此方式,可检测并避免发送恶意数据的恶意装置。作为实例,可识别发送待处理的数据的黑客,且不处理所述黑客数据。[0093]图10是根据本公开的实施例的验证签名的实例过程的框图。在装置正在发送可被验证以便避免后续否认的数据的例子中,可产生签名并与数据一起发送签名。作为实例,第一装置可向第二装置发出请求,并且一旦第二装置执行所述请求,第一装置可指示第一装置从未发出此请求。反否认方法,例如使用签名,可避免由第一装置进行的否认,并确保第二装置可在没有后续困难的情况下执行所请求任务。[0094]存储器装置1006(例如图2中的存储器装置206)可向主机(例如图2中的主机202)发送数据1090。在1094处,存储器装置1006可使用装置私钥1071产生签名1096。签名1096可被传输到主机1002。主机1002可在1098处使用先前接收的数据1092及外部公钥1069来验证签名。以此方式,签名使用私钥产生并使用公钥验证。以此方式,用于产生唯一签名的私钥可对发送签名的装置保持私有,同时允许接收装置能够使用发送装置的公钥解密签名以进行验证。这与数据的加密/解密相反,所述数据由发送装置使用接收装置的公钥进行加密,并由接收装置使用接收方的私钥进行解密。在至少一个实例中,装置可通过使用内部加密过程(例如,椭圆曲线数字签名(ecdsa)或类似过程)来验证数字签名。[0095]图11是根据本公开的实施例的实例存储器装置1106的框图。举例来说,存储器装置1106可为先前结合图2描述的存储器装置206。[0096]如在图11中展示,存储器装置1106可包含数个存储器阵列1101‑1到1101‑7。存储器阵列1101‑1到1101‑7可类似于先前结合图1描述的存储器阵列101。此外,在图10中说明的实例中,存储器阵列1101‑3是安全阵列,存储器阵列1101‑6的子集1111包括安全阵列,且存储器阵列1101‑7的子集1113及1115包括安全阵列。子集1111、1113及1115可各自包含例如4千字节的数据。然而,本公开的实施例不限于存储器阵列或安全阵列的特定数目或布置。[0097]如在图11中展示,存储器装置1106可包含修复(例如,恢复)块1117。在存储器装置1106的操作期间可能发生错误(例如,不匹配)的情况下及/或如果存储在阵列1101‑1到1101‑7中的数据被确定为不是有效的,那么修复块1117可用作数据源,如先前描述。修复块1117可位于可由主机寻址的存储器装置1106的区域外部。[0098]如在图11中展示,存储器装置1106可包含串行外围接口(spi)1104及控制器1108。存储器装置1106可使用spi1104及控制器1108与主机及存储器阵列1101‑1到1101‑7通信,如本文先前所述(例如,结合图2)。[0099]如在图11中展示,存储器装置1106可包含用于管理存储器装置1106的安全性的安全寄存器1119。举例来说,安全寄存器1119可配置应用控制器,并与应用控制器进行外部通信。此外,安全寄存器1119可通过认证命令来修改。[0100]如在图11中展示,存储器装置1106可包含密钥1121。例如,存储器装置1106可包含八个不同的插槽以存储例如根密钥、dice‑riot密钥及/或其它外部会话密钥的密钥。[0101]如在图11中展示,存储器装置1106可包含电子可擦除可编程只读存储器(eeprom)1123。eeprom1123可提供主机可用的安全非易失性区域,其中数据的个别字节可被擦除及编程。[0102]如在图11中展示,存储器装置1006可包含计数器(例如,单调计数器)1124。计数器1124可用作从主机接收及/或发送到主机的命令(例如,用于对命令集或序列进行签名)的反重播机制(例如,新鲜度产生器)。例如,存储器装置1106可包含六个不同的单调计数器,其中的两者可由存储器装置1106用于认证命令,且其中的四者可由主机使用。[0103]如在图11中展示,存储器装置1106可包含sha‑256加密散列函数1126及/或hmac‑sha256加密散列函数1128。sha‑256及/或hmac‑sha256加密散列函数1126及1128可由存储器装置1106使用以产生加密散列,例如,用于验证存储在存储器阵列1101‑1到1101‑7中的数据的运行时间加密散列及/或黄金散列,如本文先前描述。此外,存储器装置1106可支持dice‑riot1130的l0及l1。[0104]尽管本文已经说明及描述特定的实施例,但是所属领域的一般技术人员将了解,经计算以实现相同结果的布置可代替所展示的特定实施例。本公开希望涵盖本公开的数个实施例的调适或变化。应了解,上述描述已以说明性方式而非限制性方式进行。所属领域的一般技术人员在审阅上文描述之后将明白上文实施例的组合及未在本文中明确描述的其它实施例。本公开的数个实施例的范围包含使用上述结构及方法的其它应用。因此,应参考所附权利要求书以及此权利要求书所享有的等效物的全范围确定本公开的数个实施例的范围。[0105]在前述具体实施方式中,出于简化本公开的目的,将一些特征分组在单个实施例中。本公开的此方法不应解释为反映本公开的所揭示实施例必须使用多于在每一权利要求中明确叙述的特征的意图。而是,如所附权利要求书反映,发明标的物在于少于单个所揭示实施例的全部特征。因此,所附权利要求书特此并入到具体实施方式中,其中每一权利要求独立地作为单独实施例。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献