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

基于块链的存储器命令验证的制作方法

2021-11-15 16:44: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和/或sram),以及各种其它类型的非易失性和易失性存储器。非易失性存储器可用于广泛范围的电子应用中,例如个人计算机、便携式记忆棒、数码相机、蜂窝式电话、便携式音乐播放器,例如mp3播放器、电影播放器等。
4.闪存存储器装置可包含将数据存储在例如浮动栅极的电荷存储结构中的存储器单元。闪存存储器装置通常使用允许高存储器密度、高可靠性及低功耗的单晶体管存储器单元。电阻可变存储器装置可包含可基于存储元件(例如,具有可变电阻的电阻性存储器元件)的电阻状态而存储数据的电阻性存储器单元。
5.存储器单元可布置成阵列,且阵列架构中的存储器单元可经编程为目标(例如,所要)状态。举例来说,电荷可置于闪存存储器单元的电荷存储结构(例如,浮动栅极)上或从其移除以将所述单元编程为特定数据状态。所述单元的电荷存储结构上的所存储电荷可指示所述单元的阈值电压(vt)。可通过感测闪存存储器单元的电荷存储结构上的所存储电荷(例如,vt)来确定所述单元的状态。
6.许多威胁可能会影响存储器装置的操作和/或存储在存储器装置的存储器单元中的数据。此类威胁可包含例如来自黑客或其它恶意用户的威胁,包含中间人(mitm)攻击等。此类威胁可能会造成重大经济损失,和/或可能会引起重大安全和/或安保问题。


技术实现要素:
附图说明
7.图1说明根据本公开的实施例的具有数个物理块的存储器阵列的一部分的图式。
8.图2是根据本公开的实施例的包含主机和呈存储器装置形式的设备的计算系统的
框图。
9.图3说明根据本公开的实施例的可利用基于块链的验证来验证的命令的实例。
10.图4是根据本公开的实施例的包含主机和存储器装置的实例系统的框图。
11.图5是根据本公开的实施例的用于确定数个参数的实例过程的框图。
12.图6是根据本公开的实施例的用于确定数个参数的实例过程的框图。
13.图7是根据本公开的实施例的用于核实证书的实例过程的框图。
14.图8是根据本公开的实施例的用于核实签名的实例过程的框图。
15.图9是根据本公开的实施例的实例存储器装置的框图。
具体实施方式
16.本公开包含用于对存储器命令进行基于块链的验证的设备、方法和系统。实施例包含:存储器;以及电路系统,其经配置以:接收包含在块链中的块中的用于验证待在所述存储器上执行的命令的命令,其中所述命令包含基于包含在所述块链中的先前块中的先前命令的反重放部分;使用所述命令的所述反重放部分来验证所述命令;且在验证所述命令后在所述存储器上执行所述命令。
17.许多威胁可能会影响存储器(例如,存储器装置)的操作和/或存储在其中的数据(例如,存储在存储器装置的存储器单元中的数据)。举例来说,黑客或其它恶意用户可能试图执行活动(例如,攻击),例如中间人(mitm)攻击,以出于恶意目的对存储器的操作和/或对其中存储的数据进行未经授权的改变。mitm攻击的一个实例是重放攻击,其中存储器装置多(例如,许多)次欺诈性地重复(例如,重新发出)和/或欺诈性地重新执行(例如,重新使用)有效命令(例如,已有效地发出到存储器装置的命令)。此类黑客活动可能会造成重大经济损失,和/或可能会引起重大安全和/或安保问题。
18.因而,为了确保安全存储器,重要的是存储器利用反重放(例如,新鲜度)机制来验证由存储器接收的命令先前(例如,早先)尚未执行,以便阻止命令作为mitm重放攻击的部分被欺诈性地重复和/或被欺诈性地重新执行。先前的反重放机制可包含例如时间戳、随机数生成器和/或计数器(例如,单调计数器),其可提供在发出每一新命令时变化的一段信息,以验证所述命令。然而,此类先前反重放机制可能需要将信息(例如,数据)存储在存储器中(例如,存储器装置的存储器单元中),这可能会减少存储器中可用于数据存储的空间量。此外,此类先前反重放机制可能需要专门用于反重放功能性的额外组件和/或电路系统,这可能会增加存储器的电路系统的大小和/或复杂性。
19.相比之下,本公开的实施例可利用基于块链的存储器命令验证来提供反重放(例如,新鲜度)机制,所述反重放机制可有效防止例如mitm重放攻击等攻击,并由此确保安全存储器。此类反重放机制可能不需要将信息存储在存储器中,这与使用先前反重放机制的存储器相比,可增加存储器中可用于数据存储的空间量。此外,此类反重放机制可能不需要专门用于反重放功能的额外电路系统,这与使用先前反重放机制的存储器相比,可缩减存储器的电路系统的大小和/或复杂性。举例来说,此类反重放机制可利用存储器的现有电路系统(例如,存储器装置的现有固件)来提供反重放功能性,而不必添加专门用于反重放功能性的额外(例如,新)组件或电路系统。
20.如本文中所使用,“一”或“数个”可以指某事物中的一或多个,且“多个”可以指这
类事物中的两个或更多个。例如,存储器装置可以指一或多个存储器装置,且多个存储器装置可以指两个或更多个存储器装置。另外,如本文中所使用的指定符“r”、“b”、“s”和“n”,尤其相对于图式中的附图标记,指示如此指定的数个特定特征可与本公开的数个实施例包含在一起。标示之间的数字可相同或不同。
21.本文中的图遵循编号定则,其中第一一或多个数字对应于图号,且其余的数字标识图式中的元件或组件。可通过使用类似数字来标识不同图之间的类似元件或组件。举例来说,101可表示图1中的元件“01”,且类似元件可在图2中表示为201。
22.图1说明根据本公开的实施例的具有数个物理块的存储器阵列101的一部分的图式。存储器阵列101可以是例如闪存存储器阵列,例如nand闪存存储器阵列。作为额外实例,存储器阵列101可以是电阻可变存储器阵列,例如pcram、rram、mmram或自旋力矩传递(stt)阵列等。然而,本公开的实施例不限于特定类型的存储器阵列。此外,存储器阵列101(例如,阵列101的子集或整个阵列201)可为安全存储器阵列,如本文中将进一步描述。此外,虽然图1中未展示,但存储器阵列101可同与其操作相关联的各种外围电路系统一起位于特定半导体裸片上。
23.如图1中所展示,存储器阵列101具有存储器单元的数个物理块107

0(块0)、107

1(块1)、
……
、107

b(块b)。存储器单元可为单电平单元和/或多电平单元,例如二电平单元、三电平单元(tlc)或四电平单元(qlc)。作为实例,存储器阵列101中的物理块的数目可为128个块、512个块或1,024个块,但实施例不限于存储器阵列101中的二的特定幂或任何特定数目个物理块。
24.存储器单元平面中可包含数个存储器单元物理块(例如,块107

0、107

1、
……
、107

b),且裸片上可包含数个存储器单元平面。举例来说,在图1中所展示的实例中,每一物理块107

0、107

1、
……
、107

b可为单个裸片的部分。也就是说,图1中所说明的存储器阵列101的部分可为存储器单元的裸片。
25.如图1中所展示,每一物理块107

0、107

1、
……
、107

b包含存储器单元的耦合到存取线(例如,字线)的数个物理行(例如,103

0、103

1、
……
、103

r)。每一物理块中的行(例如,字线)的数目可为32,但实施例不限于每物理块特定数目的行103

0、103

1、
……
、103

r。此外,虽然图1中未展示,但存储器单元可耦合到感测线(例如,数据线和/或数字线)的列。
26.如所属领域的一般技术人员将了解,每一行103

0、103

1、
……
、103

r可包含数个存储器单元页(例如,物理页)。物理页是指编程和/或感测的单元(例如,作为功能群组一起编程和/或感测的数个存储器单元)。在图1中所展示的实施例中,每一行103

0、103

1、
……
、103

r包括存储器单元的一个物理页。然而,本公开的实施例不限于此。举例来说,在实施例中,每一行可包括存储器单元的多个物理页(例如,耦合到偶数编号的数据线的一或多个偶数存储器单元页,以及耦合到奇数编号的数据线的一或多个奇数存储器单元页)。另外,对于包含多电平单元的实施例,存储器单元的物理页可存储多个数据页(例如,逻辑页)(例如,上部数据页和下部数据页,其中物理页中的每一单元存储朝向上部数据页的一或多个位和朝向下部数据页的一或多个位)。
27.如图1中所展示,存储器单元页可包括数个物理扇区105

0、105

1、
……
、105

s(例如,存储器单元子集)。单元的每一物理扇区105

0、105

1、
……
、105

s可存储数据的数个逻
辑扇区。另外,每一逻辑数据扇区可对应于特定数据页的一部分。作为实例,存储在特定物理扇区中的第一逻辑数据扇区可对应于与第一数据页对应的逻辑扇区,且存储在特定物理扇区中的第二逻辑数据扇区可对应于第二数据页。每一物理扇区105

0、105

1、
……
、105

s可存储系统和/或用户数据,和/或可包含开销数据,例如错误校正码(ecc)数据、逻辑块地址(lba)数据和元数据。
28.逻辑块寻址是主机可用于标识逻辑数据扇区的方案。举例来说,每一逻辑扇区可对应于唯一逻辑块地址(lba)。另外,lba还可对应于(例如,动态地映射到)可指示存储器中的数据的所述逻辑扇区的物理位置的物理地址,例如物理块地址(pba)。数据的逻辑扇区可以是数据的字节数目(例如,256字节、512字节、1,024字节或4,096字节)。然而,实施例不限于这些实例。
29.应注意,用于物理块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字节的数据。
30.图2是根据本公开的实施例的包含主机202和呈存储器装置206形式的设备的计算系统200的框图。如本文中所使用,“设备”可指但不限于多种结构或结构的组合中的任何一种,例如电路或电路系统、一或多个裸片、一或多个模块、一或多个装置或者一或多个系统。此外,在实施例中,计算系统200可包含类似于存储器装置206的数个存储器装置。
31.在图2中所说明的实施例中,存储器装置206可包含具有存储器阵列201的存储器216。存储器阵列201可以类似于先前结合图1描述的存储器阵列101。此外,在实施例中,存储器阵列201(例如,阵列201的子集,或整个阵列201)可为安全阵列(例如,存储器216的将保持受控制的区域)。例如,存储在存储器阵列201中的数据可包含敏感(例如,非用户)数据,例如主机固件和/或待针对敏感应用执行的代码。尽管图2中说明了一个存储器阵列201,但存储器216可包含类似于存储器阵列201的任何数目的存储器阵列。
32.如图2中所说明,主机202可经由接口204耦合到存储器装置206。主机202和存储器装置206可在接口204上通信(例如,发送命令和/或数据)。主机202和/或存储器装置206可为以下各项或为以下各项的部分:笔记本计算机、个人计算机、数码相机、数字录制和重放装置、移动电话、pda、存储卡读取器、接口集线器或支持物联网(iot)的装置,例如支持汽车(例如,车辆和/或运输基础设施)iot的装置或支持医疗(例如,可植入和/或健康监测)iot的装置,以及其它主机系统,并且可包含存储器存取装置(例如,处理器)。所属领域的一般技术人员将理解,“处理器”可以是一或多个处理器,例如并行处理系统、数个协处理器等。
33.接口204可呈标准化物理接口的形式。举例来说,当存储器装置206用于计算系统200中的信息存储时,接口204可为串行高级技术附件(sata)物理接口、外围组件互连高速(pcie)物理接口、通用串行总线(usb)物理接口,或小型计算机系统接口(scsi),以及其它物理连接器和/或接口。然而,大体来说,接口204可提供用于在存储器装置206与具有用于接口204的兼容接收器的主机(例如,主机202)之间传递控制、地址、信息(例如,数据)和其它信号的接口。
34.存储器装置206包含用以与主机202和存储器216(例如,存储器阵列201)通信的控制器208。举例来说,控制器208可发送在存储器阵列201上执行操作(包含感测(例如,读
取)、编程(例如,写入)、移动和/或擦除数据的操作,以及其它操作)的命令。
35.控制器208可包含在与存储器216相同的物理装置(例如,相同裸片)上。替代地,控制器208可包含在以通信方式耦合到包含存储器216的物理装置的单独物理装置上。在实施例中,控制器208的组件可作为分布式控制器分散在多个物理装置中(例如,一些组件在与存储器相同的裸片上,并且一些组件在不同的裸片、模块或板上)。
36.主机202可包含用以与存储器装置206通信的主机控制器(图2未示)。主机控制器可经由接口204向存储器装置206发送命令。主机控制器可与存储器装置206和/或存储器装置206上的控制器208通信以读取、写入和/或擦除数据,以及进行其它操作。此外,在实施例中,主机202可以是如本文中先前描述的具有iot通信能力的支持iot的装置。
37.存储器装置206上的控制器208和/或主机202上的主机控制器可包含控制电路系统和/或逻辑(例如,硬件和固件)。在实施例中,存储器装置206上的控制器208和/或主机202上的主机控制器可为耦合到包含物理接口的印刷电路板的专用集成电路(asic)。并且,存储器装置206和/或主机202可包含易失性和/或非易失性存储器的缓冲器和数个寄存器。
38.举例来说,如图2中所展示,存储器装置可包含电路系统210。在图2中所说明的实施例中,电路系统210包含在控制器208中。然而,本公开的实施例不限于此。举例来说,在实施例中,电路系统210可包含在存储器216中(例如,在同一裸片上)(例如,而不是控制器208中)。电路系统210可包括例如硬件、固件和/或软件。
39.计算系统200(例如,主机202和存储器装置206)可利用基于块链的存储器命令验证来提供反重放(例如,新鲜度)机制,所述反重放机制可有效防止例如mitm重放攻击等附接,并由此确保计算系统200的安全性。举例来说,主机202可生成待在存储器216上(例如,在存储器阵列201上)执行的命令(例如,待包含在所述命令内)的反重放部分。所述命令可包含在块链中的块中,用于验证待在存储器216上执行的命令,且命令的反重放部分可基于(例如,生成自)包含在块链中的先前块中的先前命令。举例来说,主机202可生成块链中的下一块,包含此块中的命令,且基于包含在块链中的先前块中的先前执行命令的反重放部分而生成命令的反重放部分。本文将进一步描述(例如,结合图3)说明此类命令的实例。
40.因而,由主机202生成的反重放部分(在本文中也可被称为新鲜度字段)可随着主机202发出每一新命令而变化。因此,反重放部分可用于验证先前尚未执行命令,如本文中将进一步描述。
41.如本文中所使用,“块链中的块”可包含数据(例如,有效负载)、标头、时间戳、历史等。然而,如本文中所使用,块链中的块不必与先前结合图1所描述的存储器块的大小等同。举例来说,块链中的块可小于、等于和/或大于与架构或标示相关联的特定存储器的块大小面额。
42.针对命令生成的反重放部分可为例如包含在块链中的先前块中的先前命令的反重放部分的密码散列(例如,到所述反重放部分的链接)。密码散列可包括例如sha

256密码散列。
43.作为额外实例,针对命令生成的反重放部分可为针对包含在块链中的先前块中的先前命令的反重放部分生成(例如,计算)的签名。签名可为例如使用非对称密码术(例如,基于公钥和/或私钥)生成的数字签名,且可包括例如椭圆曲线数字签名。作为额外实例,可使用对称密码术(例如,基于主机202与存储器装置206之间共享的唯一机密密钥)生成签
名。在此方法中,可使用消息认证码(mac)函数来计算签名。
44.在一些实施例中,命令可包含与主机202相关联的签名(例如,数字签名),所述签名可由主机202使用对称或非对称密码术生成。与主机202相关联的签名可指示命令是由主机202发出的(例如,确认主机的身份),且因此可在命令的验证期间使用,如本文中将进一步描述。
45.对于包含在块链中的初始(例如,第一)块中的命令(例如,初始命令),主机202可从由主机202生成的随机值(例如,随机数)生成反重放部分(例如,因为块链中还不存在可生成反重放部分的先前块)。举例来说,针对初始命令生成的反重放部分可为随机值的密码散列。主机202可例如使用物理不可克隆函数(puf)或其它随机数生成方法来生成随机值。可响应于存储器装置206的通电(例如,上电和/或加电)而生成初始命令的反重放部分(例如,可初始化新鲜度字段)。
46.在一些实施例中,命令和先前命令可包含在由主机202发出的用于在存储器206上执行的命令的序列(例如,其中的一部分)中(例如,命令是序列中在先前命令之后的下一命令)。在此类实施例中,包含命令的块链中的块可包含命令在命令序列中的位置(例如,次序)的指示。此位置指示可用于确认序列中的命令正以其恰当的次序被执行,且因此可在命令的验证期间使用,如将在本文中进一步描述。
47.主机202可经由接口204将具有反重放部分的命令发送到存储器装置206(例如,到电路系统210)。在接收到命令后,存储器装置206(例如,电路系统210)可使用所接收命令的反重放部分来验证(例如,确定是否验证)命令。如本文中所使用,验证命令可包含和/或指代确保先前尚未在存储器216上执行命令(例如,以确保命令未作为例如mitm重放攻击等附接的部分被欺诈性地重复和/或重新使用)。
48.举例来说,如图2中所展示,电路系统210可包含易失性寄存器214,所述易失性寄存器可包含(例如,存储)包含在块链中的先前块中的先前命令的反重放部分(例如,新鲜度字段),当先前命令由主机202发送到存储器装置206时,电路系统210先前接收到所述先前命令。电路系统210可结合来自主机202的当前命令(例如,当前接收的命令)的反重放部分使用存储在寄存器214中的先前命令的反重放部分来验证当前命令。
49.例如,电路系统210可将当前命令的反重放部分与当前命令的反重放部分的预期值(例如,反重放部分预期为的值)进行比较。此预期值可由电路系统210使用存储在寄存器214中的先前命令的反重放部分,以与主机202生成当前命令的反重放部分的方式匹配的方式来生成(例如,计算)。举例来说,如果当前命令的由主机202生成的反重放部分是先前命令的反重放部分的密码散列,那么由电路系统210生成的预期值可以是存储在寄存器214中的反重放部分的密码散列(例如,sha

256密码散列);如果当前命令的由主机202生成的反重放部分是先前命令的反重放部分的使用非对称密码术生成的数字签名,那么由电路系统210生成的预期值可为存储在寄存器214中的反重放部分的数字签名(例如,使用非对称密码术生成的椭圆曲线数字签名)。在比较指示当前命令的反重放部分与使用存储在寄存器214中的反重放部分生成的期望值匹配后,可验证当前命令。然而,如果比较指示当前命令的反重放部分与预期值不匹配,那么可能无法验证当前命令(例如,因为这可能指示例如mitm重放攻击等攻击正在发生)。
50.作为额外实例,如果当前命令的由主机202生成的反重放部分是先前命令的反重
放部分的使用对称密码术生成的签名,那么电路系统210可使用其自身的机密密钥副本来计算预期值。在比较指示当前命令的反重放部分与使用机密密钥计算的预期值匹配后,可验证当前命令。然而,如果比较指示当前命令的反重放部分与使用机密密钥生成的期望值不匹配,那么可能无法验证当前命令。
51.在所接收命令包含与主机202相关联的签名(例如,数字签名)的实施例中,电路系统210还可使用签名(例如,除了使用反重放部分之外)来验证命令。举例来说,电路系统210可使用公钥和/或私钥来核实签名,且在核实签名后验证命令。然而,如果电路系统210无法核实签名,那么可能无法验证命令。本文中将(例如,结合图8)进一步描述签名的核实的实例。
52.在命令是命令序列的一部分的实施例中,包含命令的块链中的块包含命令在命令序列中的位置的指示,电路系统210还可使用此位置指示(例如,除了使用反重放部分之外)来验证命令。举例来说,电路系统210可使用当前命令的位置指示来核实当前命令是序列中的下一命令(例如,是序列中在先前命令之后的命令),且在核实当前命令是序列中的下一命令后验证当前命令。然而,如果电路系统210无法核实当前命令是序列中的下一命令,那么可能无法验证命令(例如,因为其在序列中无序)。
53.在验证从主机202接收到的命令后,电路系统210可在存储器216上(例如,在存储器阵列201上)执行命令。举例来说,如果命令是程序(例如,写入)命令,那么电路系统210可将与命令相关联的数据编程到存储器216;如果命令是感测(例如,读取)命令,那么电路系统210可感测与来自存储器216的命令相关联的数据。
54.在执行从主机202接收到的命令后,电路系统210可生成命令响应(例如,对命令执行的响应),且经由接口204将命令响应发送到主机202。命令响应可包含命令的执行的结果。举例来说,如果命令是编程命令,那么命令的结果可包含与命令相关联的数据是否被成功编程和/或数据编程于存储器216中的位置的指示;如果命令是感测命令,那么命令的结果可包含作为执行感测命令的结果而感测的数据。
55.命令响应还可包含反重放部分(例如,新鲜度字段)。命令响应的反重放部分可为从主机202接收到的命令的反重放部分(例如,从主机202接收到的命令的反重放部分还可用作命令响应的反重放部分)。此反重放部分还可存储在寄存器214中(例如,代替先前命令的反重放部分)。
56.在一些实施例中,命令响应可包含与存储器装置206相关联的签名(例如,数字签名),所述签名可例如由存储器装置206(例如,电路系统210)使用非对称或对称密码术来生成。与存储器装置206相关联的签名可指示命令响应是由存储器装置206生成和发送的(例如,确认存储器装置的身份)。
57.在接收到命令响应后,主机202可使用命令响应的反重放部分来验证(例如,确定是否验证)命令的执行的结果。举例来说,主机202可将命令响应的反重放部分与由主机202生成(例如,计算)的签名进行比较。在签名的比较指示命令响应的反重放部分与由主机202生成的签名匹配后,可验证命令的执行的结果。然而,如果比较指示命令响应的反重放部分与签名不匹配,那么可能无法验证命令的执行的结果(例如,因为这可能指示例如mitm重放攻击等攻击正在发生)。
58.在命令响应包含与存储器装置206相关联的签名实施例中,主机202还可使用签名
(例如,除了使用反重放部分之外)来验证命令的执行的结果。举例来说,主机202可使用公钥和/或私钥来核实签名,且在核实签名后验证命令的执行的结果。然而,如果主机202无法核实签名,那么可能无法验证命令的执行的结果。本文中将(例如,结合图8)进一步描述签名的核实的实例。
59.在验证命令的执行的结果之后,主机202可以与生成所执行命令的反重放部分的方式类似的方式生成待在存储器216上执行的额外(例如,后续)命令的反重放部分。举例来说,此额外命令可包含在块链中的后续(例如,下一)块中,用于验证待在存储器216上执行的命令,且此额外命令的反重放部分可基于所执行命令(例如,基于所执行命令的反重放部分),所述所执行命令现在已成为块链中的先前块中的先前命令。此额外命令还可包含与主机202相关联的签名(例如,数字签名),和/或可为主机202以类似于现在先前执行的命令的方式发出的命令序列(例如,其中的下一命令)的一部分。
60.在从主机202接收到额外命令后,存储器装置206可以与本文中先前针对现在先前执行的命令所描述的方式类似的方式,使用额外命令的反重放部分来验证额外命令,且在验证额外命令后执行额外命令。例如,存储器装置206可使用现在已成为先前命令的命令的现在存储在寄存器214中的反重放部分,结合额外命令的反重放部分,以与本文中先前针对现在先前执行的命令所描述的方式类似的方式来验证额外命令。
61.在执行额外命令后,存储器装置206可以与本文中先前针对先前执行的命令所描述的方式类似的方式,生成额外命令的命令响应,且将命令响应发送到主机202。额外命令的命令响应可包含由主机202使用以在接收到命令响应后以与先前针对先前执行的命令的命令响应所描述的方式类似的方式验证命令响应的反重放部分。额外命令的额外反重放部分可继续由主机202生成且由存储器装置206使用以在存储器装置206的整个寿命中以此方式验证那些命令。
62.图2中所说明的实施例可包含未说明以免混淆本公开的实施例的额外电路系统、逻辑和/或组件。举例来说,存储器装置206可包含用以锁存通过i/o电路系统在i/o连接器上提供的地址信号的地址电路系统。行解码器和列解码器接收并解码地址信号以存取存储器阵列201。此外,存储器装置206可包含与存储器阵列201分开的主存储器和/或除所述存储器阵列之外还包含主存储器,所述主存储器例如dram或sdram。本文中将(例如,结合图9)进一步描述进一步说明存储器装置206的额外电路系统、逻辑和/或组件的实例。
63.图3说明根据本公开的实施例的可利用基于块链的验证来验证的命令(例如,命令320

1和320

2)的实例。命令320

1和320

2可为由主机202发出的用于在存储器216上执行的命令,如先前结合图2所描述。举例来说,命令320

2可为当前由主机202发出的用于在存储器216上执行的命令,且命令320

1可为先前已在存储器216上执行的先前命令。此外,命令320

1和320

2可包含在块链中的块中,用于验证待在存储器216上执行的命令,如先前结合图2所描述。举例来说,命令320

1可包含在块链中包含命令320

2的块之前的块链中的块中(例如,包含命令320

2的块可为链中在包含命令320

1的块之后的下一块)。
64.如图3中所展示,每个相应命令320

1和320

2可包含所述命令的操作代码和参数。举例来说,命令320

1包含操作代码322

1和参数324

1,且命令320

2包含操作代码322

2和参数324

2。
65.命令的操作代码和参数可包含(例如,提供)由存储器装置206使用以在存储器216
上执行命令的信息。举例来说,命令的操作代码和参数可指示待在存储器216上执行的命令的类型(例如,编程、感测、移动或擦除),和/或存储器216中待执行命令的位置(例如,存储器216中待编程、擦除、移动或感测与命令相关联的数据的位置)。
66.如图3中所展示,每一相应命令320

1和320

2可包含反重放部分(例如,新鲜度字段)。举例来说,命令320

1包含反重放部分326

1,且命令320

2包含反重放部分326

2。
67.命令的反重放部分可基于(例如,生成自)包含在块链中的先前块中的先前命令,如先前结合图2所描述。例如,如图3中所展示,命令320

2的反重放部分326

2可从命令320

1的反重放部分326

1生成。举例来说,反重放部分326

2可为反重放部分326

1的密码散列,或反重放部分326

1的签名,如先前结合图2所描述。
68.命令的反重放部分可用于验证先前尚未执行命令,如先前结合图2所描述。举例来说,反重放部分326

2可用于验证先前尚未在存储器216上执行命令320

2。
69.如图3中所展示,每一相应命令320

1和320

2可包含签名。举例来说,命令320

1包含签名328

1,且命令320

2包含签名328

2。命令的签名可指示命令是由主机202发出的,且可在命令的验证期间使用,如先前结合图2所描述。
70.图4是根据本公开的实施例的包含主机402和存储器装置406的实例系统的框图。主机402和存储器装置406可分别为例如先前结合图2所描述的主机202和存储器装置206。
71.计算装置可在使用层的阶段启动,其中每一层认证并加载后续层并且在每一层提供越来越复杂的运行时间服务。一层可由前一层提供服务并为后续层提供服务,进而创建建立在下层上并且为高阶层提供服务的层的互连网络。如图4中所说明,层0(“l
0”)451和层1(“l
1”)453在主机内。层0 451可向层1 453提供固件派生机密(fds)密钥452。fds密钥452可描述层1 453的代码的身份和其它安全相关数据。在实例中,特定协议(例如稳固物联网(riot)核心协议)可使用fds 452来验证其加载的层1 453的代码。在实例中,特定协议可包含装置标识组合引擎(dice)和/或riot核心协议。作为实例,fds可包含层1固件图像本身、以密码方式标识已授权层1固件的清单、安全启动实施方案的上下文中的已签名固件的固件版本号,和/或装置的安全关键配置设置。装置机密458可用于创建fds 452并存储在主机402的存储器中。
72.如箭头454所说明,主机可将数据传输到存储器装置406。传输的数据可包含公共的外部标识、证书(例如,外部标识证书)和/或外部公钥。存储器装置406的层2(“l
2”)455可接收传输的数据,且在操作系统(“os”)457的操作中以及在第一应用程序459

1和第二应用程序459

2上执行数据。
73.在实例操作中,主机402可读取装置机密458,对层1 453的身份进行散列处理,且执行计算,所述计算包含:
74.k
l1
=kdf[fs(s),hash(“不可变信息”)]
[0075]
其中k
l1
是外部公钥,kdf(例如,美国国家标准与技术研究所(nist)特定公开800

108中定义的kdf)是密钥派生函数(例如,hmac

sha256),且fs(s)是装置机密458。可通过执行以下计算来确定fds 452:
[0076]
fds=hmac

sha256[fs(s),sha256(“不可变信息”)]
[0077]
同样,如箭头456所说明,存储器装置406可将数据传输到主机402。
[0078]
图5是根据本公开的实施例的用于确定数个参数的实例过程的框图。图5是确定包
含外部公共标识、外部证书和外部公钥的参数的实例,如箭头554所示,所述参数随后被发送到存储器装置(例如,图4中的406)的层2(例如,层2 455)。图5中的层0(“l
0”)551对应于图4中的层0 451,且同样,fds 552对应于fds 452,层1 553对应于层1 453,并且箭头554和556分别对应于箭头454和456。
[0079]
来自层0 551的fds 552被发送到层1 553,并由非对称id生成器561使用以生成公共标识(“id
lk public”)565和私有标识567。在缩写的“id
lk public”中,“lk”指示层k(在此实例中为层1),并且“public”指示标识是公开共享的。公共标识565通过向右侧延伸且延伸到主机的层1 553之外的箭头而被说明为共享的。生成的私有标识567用作输入到加密器573中的密钥。加密器573可为用以加密数据的任何处理器、计算装置等。
[0080]
主机的层1 553可包含非对称密钥生成器563。在至少一个实例中,随机数生成器(rnd)536可任选地将随机数输入到非对称密钥生成器563中。非对称密钥生成器563可生成与主机(例如图4中的主机402)相关联的公钥(“k
lk public”)569(被称为外部公钥)和私钥(“k
lk private”)571(被称为外部私钥)。外部公钥569可为到加密器573中的输入(作为“数据”)。加密器573可使用外部私有标识567和外部公钥569的输入来生成结果k'575。外部私钥571和结果k'575可输入到额外加密器577中,从而产生输出k”579。输出k”579是传输到层2(图4的455)的外部证书(“id
l1 certificate”)581。外部证书581能够核实和/或认证从装置发送的数据的来源。作为实例,通过核实证书,从主机发送的数据可与主机的身份相关联,如将结合图7进一步描述。此外,外部公钥(“k
l1 public key”)583可传输到层2。因此,主机的公共标识565、证书581和外部公钥583可传输到存储器装置的层2。
[0081]
图6是根据本公开的实施例的用于确定数个参数的实例过程的框图。图6说明生成装置标识(“id
l2 public”)666、装置证书(“id
l2 certificate”)682和装置公钥(“k
l2 public key”)684的存储器装置(例如,图4中的存储器装置406)的层2 655。
[0082]
如图5中所描述,从主机的层1传输到存储器装置的层2 655的外部公钥(“k
l1 public key”)683由存储器装置的非对称id生成器662使用以生成存储器装置的公共标识(“id
lk public”)666和私有标识668。在缩写的“id
lk public”中,“lk”指示层k(在此实例中为层2),并且“public”指示标识是公开共享的。公共标识666通过向右侧延伸且延伸到层2655之外的箭头而被说明为共享的。生成的私有标识668用作输入到加密器674中的密钥。
[0083]
如图6中所展示,证书核实器699使用外部证书681和公共标识665以及外部公钥683。证书核实器699可核实从主机接收到的外部证书681,并响应于外部证书681通过核实或未通过核实而确定是接受还是丢弃从主机接收到的数据。本文中(例如,结合图7)进一步描述核实外部证书681的另外细节。
[0084]
存储器装置的层2 655可包含非对称密钥生成器664。在至少一个实例中,随机数生成器(rnd)638可任选地将随机数输入到非对称密钥生成器664中。非对称密钥生成器664可生成与存储器装置(例如图4中的存储器装置406)相关联的公钥(“k
lk public”)670(被称为装置公钥)和私钥(“k
lk private”)672(被称为装置私钥)。装置公钥670可为到加密器674中的输入(作为“数据”)。加密器674可使用装置私有标识668和装置公钥670的输入来生成结果k'676。装置私钥672和结果k'676可输入到额外加密器678中,从而产生输出k”680。输出k”680是传输回到层1(图4的453)的装置证书(“id
l2
certificate”)682。装置证书682能够核实和/或认证从装置发送的数据的来源。作为实例,通过核实证书,从存储器装置发送的数据
可与存储器装置的身份相关联,如将结合图7进一步描述。此外,装置公钥(“k
l2 public key”)684可传输到层1。因此,存储器装置的公共标识666、证书682和装置公钥684可传输到主机的层1。
[0085]
在实例中,响应于主机从存储器装置接收到公钥,主机可使用装置公钥对待发送到存储器装置的数据进行加密。反之亦然,存储器装置可使用外部公钥对待发送到主机的数据进行加密。响应于存储器装置接收到使用装置公钥加密的数据,存储器装置可以使用其自身的装置私钥对数据进行解密。同样,响应于主机接收到使用外部公钥加密的数据,主机可使用其自身的外部私钥对数据进行解密。由于装置私钥不与存储器装置外部的另一装置共享,并且外部私钥不与主机外部的另一装置共享,因此发送到存储器装置和主机的数据保持安全。
[0086]
图7是根据本公开的实施例的用于核实证书的实例过程的框图。在图7的所说明实例中,从主机(例如,从图4中的主机402的层1 453)提供公钥783、证书781和公共标识765。证书781和外部公钥783的数据可用作到解密器785中的输入。解密器785可为用于对数据进行解密的任何处理器、计算装置等。证书781和外部公钥783的解密结果可连同公共标识一起用作到次级解密器787中的输入,从而产生输出。如在789处所说明,外部公钥783和来自解密器787的输出可指示证书是否通过核实,从而产生是或否791作为输出。响应于证书通过核实,可接受、解密和处理从已通过核实的装置接收到的数据。响应于所述证书未通过核实,可丢弃、移除和/或忽略从已通过核实的装置接收到的数据。以此方式,可检测和避免发送不法数据的不法装置。作为实例,可标识发送待处理的数据的黑客且不处理黑客数据。
[0087]
图8是根据本公开的实施例的用于核实签名的实例过程的框图。在装置发送可被核实以避免后续抵赖(repudiation)的数据的实例中,可生成签名且与数据一起发送。作为实例,第一装置可作出对第二装置的请求,且一旦第二装置执行所述请求,第一装置就可能指示第一装置从未作出此类请求。抗抵赖方法,例如使用签名,可避免第一装置的抵赖,且确保第二装置可执行请求的任务而无后续困难。
[0088]
主机802(例如,图2中的主机202)可将数据890发送到存储器装置806(例如,图2中的存储器装置206)。在894处,主机802可使用装置私钥871来生成签名896。签名896可传输到存储器装置806。在898处,存储器装置806可使用先前接收到的数据892和外部公钥869来核实签名。以此方式,使用私钥生成签名且使用公钥核实签名。以此方式,用于生成唯一签名的私钥可保持专用于发送签名的装置,同时允许接收装置能够使用发送装置的公钥对签名进行解密以用于核实。这与数据的加密/解密形成对比,所述数据由发送装置使用接收装置的公钥加密且由接收装置使用接收器的私钥解密。在至少一个实例中,装置可通过使用内部密码术过程(例如,椭圆曲线数字签名(ecdsa)或类似过程)来核实数字签名。
[0089]
图9是根据本公开的实施例的实例存储器装置906的框图。存储器装置906可为例如先前结合图2所描述的存储器装置206。
[0090]
如图9中所展示,存储器装置906可包含数个存储器阵列901

1到901

7。存储器阵列901

1到901

7可类似于先前结合图1所描述的存储器阵列101。此外,在图9中所说明的实例中,存储器阵列901

3是安全阵列,存储器阵列901

6的子集911包括安全阵列,并且存储器阵列901

7的子集913和915包括安全阵列。子集911、913和915各自可包含例如4千字节的数据。然而,本公开的实施例不限于存储器阵列或安全阵列的特定数目或布置。
[0091]
如图9中所展示,存储器装置906可包含修复(例如,恢复)块917。修复块917可在存储器装置906的操作期间可能发生的错误(例如,不匹配)的情况下用作数据源。修复块917可位于可由主机寻址的存储器装置906的区域之外。
[0092]
如图9中所展示,存储器装置906可包含串行外围接口(spi)904和控制器908。存储器装置906可使用spi 904和控制器908与主机和存储器阵列901

1到901

7通信,如本文中先前(例如,结合图2)所描述。
[0093]
如图9中所展示,存储器装置906可包含用于管理存储器装置906的安全性的安全寄存器919。举例来说,安全寄存器919可配置应用程序控制器,并与应用程序控制器进行外部通信。此外,安全寄存器919可通过认证命令进行修改。
[0094]
如图9中所展示,存储器装置906可包含密钥921。举例来说,存储器装置906可包含八个不同的槽来存储密钥,例如根密钥、dice

riot密钥和/或其它外部会话密钥。
[0095]
如图9中所展示,存储器装置906可包含电子可擦除可编程只读存储器(eeprom)923。eeprom 923可提供主机可用的安全非易失性区域,其中可擦除和编程各个字节的数据。
[0096]
如图9中所展示,存储器装置906可包含计数器(例如,单调计数器)925。举例来说,存储器装置906可包含六个不同的单调计数器,其中两个可供存储器装置906用于经认证命令,并且其中四个可供主机使用。
[0097]
如图9中所展示,存储器装置906可包含sha

256密码散列函数927和/或hmac

sha256密码散列函数929。存储器装置906可使用sha

256和/或hmac

sha256密码散列函数927和929来生成密码散列,例如,如本文中先前所描述的命令的密码散列,和/或用于验证存储在存储器阵列901

1到901

7中的数据的黄金散列。此外,存储器装置906可支持dice

riot 931的l0和l1。
[0098]
虽然已在本文中说明并描述了具体实施例,但所属领域的一般技术人员将了解,经计算以实现相同结果的布置可取代所展示的具体实施例。本公开既定涵盖本公开的数个实施例的调适或变化。应理解,以说明方式而非限制方式进行了以上描述。在查阅以上描述后,以上实施例和本文未具体描述的其它实施例的组合对于所属领域的一般技术人员来说将是显而易见的。本公开的数个实施例的范围包含使用上述结构和方法的其它应用。因此,本公开的数个实施例的范围应参考所附权利要求书以及此类权利要求被赋予的等同物的完整范围而确定。
[0099]
在前述具体实施方式中,出于简化本公开的目的而将一些特征一起分组在单个实施例中。本公开的此方法不应被理解为反映本公开的所公开实施例必须比在每项权利要求中明确叙述那样使用更多特征的意图。实际上,如所附权利要求书所反映,本发明主题在于单个所公开实施例的不到全部的特征。因此,所附权利要求书特此并入于具体实施方式中,其中每项权利要求独自作为单独实施例。
再多了解一些

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

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

相关文献