一种单调计数器及其单调计数方法与流程

文档序号:23652976发布日期:2021-01-15 13:49阅读:113来源:国知局
一种单调计数器及其单调计数方法与流程

本申请涉及存储技术领域,尤其涉及一种单调计数器及其单调计数方法。



背景技术:

在计算机系统中,需要使用密钥来控制对代码或数据的访问。这些密钥通常需要通过一些介质传递,这就会导致密钥存在被盗取的风险。在安全系统中,基于根密钥来生成各种密钥和其它的安全机制。通常将安全系统内的密钥存储在非易失性存储器中,例如闪存(flash)、只读存储器(rom)等存储器中。尽管如此,生成和编程密钥或根密钥的过程不可避免地会把密钥暴露给一个或多个机器、传送工具、用户,这就使得密钥存在被盗取的风险。

现有技术中,对于采用闪存存储密钥的安全系统,可以通过移除闪存或对闪存进行重新编程,实现密钥破解。因此,如何对需要进行安全存储的代码或数据实现保护,并创建安全的执行环境就至关重要。



技术实现要素:

本申请的目的在于,针对现有技术存在的问题,提供一种单调计数器及其单调计数方法,可以对需要进行安全存储的代码或数据实现保护,并创建安全的执行环境。

为实现上述目的,本申请一实施例提供了一种单调计数器的计数方法,所述单调计数器包括非易失性存储阵列;所述非易失性存储阵列中包括计数值存储区,所述计数值存储区中存储的计数值对应一现存单调计数值;所述方法包括如下步骤:接收第一指令数据,所述第一指令数据包括第一命令数据、第一单调计数值以及第一签名信息;比较所述第一单调计数值以及所述现存单调计数值;若所述第一单调计数值与所述现存单调计数值一致,则根据哈希消息认证码密钥、所述第一命令数据以及所述现存单调计数值,获取第二签名信息;比较所述第二签名信息与所述第一签名信息,若一致,则所述计数值存储区存储的计数值单调变化。

为实现上述目的,本申请另一实施例还提供了一种单调计数器,包括非易失性存储阵列;所述非易失性存储阵列中包括计数值存储区,所述计数值存储区中存储的计数值对应一现存单调计数值;所述单调计数器进一步包括:随机存储单元,被配置为接收并暂存第一指令数据,所述第一指令数据包括第一命令数据、第一单调计数值以及第一签名信息;比较引擎,被配置为比较所述第一单调计数值以及所述现存单调计数值;加密引擎,被配置为在所述比较引擎比较所述第一单调计数值与所述现存单调计数值所得比较结果为一致时,根据哈希消息认证码密钥、所述第一命令数据以及所述现存单调计数值,获取第二签名信息;所述比较引擎,进一步被配置为比较所述第二签名信息与所述第一签名信息,若一致,则使得所述计数值存储区存储的计数值单调变化。

本申请的优点在于:通过更新哈希消息认证码密钥,进而根据哈希消息认证码密钥、计数相关的指令数据中的命令数据以及单调计数值获取相应的签名信息,并与计数相关的指令数据中的签名信息比对,进而使得计数值存储区存储的计数值单调变化,保证单调计数准确性。通过准确的单调计数,可以为其它芯片的读写数据次数提供一个完整的数据记录,以及在数据发送过程中保证数据的不重复性;实现在数据存储过程中保证读写数据的机密性和完整性,提升了数据发送的机密性。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为根据本申请第一实施例提供的单调计数器的单调计数方法的流程图;

图2为根据本申请第二实施例提供的单调计数器的hmac密钥更新的流程图;

图3为根据本申请第二实施例提供的单调计数器的单调计数的流程图;

图4为根据本申请第三实施例提供的单调计数器的内部连接架构图;

图5为根据本申请第四实施例提供的单调计数器的内部连接架构图;

图6为图5所示单调计数器进行hmac密钥更新的一实施例的信号波形示意图;

图7为图5所示单调计数器进行增加单调计数值的一实施例的信号波形示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。实施例中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。

请参阅图1,根据本申请第一实施例提供的单调计数器的单调计数方法的流程图。

所述单调计数器包括非易失性存储阵列(nvm),所述非易失性存储阵列中包括计数值存储区,所述计数值存储区中存储的计数值对应一现存单调计数值。所述方法包括如下步骤:步骤s1、接收第一指令数据,所述第一指令数据包括第一命令数据、第一单调计数值以及第一签名信息;步骤s2、比较所述第一单调计数值以及与计数值存储区中存储的计数值对应的现存单调计数值,若一致,则执行步骤s3,若不一致则结束当前指令、并等待下一次指令;步骤s3、根据哈希消息认证码密钥、所述第一命令数据以及所述现存单调计数值,获取第二签名信息;步骤s4、比较所述第二签名信息与所述第一签名信息,若一致,则执行步骤s5,若不一致则结束当前指令、并等待下一次指令;步骤s5、所述计数值存储区存储的计数值单调变化。

进一步的实施例中,所述方法在接收所述第一指令数据之前,进一步包括:步骤s0、哈希消息认证码密钥更新。所述哈希消息认证码(hmac)密钥更新步骤s0进一步包括:1)接收第二指令数据,所述第二指令数据包括第二命令数据、第二密钥数据以及第三签名信息;2)根据依所述第二密钥数据而产生的临时密钥、所述第二命令数据以及所述第二密钥数据,获取第四签名信息;3)比较所述第四签名信息与所述第三签名信息,若一致,则将所述临时密钥设定为所述哈希消息认证码密钥;若不一致则结束当前指令、并等待下一次指令。可以通过随机存储单元接收并暂存相应的指令数据。指令数据包括指令信息(instruction)、命令类型(cmdtype)、以及更新操作相关的一些数据(例如,计数器地址counteraddr、密钥数据keydata、签名信息signature等)。指令信息的指令头用以指示该指令为某一芯片的特有指令;例如,op1指令代码用以指示该指令为rpmc芯片的特有指令。随机存储单元可以根据相应逻辑单元的写入操作,被写入相应的指令数据。通过在相应签名信息比对一致后,更新哈希消息认证码密钥,可以提高流程操作的准确性,进而为后续单调计数的准确性提供保障。

进一步的实施例中,所述临时密钥还可以依所述第二密钥数据以及根密钥而产生。具体地,所述临时密钥进一步采用以下步骤获取:获取根密钥;根据所述根密钥以及所述第二密钥数据,获取所述临时密钥。所述非易失性存储阵列中可以进一步包括被配置为存储根密钥的根密钥存储区,可以通过逻辑单元读取根密钥存储区存储的根密钥,以作为获取所述临时密钥的基础。可以采用加密引擎对所述根密钥以及所述第二密钥数据进行hmac运算(例如采用hmac-sha256进行计算,或采用其它哈希算法进行运算),获取所述临时密钥,可以提高运算过程的保密性。

进一步的实施例中,可以采用加密引擎对所述临时密钥、所述第二命令数据以及所述第二密钥数据进行hmac运算(例如采用hmac-sha256进行计算),获取所述第四签名信息,以进一步提高运算过程的保密性。

关于步骤s1、接收第一指令数据,所述第一指令数据包括第一命令数据、第一单调计数值以及第一签名信息。可以通过随机存储单元(例如,rpmcsram),接收并暂存相应的指令数据。指令数据包括指令信息、命令类型、以及计数相关的一些数据(例如,计数器地址counteraddr、计数值counterdata、签名信息signature等)。指令信息的指令头用以指示该指令为某一芯片的特有指令;例如,op1指令代码用以指示该指令为rpmc芯片的特有指令。随机存储单元可以根据相应逻辑单元的写入操作,被写入相应的指令数据。

关于步骤s2、比较所述第一单调计数值以及与计数值存储区中存储的计数值对应的现存单调计数值,若一致,则执行步骤s3,若不一致则结束当前指令、并等待下一次指令。可以通过比较引擎对相应的单调计数值进行比较,以判断单调计数值的一致性。若单调计数值一致,则指令继续执行;若不一致,则说明指令代码错误,需要结束当前指令,然后等待下一次指令,从而保证单调计数值的准确性。可以通过更新相应状态寄存器的状态位,以表征错误,然后结束当前指令;例如对于rpmc芯片,可以通过更新扩展状态寄存器的状态位,以表征错误。

关于步骤s3、根据哈希消息认证码密钥、所述第一命令数据以及所述现存单调计数值,获取第二签名信息。采用所述现存单调计数值进行签名信息的获取,可以保证数据的纯净性。需要说明的是,由于所述第一单调计数值以及所述现存单调计数值一致,因此,也可以直接采用所述第一单调计数值进行签名信息的获取。具体地,可以采用加密引擎对所述哈希消息认证码密钥、所述第一命令数据以及所述现存单调计数值进行hmac运算(例如采用hmac-sha256进行计算),获取所述第二签名信息,以提高运算过程的保密性。

关于步骤s4、比较所述第二签名信息与所述第一签名信息,若一致,则执行步骤s5,若不一致则结束当前指令、并等待下一次指令。通过相应签名信息比对可以提高流程操作的准确性,进而为后续单调计数的准确性提供保障。可以通过比较引擎对相应的签名信息进行比较,以判断签名信息的一致性。若签名信息一致,则指令继续执行;若不一致,则说明指令代码错误,需要结束当前指令,然后等待下一次指令,从而保证单调计数值的准确性。可以通过更新相应状态寄存器的状态位,以表征错误,然后结束当前指令;例如对于rpmc芯片,可以通过更新扩展状态寄存器的状态位,以表征错误。

关于步骤s5、所述计数值存储区存储的计数值单调变化。在步骤s4中签名信息比较一致的情况下,可以执行计数值加1操作,并将结果写入计数值存储区。需要说明的是,所述计数值存储区存储的计数值单调变化也可以为将所述计数值更新为所接收到的计数值。

本实施例通过更新哈希消息认证码密钥,进而根据哈希消息认证码密钥、计数相关的指令数据中的命令数据以及单调计数值获取相应的签名信息,并与计数相关的指令数据中的签名信息比对,进而使得计数值存储区存储的计数值单调变化,保证单调计数准确性。通过准确的单调计数,可以为其它芯片(例如flash芯片)的读写数据次数提供一个完整的数据记录,以及在数据发送过程中保证数据的不重复性;实现在数据存储过程中保证读写数据的机密性和完整性,提升了数据发送的机密性。

请一并参阅图2-图3,其中,图2为根据本申请第二实施例提供的单调计数器的hmac密钥更新的流程图,图3为根据本申请第二实施例提供的单调计数器的单调计数的流程图。在本实施例中,所述单调计数器的非易失性存储阵列中包括被配置为存储计数值的计数值存储区、以及被配置为存储根密钥的根密钥存储区;所述单调计数器中还配置有相关外围控制电路,例如,rpmc逻辑单元、rpmc随机存储单元、计数值存储单元、信息寄存器、密钥寄存器、加密引擎、比较引擎以及扩展状态寄存器等。其中,rpmc逻辑单元读取所述计数值存储区中存储的计数值,并暂存至所述计数值存储单元作为现存单调计数值;rpmc逻辑单元读取所述根密钥存储区存储的根密钥,传送给密钥寄存器,以作为获取所述临时密钥的基础。本实施例单调计数器的单调计数方法主要包括hmac密钥更新流程以及单调计数流程。

具体地,如图2所示,hmac密钥更新流程包括如下步骤:将输入指令的相应指令数据写入rpmc随机存储单元进行暂存,相应指令数据包括命令数据(op1指令代码、命令类型、计数器地址等)、密钥数据以及签名信息等(步骤s3);通过rpmc逻辑单元将根密钥存储区中存储的根密钥写入密钥寄存器、将rpmc随机存储单元中的密钥数据写入信息寄存器(步骤s22);通过加密引擎将密钥寄存器与信息寄存器中的数据进行hmac计算,得到临时密钥(步骤s23);将临时密钥写入密钥寄存器、将rpmc随机存储单元中的命令数据、密钥数据写入信息寄存器(步骤s24);通过加密引擎将所述密钥寄存器与所述信息寄存器中的数据进行hmac计算,得到签名信息(步骤s25);通过比较引擎比较步骤s25计算得到的签名信息与rpmc随机存储单元中暂存的签名信息(步骤s26);若一致,则将临时密钥设定为hmac密钥(步骤s27);若不一致,则结束当前指令、并等待下一次指令(步骤s28)。优选地,步骤s28进一步包括:更新扩展状态寄存器的状态位,以表征错误,然后结束当前指令、并等待下一次指令。

具体地,如图3所示,单调计数流程包括如下步骤:将输入指令的相应指令数据写入rpmc随机存储单元进行暂存,相应指令数据包括命令数据(op1指令代码、命令类型、计数器地址等)、单调计数值以及签名信息等(步骤s31);通过比较引擎比较步骤s31输入的单调计数值以及所述单调计数器存储的单调计数值(步骤s32);若一致,则继续执行步骤s34,若不一致,则结束当前指令、并等待下一次指令(步骤s33);将hmac密钥写入密钥寄存器、将rpmc随机存储单元中暂存的命令数据、单调计数值写入信息寄存器(步骤s34);通过加密引擎将密钥寄存器与信息寄存器中的数据进行hmac计算,得到签名信息(步骤s35);通过比较引擎比较步骤s35计算得到的签名信息与rpmc随机存储单元中暂存的签名信息(步骤s36);若一致,则使得计数值存储区中存储的计数值加1(步骤s37);若不一致,则结束当前指令、并等待下一次指令(步骤s38)。优选地,步骤s33以及步骤s38的至少其中之一进一步包括:更新扩展状态寄存器的状态位,以表征错误,然后结束当前指令、并等待下一次指令。其中,步骤s32中用于比较单调计数值的比较引擎与步骤s36中用于比较签名信息的比较引擎,可以采用同一个比较引擎,也可以分别采用相应的比较引擎。

本实施例通过更新哈希消息认证码密钥,进而根据哈希消息认证码密钥、计数相关的指令数据中的命令数据以及单调计数值获取相应的签名信息,并与计数相关的指令数据中的签名信息比对,进而使得计数值存储区的单调计数值单调递增,保证单调计数准确性。通过rpmc芯片的准确的单调计数,可以为其它芯片(例如flash芯片)的读写数据次数提供一个完整的数据记录,以及在数据发送过程中保证数据的不重复性;实现在数据存储过程中保证读写数据的机密性和完整性,提升了数据发送的机密性。

基于同一发明构思,本申请还提供了一种单调计数器。

请参阅图4,根据本申请第三实施例提供的单调计数器的内部连接架构图。如图4所示,在本实施例中,所述单调计数器40包括非易失性存储阵列(nvm)41以及外围控制电路。所述非易失性存储阵列41中包括被配置为存储计数值的计数值存储区411;所述外围控制电路包括随机存储单元(sram)421、比较引擎(compareengine)422以及加密引擎(securityengine)423。

所述随机存储单元421可以被配置为接收并暂存第一指令数据。所述第一指令数据包括第一命令数据、第一单调计数值以及第一签名信息。所述第一命令数据包括指令信息(instruction)、命令类型(cmdtype)、以及计数相关的一些数据(例如,计数器地址counteraddr、计数值counterdata等)。指令信息的指令头用以指示该指令为某一芯片的特有指令;例如,op1指令代码用以指示该指令为rpmc芯片的特有指令。所述随机存储单元421可以根据相应逻辑单元的写入操作,被写入相应的指令数据。

所述比较引擎422可以被配置为比较所述随机存储单元421接收的第一单调计数值以及与所述计数值存储区411中存储的计数值对应的现存单调计数值。在所述比较引擎422比较所得比较结果为一致时,继续执行指令;在比较结果为不一致时,则结束当前指令、并等待下一次指令。通过所述比较引擎422对相应的单调计数值进行比较,以判断单调计数值的一致性:若单调计数值一致,则指令继续执行;若不一致,则说明指令代码错误,需要结束当前指令,然后等待下一次指令,从而保证单调计数值的准确性。可以通过更新相应状态寄存器的状态位,以表征错误,然后结束当前指令;例如对于rpmc芯片,可以通过更新扩展状态寄存器的状态位,以表征错误。所述比较引擎422的比较结果反馈至所述随机存储单元421。

所述加密引擎423可以被配置为在所述比较引擎422比较所述第一单调计数值与所述现存单调计数值所得比较结果为一致时,根据哈希消息认证码密钥、所述第一命令数据以及所述现存单调计数值,获取第二签名信息。采用所述现存单调计数值进行签名信息的获取,可以保证数据的纯净性。需要说明的是,由于所述第一单调计数值以及所述现存单调计数值一致,因此,也可以直接采用所述第一单调计数值进行签名信息的获取。具体地,可以采用加密引擎423对所述哈希消息认证码密钥、所述第一命令数据以及所述现存单调计数值进行hmac运算(例如采用hmac-sha256进行计算,或采用其它哈希算法进行运算),获取所述第二签名信息,以提高运算过程的保密性。

所述比较引擎422进一步被配置为比较所述第二签名信息与所述第一签名信息,若一致,则使得所述计数值存储区411存储的计数值单调变化。通过相应签名信息比对可以提高流程操作的准确性,进而为后续单调计数的准确性提供保障。通过所述比较引擎422对相应的签名信息进行比较,以判断签名信息的一致性:若签名信息一致,则指令继续执行;若不一致,则说明指令代码错误,需要结束当前指令,然后等待下一次指令,从而保证单调计数值的准确性。可以通过更新相应状态寄存器的状态位,以表征错误,然后结束当前指令;例如对于rpmc芯片,可以通过更新扩展状态寄存器的状态位,以表征错误。所述比较引擎422的比较结果反馈至所述随机存储单元421。

在其它实施例中,也可以采用不同的比较引擎,分别进行单调计数值的比较与签名信息的比较。例如,采用第一比较引擎比较所述随机存储单元421接收的第一单调计数值以及与所述计数值存储区411中存储的计数值对应的现存单调计数值;第一比较引擎的比较结果反馈至所述随机存储单元421。采用第二比较引擎比较所述第二签名信息与所述第一签名信息;第二比较引擎的比较结果也反馈至所述随机存储单元421。通过采用两个比较引擎分别进行相应单调计数值的比较以及相应签名信息的比较,使得单调计数值的比较可以直接进行,而签名信息的比较可以先经过寄存器寄存与加密引擎加密。

进一步的实施例中,所述单调计数器40的外围控制电路还包括:密钥寄存器425以及信息寄存器426。所述密钥寄存器425可以被配置为写入并暂存所述哈希消息认证码密钥;所述信息寄存器426可以被配置为写入并暂存所述随机存储单元421中的所述第一命令数据、第一单调计数值;所述加密引擎423进一步根据所述密钥寄存器425中的所述哈希消息认证码密钥、所述信息寄存器426中的所述第一命令数据、第一单调计数值,获取所述第二签名信息。

进一步的实施例中,所述单调计数器40的外围控制电路还包括:第一逻辑单元420以及扩展状态寄存器430。所述第一逻辑单元420可以被配置为通过所述单调计数器40的控制逻辑单元(未图示)接收信号,进而将相应的指令数据写入所述随机存储单元421,以及可以被配置为在所述比较引擎422获取的比较结果为不一致时,更新所述扩展状态寄存器430的状态位,结束当前指令并等待下一次指令。其中,所述第一逻辑单元420可以为所述单调计数器40的rpmc逻辑单元。通过在比较结果为不一致时更新所述扩展状态寄存器430的状态位,以表征错误。

进一步的实施例中,所述单调计数器40的外围控制电路还包括:计数值存储单元429。所述第一逻辑单元420获取所述计数值存储区411中存储的计数值,并暂存至所述计数值存储单元429作为所述现存单调计数值,以用于与所述第一单调计数值比较。即,所述计数值存储单元429中存储有一个易失性的计数值,该易失性的计数值对应于所述计数值存储区411存储的计数值。具体地,所述第一逻辑单元420读取所述计数值存储区411里存储的计数值数据,再通过相应的逻辑算法算出当前的计数值(即所述现存单调计数值),然后写入所述计数值存储单元429中,以作为比较基础。具体地,所述计数值存储单元429采用易失性存储单元。

进一步的实施例中,在签名信息比较一致的情况下,计数值存储区411的计数值加1,即计数值单调递增。需要说明的是,计数值存储区411的计数值单调变化也可以为将计数值存储区411的计数值更新为所接收到的计数值。

进一步的实施例中,所述单调计数器40在接收所述第一指令数据之前,进行哈希消息认证码密钥更新。具体地,所述随机存储单元421进一步可以被配置为在接收所述第一指令数据之前接收并暂存第二指令数据;所述第二指令数据包括第二命令数据、第二密钥数据以及第三签名信息。所述加密引擎423进一步可以被配置为根据依所述第二密钥数据而产生的临时密钥、所述第二命令数据以及所述第二密钥数据,获取第四签名信息。所述比较引擎422进一步可以被配置为比较所述第四签名信息与所述第三签名信息,若一致,则将所述临时密钥设定为所述哈希消息认证码密钥,从而在接收所述第一指令数据之前,进行哈希消息认证码密钥更新。具体地,所述第二命令数据包括指令信息(instruction)、命令类型(cmdtype)、以及更新操作相关的一些数据(例如,计数器地址counteraddr、密钥数据keydata等)。指令信息的指令头用以指示该指令为某一芯片的特有指令;例如,op1指令代码用以指示该指令为rpmc芯片的特有指令。所述随机存储单元421可以根据相应逻辑单元(例如所述第一逻辑单元420)的写入操作,被写入相应的指令数据。通过在相应签名信息比对一致后,更新哈希消息认证码密钥,可以提高流程操作的准确性,进而为后续单调计数的准确性提供保障。

进一步的实施例中,所述临时密钥还可以依所述第二密钥数据以及根密钥而产生。具体地,所述非易失性存储阵列41中进一步包括被配置为存储根密钥的根密钥存储区412。所述密钥寄存器425进一步可以被配置为写入并暂存所述根密钥存储区412中存储的根密钥;所述信息寄存器426进一步可以被配置为写入并暂存所述随机存储单元421中的所述第二密钥数据;所述加密引擎423进一步根据所述根密钥以及所述第二密钥数据,获取所述临时密钥。具体地,所述第一逻辑单元420读取所述根密钥存储区412存储的根密钥,写入所述密钥寄存器425,以作为获取所述临时密钥的基础。可以采用加密引擎423对所述根密钥以及所述第二密钥数据进行hmac运算(例如采用hmac-sha256进行计算,或采用其它哈希算法进行运算),获取所述临时密钥,可以提高运算过程的保密性。

进一步的实施例中,所述密钥寄存器425进一步可以被配置为写入并暂存所述临时密钥;所述信息寄存器426进一步可以被配置为写入并暂存随机存储单元421中的所述第二命令数据以及所述第二密钥数据;从而所述加密引擎423进一步根据所述密钥寄存器425中的临时密钥,与所述信息寄存器426中的所述第二命令数据以及所述第二密钥数据,获取第四签名信息。可以采用加密引擎423对所述临时密钥、所述第二命令数据以及所述第二密钥数据,进行hmac运算(例如采用hmac-sha256进行计算,或采用其它哈希算法进行运算),获取第四签名信息,可以提高运算过程的保密性。

本实施例通过更新哈希消息认证码密钥,进而根据哈希消息认证码密钥、计数相关的指令数据中的命令数据以及单调计数值获取相应的签名信息,并与计数相关的指令数据中的签名信息比对,进而使得计数值存储区存储的计数值单调变化,保证单调计数准确性。通过准确的单调计数,可以为其它芯片(例如flash芯片)的读写数据次数提供一个完整的数据记录,以及在数据发送过程中保证数据的不重复性;实现在数据存储过程中保证读写数据的机密性和完整性,提升了数据发送的机密性。

需要说明的是,在本实施例的描述中,组件之间的连接应做广义理解,例如,可以是电连接或可以相互通讯;可以是直接相连,也可以通过中间媒介间接相连。

请一并参阅图5-图7,其中,图5为根据本申请第四实施例提供的单调计数器的内部连接架构图,图6为图5所示单调计数器进行hmac密钥更新的一实施例的信号波形示意图,图7为图5所示单调计数器进行增加单调计数值的一实施例的信号波形示意图。

如图5所示,在本实施例中,所述单调计数器50在实现存储功能的同时,加入单调递增计数功能,以对需要安全存储的数据实现重放保护。所述单调计数器50包括非易失性存储阵列51以及外围控制电路。所述非易失性存储阵列51中包括被配置为存储计数值的计数值存储区(monotoniccounterflash)511以及被配置为存储根密钥的根密钥存储区(rootkeyflash)512。所述外围控制电路包括增设的rpmc逻辑单元(rpmclogic)520、rpmc随机存储单元(rpmcsram)521、第一比较引擎(compareengine)522、加密引擎(securityengine)523、第二比较引擎(compareengine)524、密钥寄存器(keyregister)525、信息寄存器(messageregister)526、计数值存储单元529以及扩展状态寄存器(extendedstatusregister)530。所述外围控制电路还包括基础的io缓存器540、指令解析器(commanddecoder)541、控制逻辑单元(controllogic)542、带隙基准源(bandgap)543、高压产生器(hvgenerator)544、地址计数器(addresscounter)545、页面缓存器(pagebuffer)546、感测放大器(senseamplifier)547、行解码器(xdecoder)548、列解码器(ydecoder)549。也即,本实施例所述单调计数器50在存储功能的基础上,集成了应答保护单调计数功能。本实施例单调计数器的实现单调计数方式主要包括hmac密钥更新以及单调计数。需要说明的是,所述第一比较引擎522与第二比较引擎524也可以采用同一个比较引擎实现,以节省外围电路所需组件、减少布局所占空间。

具体地,hmac密钥更新的工作原理为:将输入指令的相应指令数据写入rpmc随机存储单元521进行暂存,相应指令数据包括命令数据(op1指令代码、命令类型、计数器地址等)、密钥数据以及签名信息等。将根密钥存储区512中存储的根密钥写入密钥寄存器525、将rpmc随机存储单元521中的密钥数据写入信息寄存器526;具体地,所述rpmc逻辑单元520读取所述根密钥存储区512存储的根密钥,写入所述密钥寄存器525,以作为获取所述临时密钥的基础。通过加密引擎523将密钥寄存器525与信息寄存器526中的数据进行hmac计算,得到临时密钥。将临时密钥写入密钥寄存器525、将rpmc随机存储单元521中的命令数据、密钥数据写入信息寄存器526。通过加密引擎523将所述密钥寄存器525与所述信息寄存器526中的数据进行hmac计算,得到签名信息。通过第二比较引擎524比较加密引擎523计算得到的签名信息与rpmc随机存储单元521中暂存的签名信息;若一致,则将临时密钥设定为hmac密钥;若不一致,则结束当前指令、并等待下一次指令。第二比较引擎524的比较结果反馈至rpmc随机存储单元521。

rpmc随机存储单元521接收并暂存的更新相关指令数据包括:命令数据、密钥数据以及签名信息。命令数据包括指令信息(instruction)、命令类型(cmdtype)、以及更新相关的一些数据(例如,计数器地址counteraddr、密钥数据keydata等)。指令信息的指令头用以指示该指令为某一芯片的特有指令;例如,op1指令代码用以指示该指令为rpmc芯片的特有指令。hmac密钥更新的一实施例的信号波形图如图6所示。

具体地,单调计数的工作原理为:将输入指令的相应指令数据写入rpmc随机存储单元521进行暂存,相应指令数据包括命令数据(op1指令代码、命令类型、计数器地址等)、单调计数值以及签名信息等。通过第一比较引擎522比较rpmc随机存储单元521暂存的单调计数值以及所述计数值存储单元529存储的单调计数值;若一致,则继续执行指令,若不一致,则结束当前指令、并等待下一次指令。继续执行指令为:将hmac密钥写入密钥寄存器525,将rpmc随机存储单元521中的命令数据、计数值存储单元529中的单调计数值写入信息寄存器526。通过加密引擎523将密钥寄存器525与信息寄存器526中的数据进行hmac计算,得到签名信息。通过第二比较引擎524比较加密引擎523计算得到的签名信息与rpmc随机存储单元521中暂存的签名信息;若一致,则使得计数值存储区511中存储的计数值加1;若不一致,则结束当前指令、并等待下一次指令。第一比较引擎522、第二比较引擎524的比较结果均反馈至rpmc随机存储单元521。需要说明的是,由于rpmc随机存储单元521中的单调计数值与计数值存储单元529中的单调计数值一致,因此,也可以直接采用rpmc随机存储单元521中的单调计数值进行签名信息的获取。具体地,所述计数值存储单元529采用易失性单调计数器。

rpmc随机存储单元521接收并暂存的计数相关指令数据包括:命令数据、单调计数值以及签名信息。命令数据包括指令信息(instruction)、命令类型(cmdtype)、以及计数相关的一些数据(例如,计数器地址counteraddr、计数值counterdata等)。指令信息的指令头用以指示该指令为某一芯片的特有指令;例如,op1指令代码用以指示该指令为rpmc芯片的特有指令。增加单调计数值的一实施例的信号波形图如图7所示。

进一步的实施例中,控制逻辑单元542通过指令解析器541、io缓存器540,进而接收外部指令,并将rpmc相关的输入指令传送至rpmc逻辑单元520;rpmc逻辑单元520再将输入指令的相应指令数据写入rpmc随机存储单元521进行暂存。rpmc相关的指令包括但不限于更新指令、单调计数指令等。

进一步的实施例中,rpmc随机存储单元521中配置有输入缓存器5211以及输出缓存器5212,可以被配置为对输入/输出rpmc随机存储单元521的数据进行缓存。rpmc随机存储单元521中还配置有用于暂存临时密钥、hmac密钥的hmac密钥区5213。

进一步的实施例中,在通过第一比较引擎522和/或所述第二比较引擎524获取的比较结果为不一致时,更新扩展状态寄存器530的状态位,以表征错误,然后结束当前指令、并等待下一次指令。

进一步的实施例中,rpmc逻辑单元520获取所述计数值存储区511中存储的计数值,生成相应的单调计数值并暂存至计数值存储单元529,以用于与rpmc随机存储单元521中写入的单调计数值比较。即,计数值存储区511会有一个对应的易失性的计数值,这个易失性的计数值存储在计数值存储单元529中。具体地,rpmc逻辑单元520读取计数值存储区511里存储的计数值数据,再通过相应的算法算出当前的计数值(即现存单调计数值),然后写入计数值存储单元529中,以作为比较基础。

进一步的实施例中,所述单调计数器50的外围控制电路还包括:密钥选择器(keymux)527,可以被配置为对根密钥存储区512中存储的根密钥(所述根密钥通过所述rpmc逻辑单元520从所述根密钥存储区512中读出,并写入密钥选择器527暂存),以及rpmc随机存储单元521的hmac密钥区5213中暂存的临时密钥或hmac密钥进行选择。

进一步的实施例中,所述单调计数器50的外围控制电路还包括:信息选择器(messagemux)528,可以被配置为对计数值存储单元529中存储的单调计数值,以及rpmc随机存储单元521中暂存的指令数据(可以包括相应的单调计数值)进行选择。

进一步的实施例中,所述非易失性存储阵列51中进一步包括被配置为存储非易失性闪存数据的主存储区513,从而实现单调计数功能与存储功能集成。所述主存储区513可根据需要进行设置,在不需要大容量存储时,为了节省成本,主存储区513可以被省略。

进一步的实施例中,所述单调计数器50的外围控制电路还包括:hmac密钥初始化单元(hmackeyinitial)531。所述hmac密钥初始化单元531可以被配置为在被写入相应值时,表征哈希消息认证码密钥已被初始化。即芯片已接收到哈希消息认证码密钥更新命令(updatehmackeycommand),所述hmac密钥初始化单元531被配置为有效状态。所述hmac密钥初始化单元531在接收计数相关指令数据之前被写入相应值,从而被初始化为有效状态,进而允许进入后续的单调计数流程。

进一步的实施例中,所述单调计数器50的外围控制电路还包括:mc初始化单元(monotoniccounterinitial)532;所述mc初始化单元532可以被配置为在被写入相应值时,表征单调计数器已被初始化。所述单调计数器50的外围控制电路还包括:根密钥初始化单元(rootkeyinitial)533;所述根密钥初始化单元533可以被配置为在被写入相应值时,表征根密钥已被初始化。

进一步的实施例中,所述单调计数器50的外围控制电路还包括:rpmc随机存储单元地址计数器(rpmcsramaddresscounter))534。rpmcsram地址计数器534可以被配置为控制数据的偏移地址;具体地,负责计数写到rpmcsram数据的地址,或从rpmcsram读出数据的地址。

所述io缓存器540与外部引脚相连,可以被配置为对输入/输出数据进行缓存。具体地,在本实施例中,所述外部引脚包括:时钟信号引脚clk、片选引脚/cs、输入引脚di、输出引脚do、写保护引脚/wp、屏蔽外部指令引脚/hold或重置引脚/rst。使用输入引脚di写入指令、地址或数据,使用输出引脚do读取数据或状态。

所述指令解析器541可以被配置为对输入的指令进行解析,进而通过所述控制逻辑单元542进行逻辑控制。所述带隙基准源543可以被配置为向芯片提供基准电压。所述高压产生器544可以被配置为向所述非易失性存储阵列51提供工作电压,具体地,为其中的存储单元的字线提供工作电压。所述地址计数器545可以被配置为控制数据的偏移地址,具体地,负责计数写到mvm数据的地址,或从nvm读出数据的地址。所述页面缓存器546可以被配置为选择性地发送输出数据/输入数据。所述感测放大器547被配置为接收位线预充电电压,以提供相应的位线电压至存储单元的位线。所述行解码器548可以被配置为解码行地址信号。所述列解码器549可以被配置为解码列地址信号。

本实施例保证了单调计数准确性,在实现单调计数器的存储功能的同时,加入单调递增计数,以对需要安全存储的数据实现重放保护。利用根密钥和hmac密钥对各个部件创建安全的执行环境,实现在数据存储过程中保证读写数据的机密性和完整性,提升了数据发送的机密性。

关于所述单调计数器50的电路的额外细节可参考现有技术,此处不再赘述。

尽管已经示出和描述了本申请的实施例,本领域的普通技术人员可以理解:在不脱离本申请的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本申请的范围由权利要求及其等同物限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1