一种存储器的硬件秘钥重构方法及装置与流程

文档序号:29973695发布日期:2022-05-11 11:51阅读:169来源:国知局
一种存储器的硬件秘钥重构方法及装置与流程

1.本说明书一个或多个实施例涉及数据安全技术领域,尤其涉及一种存储器的硬件秘钥重构方法及装置。


背景技术:

2.在互联网、物联网等网络应用快速发展的阶段,不同设备之间进行通信时会对信息进行加密传输,对设备进行认证等,这些提高安全性的措施显得越来越重要。加密传输、设备认证等操作都可以利用存储器的硬件秘钥来进行。存储器的硬件秘钥是利用上电后存储器具有的不可避免的内在物理构造的随机差异而确定的秘钥。上电后且未初始化时,存储器的多个存储单元会具有或0或1的偏向性数值,利用这些数值能够构建存储器的硬件秘钥,并可以在后续对存储器的使用中重构该硬件秘钥。但是,随着对存储器的不断使用,受温度、湿度或老化等因素影响,其存储单元的偏向性可能会发生变化。
3.因此,希望能有改进的方案,可以尽可能地降低环境、老化等因素对硬件秘钥重构过程的影响,提高对硬件秘钥重构时的成功率。


技术实现要素:

4.本说明书一个或多个实施例描述了一种存储器的硬件秘钥重构方法及装置,以尽可能地降低环境、老化等因素对硬件秘钥重构过程的影响,提高对硬件秘钥重构时的成功率。具体的技术方案如下。
5.第一方面,实施例提供了一种存储器的硬件秘钥重构方法,包括:
6.当存储器达到预设状态时,基于预设的第一位置信息,读取存储器中多个存储单元的数值,得到第一素材序列;
7.获取存储的第二位置信息,其中,所述第二位置信息包含:上一次秘钥重构中的素材序列中,与第二标准序列相同的子序列的位置信息;所述子序列是基于素材序列中多个数值的翻转概率选择得到的稳定数值序列,所述翻转概率是经过上一次秘钥重构中的信息更新后的数据;
8.基于所述第二位置信息,读取所述第一素材序列中的对应数值,得到第二序列;
9.利用纠错编码算法对所述第二序列进行纠错,恢复出所述第二标准序列;
10.基于所述第二标准序列,重构所述存储器的硬件秘钥。
11.在一种实施方式中,该方法还包括:
12.在恢复出所述第二标准序列之后,基于所述第二序列和所述第二标准序列之间的差异,在本次秘钥重构中更新所述翻转概率。
13.在一种实施方式中,该方法还包括:
14.基于本次秘钥重构中更新后的翻转概率,从所述第一素材序列中选择与所述第二标准序列相同的、具有稳定数值的子序列;
15.利用选择的所述子序列的位置信息更新所述第二位置信息。
16.在一种实施方式中,该方法还包括:
17.在非易失性存储介质中,存储本次秘钥重构中更新后的翻转概率和更新后的第二位置信息。
18.在一种实施方式中,该方法还包括:
19.基于本次秘钥重构中更新后的翻转概率和/或更新后的第二位置信息,生成交易;
20.向区块链网络提交所述交易,以在所述区块链网络中存储所述更新后的翻转概率和/或更新后的第二位置信息。
21.在一种实施方式中,所述基于所述第二序列和所述第二标准序列之间的差异,在本次秘钥重构中更新所述翻转概率的步骤,包括:
22.获取上一次秘钥重构中更新的翻转概率,作为初始翻转概率;
23.对比所述第二序列和所述第二标准序列之间的差异,得到差异数值;
24.基于所述差异数值与所述第一素材序列中数值的位置对应关系,对所述初始翻转概率进行更新,得到本次秘钥重构中更新后的翻转概率。
25.在一种实施方式中,所述利用纠错编码算法对所述第二序列进行纠错的步骤,包括:
26.利用纠错编码算法对所述第二序列进行解码,恢复出种子序列;
27.利用所述纠错编码算法对所述种子序列进行编码,得到所述第二标准序列。
28.在一种实施方式中,采用以下方式对所述硬件秘钥进行注册:
29.当存储器达到所述预设状态时,基于预设的第一位置信息,读取所述存储器中多个存储单元的数值,得到原始素材序列;
30.从所述原始素材序列中获取所述种子序列;
31.利用所述纠错编码算法对所述种子序列进行编码,得到所述第二标准序列;
32.基于所述第二标准序列,确定所述存储器的硬件秘钥;
33.在所述原始素材序列中选择与所述第二标准序列相同的子序列;
34.利用所述子序列的位置信息确定第二位置信息。
35.在一种实施方式中,所述利用纠错编码算法对所述第二序列进行纠错的步骤,包括:
36.获取帮助数据;
37.将所述帮助数据与所述第二序列进行预设运算,得到第三序列;
38.利用纠错编码算法对所述第三序列进行纠错,恢复出第三标准序列;
39.将所述第三标准序列与所述帮助数据进行预设运算,得到所述第二标准序列。
40.在一种实施方式中,所述基于所述第二标准序列,重构所述存储器的硬件秘钥的步骤,包括:
41.获取帮助数据;
42.将所述帮助数据与所述第二标准序列进行预设运算,得到第三标准序列;
43.基于所述第三标准序列确定所述存储器的硬件秘钥。
44.在一种实施方式中,所述存储器为随机存取存储器;所述预设状态包括:所述存储器通电、且未存储数据的状态。
45.第二方面,实施例提供了一种cpu,所述cpu与存储器连接;所述cpu包括:
46.第一读取模块,配置为,当存储器达到预设状态时,基于预设的第一位置信息,读取所述存储器中多个存储单元的数值,得到第一素材序列;
47.获取模块,配置为,获取存储的第二位置信息,其中,所述第二位置信息包含:上一次秘钥重构中的素材序列中,与第二标准序列相同的子序列的位置信息;所述子序列是基于素材序列中多个数值的翻转概率选择得到的稳定数值序列,所述翻转概率是经过上一次秘钥重构中的信息更新后的数据;
48.第二读取模块,配置为,基于所述第二位置信息,读取所述第一素材序列中的对应数值,得到第二序列;
49.纠错模块,配置为,利用纠错编码算法对所述第二序列进行纠错,恢复出所述第二标准序列;
50.重构模块,配置为,基于所述第二标准序列,重构所述存储器的硬件秘钥。
51.在一种实施方式中,该cpu还包括:
52.第一更新模块,配置为,在恢复出所述第二标准序列之后,基于所述第二序列和所述第二标准序列之间的差异,在本次秘钥重构中更新所述翻转概率。
53.在一种实施方式中,该cpu还包括:
54.选择模块,配置为,基于本次秘钥重构中更新后的翻转概率,从所述第一素材序列中选择与所述第二标准序列相同的、具有稳定数值的子序列;
55.第二更新模块,配置为,利用选择的所述子序列的位置信息更新所述第二位置信息。
56.第三方面,实施例提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面中任一项所述的方法。
57.第四方面,实施例提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面中任一项所述的方法。
58.本说明书实施例提供的方法及装置中,在任意一次硬件秘钥重构的过程中,在确定第二序列时,基于第二位置信息从本次秘钥重构中的素材序列中读取,对第二序列进行纠错后得到第二标准序列,基于第二标准序列便能够重构硬件秘钥。其中,第二位置信息是上一次秘钥重构中基于数值的翻转概率从素材序列中得到的稳定位置信息,并且,翻转概率使用上一次秘钥重构中的信息进行了更新,利用这种方式确定的第二位置信息对应的第二序列的数值翻转概率更低,进而从第二序列成功恢复出第二标准序列的可能性也更大。也就是说,即便素材序列中的数值可能会随着环境、老化等因素的影响而出现更多的数值翻转,本实施例在逐次的秘钥重构过程中,通过对翻转概率以及第二位置信息的更新,实现了对第二序列的更长久的、不断的自我更新,因此能够提高对硬件秘钥重构时的成功率。
附图说明
59.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
60.图1为本说明书披露的一个实施例的实施场景示意图;
61.图2为实施例提供的一种存储器的硬件秘钥重构方法的流程示意图;
62.图3-1为一种实施方案中的秘钥注册阶段流程示意图;
63.图3-2为与图3-1对应的一种秘钥重构阶段的流程示意图;
64.图4-1为一种实施方案中的秘钥注册阶段流程示意图;
65.图4-2为与图4-1对应的一种秘钥重构阶段的流程示意图;
66.图5为实施例提供的一种cpu的示意性框图。
具体实施方式
67.下面结合附图,对本说明书提供的方案进行描述。
68.图1为本说明书披露的一个实施例的实施场景示意图。物联网设备包括cpu和存储器,cpu可以获取存储器的硬件秘钥,作为物联网设备的秘钥。物联网设备可以利用该硬件秘钥与服务器进行通信过程中的数据加密或设备认证等操作。cpu在获取硬件秘钥时,可以利用记录的存储器中存储单元的位置信息和翻转概率来确定。本说明书实施例中,上述物联网设备仅仅是一种具体的设备实现,在实际应用中,可以采用任何其他包含cpu和存储器的设备替代。
69.对于诸如物联网设备、智能卡、射频识别设备等物理实体,具有计算能力较低,计算资源有限等问题,采用传统的基于密码学的方法确定秘钥,在应用时存在着较大的障碍。对于包含这些物理实体的应用场景中,可以采用设备的硬件秘钥作为与其他设备进行通信和认证时的设备秘钥。在实际应用场景中,硬件秘钥的应用并不限于以上物理实体,对于具有较高计算能力和计算资源充分的设备来说,同样可以采用硬件秘钥作为其设备秘钥。
70.上述存储器可以包括随机存取存储器(random access memory,ram)和只读存储器(read-only memory,rom)。其中,ram可以包括静态随机存取存储器(static random-access memory,sram)和动态随机存取存储器(dynamic random-access memory,dram)。
71.存储器的内在物理构造能够用来唯一地标识该存储器,也就是标识包含该存储器的设备。在应用中,可以利用基于物理不可克隆函数(physically unclonable functions,puf)的方式来确定存储器的硬件标识。puf是指对一个物理实体输入一个激励,利用该物理实体具有的内在物理构造的随机差异,输出一个不可预测的响应的过程。一般情况下,存储器是通过双稳态逻辑单元具有的两个不同的、但是逻辑上稳定的状态实现数据存储的。这可以理解为,当给存储器一个状态,例如通电(或称为上电),存储器的多个存储单元表现出比较稳定的或0或1的数值的现象。利用通电后存储单元的或0或1的数值,可以确定该存储器的硬件秘钥。
72.对该硬件秘钥的使用包括注册阶段和重构阶段。在注册阶段,cpu可以基于预设的规则以及存储器的多个存储单元的数值,确定硬件秘钥,并使用该硬件秘钥进行数据传输或设备认证。例如,物联网设备在第一次确定硬件秘钥之后,可以利用该硬件秘钥向服务器进行注册,使得服务器获取该硬件秘钥;在后续应用中,服务器可以利用该硬件秘钥对物联网设备进行数据传输和设备认证。出于数据安全等原因,物联网设备自身可以不存储其硬件秘钥。在一些场景下,物联网设备需要基于预设的规则和存储器中多个存储单元的数值,重构出硬件秘钥。
73.而存储器的存储单元在长时间的使用过程中,受周围温度、湿度以及自身老化等
因素影响,其存储单元的数值0或1可能会发生翻转,从而降低对存储器硬件秘钥重构时的成功率。
74.为了提高对硬件秘钥重构时的成功率,本说明书实施例提供了一种存储器的硬件秘钥重构方法,通过cpu执行,具体包括:步骤s210,当存储器达到预设状态时,基于预设的第一位置信息,读取存储器中多个存储单元的数值,得到第一素材序列;步骤s220,获取存储的第二位置信息,该第二位置信息包含:上一次秘钥重构中的素材序列中,与第二标准序列相同的子序列的位置信息;该子序列是基于素材序列中多个数值的翻转概率选择得到的稳定数值序列,翻转概率是经过上一次秘钥重构中的信息更新后的概率;步骤s230,基于第二位置信息,读取第一素材序列中的对应数值,得到第二序列;步骤s240,利用纠错编码算法对第二序列进行纠错,恢复出第二标准序列;步骤s250,基于第二标准序列,重构存储器的硬件秘钥。
75.在本实施例中,在上一次秘钥重构过程中使用重构中的信息对翻转概率进行更新,并基于该翻转概率从素材序列中确定稳定的第二位置信息。在本次秘钥重构中,使用该第二位置信息确定第二序列,能够提取出翻转概率更低的第二序列,进而使得重构秘钥时的成功率也更高。在每次的秘钥重构中通过对翻转概率和第二位置信息的更新,实现了对第二序列的自我更新,即便素材序列中的数值随着环境、老化等因素影响而发生不确定性的翻转,也能通过上述自我更新过程筛选出翻转概率低的数值作为第二序列,因此能提高硬件秘钥重构过程的成功率。
76.图2为实施例提供的一种存储器的硬件秘钥重构方法的流程示意图。该方法通过cpu执行,cpu与存储器连接。cpu可以与一个或多个存储器连接,例如,cpu可以与内存、缓存或非易失性存储器连接等。cpu确定的硬件秘钥可以是任意一个存储器的硬件秘钥。
77.在一种实施方式中,由于ram具有断电数据消失的特性,能够在一定程度上保护秘钥的安全性,防止盗用,因此设备可以选择随机存储器来生成硬件秘钥,即上述存储器为随机存取存储器。例如,上述存储器可以是sram,采用sram来生成秘钥,能够使得数据更稳定,更适合于稳定地重构出秘钥。在实际应用中可以根据需要选择对应的存储器来生成硬件秘钥。
78.图2所示本实施例的方法包括以下步骤s210~s250。
79.在步骤s210中,当存储器达到预设状态时,基于预设的第一位置信息l1,读取存储器中多个存储单元的数值,得到第一素材序列a


80.当存储器是ram,例如是sram时,上述预设状态包括:存储器通电、且未存储数据的状态。sram断电数据会丢失,再次通电后且未存储任何数据时,其具有的物理结构能够呈现比较稳定的偏向性数值,例如存储单元呈现出或0或1的数值。并且sram相比于dram具有更加稳定的逻辑单元,利用sram的物理结构生成的硬件秘钥会更加稳定。
81.在一种实施方式中,上述预设状态也可以是其他设定状态,例如存储器未存储任何数据的状态,或者存储器中第一位置信息l1指示的存储单元未存储任何数据的状态等。
82.其中,第一位置信息l1可以是存储在非易失性存储介质中的数据,非易失性存储介质中的数据断电不丢失,非易失性存储介质例如可以是闪存。第一位置信息l1包括n个存储单元的地址信息。其中n可以是足够大的整数值,以便得到包含足够数量个数值的第一素材序列a

,即第一素材序列a

是包含n个数值的数值序列。在实践中,第一素材序列a

可以
采用数组或向量表示。第一位置信息l1还可以包括用于标识n个存储单元的先后顺序的次序信息。
83.步骤s210在执行时具体可以包括,基于n个存储单元的地址信息读取存储器中该n个存储单元的数值,将该n个存储单元的数值按照上述次序信息进行排列,得到第一素材序列a


84.在每次需要对硬件秘钥重构时,均可以在存储器达到预设状态时,获取第一位置信息l1,并基于该第一位置信息l1,读取存储器中多个存储单元的数值,得到第一素材序列a

。这样,每次需要对硬件秘钥重构时,都能从存储器的固定地址中读取素材序列。
85.当多次对硬件秘钥重构时,可以得到多个素材序列。第一素材序列a

是多个素材序列中的任意一个。任意一个素材序列,可以理解为是包含了用于重构硬件秘钥时需要的素材的数值序列。通常,受外界环境或者老化的影响,每次重构硬件秘钥时读取的素材序列,可能存在少数几位数值发生翻转的情况,这种数值翻转可以是相对于秘钥注册时的原始素材序列中该数值的取值而言的。例如,在原始素材序列中第一位的数值取值为0,在第一素材序列a

中同样的第一位的数值取值变为1,则该第一位数值发生翻转。通常,存储单元的数值发生翻转具有不可预测以及不确定性。
86.步骤s220,获取存储的第二位置信息l2。
87.其中,第二位置信息l2可以存储在非易失性存储介质中,在执行本步骤时从该非易失性存储介质中获取第二位置信息l2。第二位置信息包含n个数值的位置信息,这n个数值的位置信息是:上一次秘钥重构中的素材序列中,与第二标准序列c相同的子序列的位置信息。该子序列是基于素材序列中多个数值的翻转概率选择得到的稳定数值序列,并且翻转概率是经过上一次秘钥重构中的信息更新后的数据。上述多个数值可以是一个素材序列中的全部n个数值,也可以是素材序列中的部分数值。
88.第二标准序列c是用于重构硬件秘钥的关键数值序列,是硬件秘钥注册阶段使用的、不包含翻转数值的准确数值序列。与第二位置信息l2对应,第二标准序列c包含n个数值。一般来说,n是小于n、大于1的整数值。在重构硬件秘钥时,关键的操作是要恢复出第二标准序列c。
89.上一次秘钥重构中的素材序列,例如可以采用a

表示。在上一次秘钥重构中恢复得到第二标准序列c之后,可以从素材序列a

中选择与第二标准序列c相同的子序列,并将该子序列中多个数值对应的位置信息,作为第二位置信息l2。该子序列包含n个数值。
90.上述位置信息,包括第二位置信息l2,可以是数值在素材序列a

中的位置信息,也可以是数值对应的存储单元的地址信息。数值在素材序列a

中的位置信息,可以是数值在素材序列中的次序或其他信息。具体的,第二位置信息l2可以包含n个数值的位置以及n个数值之间的相对位置关系。
91.在上一次秘钥重构中得到第二标准序列c之后,可以基于上一次秘钥重构中的第二序列c

与第二标准序列c的差异,得到素材序列a

中多个数值的翻转概率。素材序列中n个数值的翻转概率可以记录在翻转概率表t中。在从素材序列a

中选择与第二标准序列c相同的子序列时,可以结合翻转概率表t,尽可能选择翻转概率较小的n个数值,得到子序列。采用这种方式得到的子序列中的数值更稳定。
92.第一素材序列a

与上一次秘钥重构中的素材序列a

具有完全相同的结构,但两者
包含的数值可能存在数值上的翻转。一般来说,并不存储素材序列a

和第一素材序列a

,因此无法确定哪些数值发生了翻转。下面以第一素材序列a

为例,采用表1列出与第一素材序列相关a

的数据。
93.表1
[0094][0095]
其中,上述第一素材序列a

包含的多个数值、位置信息和翻转概率仅是一种举例。数值的位置信息还可以采用数值的下标表示。从表1中可知,第一素材序列a

中的每一个数值均存在对应的下标和翻转概率。表1中的最后一行为翻转概率表t的一种示例。每次秘钥重构时读取的素材序列,都是基于预设的固定地址读取的。因此,第一素材序列a

中n个数值的位置,与素材序列a

中n个数值的位置,均一一地对应相同。
[0096]
上述翻转概率,可以采用多种形式表示,例如可以采用百分制数值表示,也可以采用0到1之间的小数表示,或者可以采用整数表示。一般来说,翻转概率数值越大,表示对应的存储单元的数值越容易发生翻转。素材序列中多个数值的翻转概率,或者翻转概率表t,可以存储在非易失性存储介质中。
[0097]
步骤s230,基于第二位置信息l2,读取第一素材序列a

中的对应数值,得到第二序列c


[0098]
其中,第二位置信息l2包含n个数值的位置信息,利用该n个数值的位置信息,从第一素材序列a

中读取对应数值,得到第二序列c

。具体的,第二位置信息l2包含n个数值的位置以及n个数值之间的相对位置关系。在确定第二序列c

时,可以利用第二位置信息l2包含的n个数值的位置,从第一素材序列a

中读取n个对应数值,利用第二位置信息l2包含的n个数值的相对位置关系,对读取的n个对应数值进行排序,得到第二序列c


[0099]
在理想情况下,第一素材序列a

与注册时的原始素材序列完全相同,在这种情况下,第二序列c会与第二标准序列c

完全相同。而在实际中,由于第一素材序列a

中的数值,相对于注册时的原始素材序列,可能存在数值翻转,因此第二序列c

并不完全与第二标准序列c相同,第二序列c

中的个别数值发生了翻转,第二标准序列c是与第二序列c

对应的准确数值序列。
[0100]
在步骤s240中,利用纠错编码算法对第二序列c

进行纠错,恢复出第二标准序列c。
[0101]
其中,纠错编码算法可以包括bch码、重复码和多种码的串联组合等算法。纠错编码算法包含用于标识最大纠错能力的纠错容限这个参数。当素材序列的错误率(即总的翻转概率)不大于该纠错容限时,纠错编码算法能够成功地对第二序列c

进行纠错,恢复出第二标准序列c。当素材序列的错误率大于该纠错容限时,纠错编码算法不能从第二序列c

成功恢复出第二标准序列c,算法会给出恢复失败的提示。
[0102]
上述纠错容限的值可以预先根据素材序列的总翻转概率进行设定,以尽可能多地成功恢复出第二标准序列c。例如,素材序列的总翻转概率是6%,可以将纠错容限的值设定
为12%,使得纠错容限大于通常的总翻转概率,这样能够尽可能提高成功恢复的可能性。但是纠错容限也不能无限制地设置为较大的数值。在这种情况下,为了提高成功恢复第二标准序列的可能性,可以通过本实施例提供的降低第二序列c

错误率的方法。当第二位置信息l2对应的素材序列中数值的翻转概率越低时,第二序列c

的错误率越低。
[0103]
本步骤在具体实施时可以包含多种实施方式,具体的实施方式在后文中详细说明。
[0104]
步骤s250,基于第二标准序列c,重构存储器的硬件秘钥。该硬件秘钥可以是对称秘钥,也可以是非对称秘钥,例如可以是非对称秘钥中的私钥。
[0105]
在重构存储器的硬件秘钥时,可以将第二标准序列c输入哈希函数,将得到的哈希值作为硬件秘钥;也可以是,在得到哈希值时,基于该哈希值确定存储器的硬件秘钥。其中,哈希函数可以采用安全散列算法(secure hash algorithm-256,sha-256)或其他算法。
[0106]
本步骤在具体实施时可以包含多种实施方式,具体的实施方式在后文中详细说明。
[0107]
在本实施例的一种实施方式中,在步骤s240中恢复出第二标准序列c之后,cpu还可以执行以下步骤1~步骤3。
[0108]
步骤1,基于第二序列c

和第二标准序列c之间的差异,在本次秘钥重构中更新步骤s220中提到的翻转概率。
[0109]
为了使得下一次的硬件秘钥重构时能确定包含更稳定数值的第二序列c

,在本次秘钥重构中,在恢复出第二标准序列c之后,可以基于第二序列c

和第二标准序列c之间的差异,更新翻转概率。第二序列c

和第二标准序列c之间的不同数值,是第二序列c

相对于第二标准序列c发生翻转的数值,也是第一素材序列a

相对于注册时使用的素材序列发生翻转的部分数值。
[0110]
本步骤在具体实施时,可以获取上一次秘钥重构中更新后的翻转概率,其中包含了素材序列中多个数值的翻转概率。为了描述方便,将获取的翻转概率称为本次秘钥重构中的初始翻转概率。具体可以从非易失性存储介质中获取初始翻转概率。接着,对比第二序列c

和第二标准序列c之间的差异,得到差异数值,基于该差异数值与第一素材序列a

中数值的位置对应关系,对初始翻转概率进行更新,得到本次秘钥重构中更新后的翻转概率。
[0111]
例如,表2列出了第一素材序列a

、第二标准序列c和第二序列c

之间的位置对应关系。
[0112]
表2
[0113][0114]
其中,第一素材序列a

的具体数值仅仅是一种举例,表2中的第二行是第一素材序列a

中每个数值的位置次序。第二标准序列c为110000111,第二序列c

为110010111,第二
序列c

是基于第二位置信息l2从第一素材序列a

中读取到的,因此第二序列c

中的每个数值与第一素材序列a

中的部分数值分别对应。通过对比第二序列c

和第二标准序列c,可以发现序列中的第5位发生了翻转,第二序列c

中的第5位是第一素材序列a

中的第8位,因此可以利用第8位发生翻转的信息,对初始翻转概率进行更新。
[0115]
在对初始翻转概率进行更新时,可以增加发生翻转的数值的翻转概率,也可以减少未发生翻转的数值的翻转概率,还可以在增加发生翻转的数值的翻转概率的同时,减少未发生翻转的数值的翻转概率。在一种实施方式中,翻转概率还可以采用翻转次数或者翻转比率来表示。
[0116]
在更新翻转概率时,可以对翻转概率表t进行更新。具体的,可以首先从非易失性存储介质中获取存储的翻转概率表t,基于第二序列c

和第二标准序列c之间的差异,更新该翻转概率表t中的翻转概率,得到更新后的翻转概率表t。表t中包含了多个初始翻转概率。
[0117]
在本次秘钥重构中更新翻转概率之后,可以将更新后的翻转概率存储在非易失性存储介质(例如闪存)中。具体的,可以存储更新后的翻转概率表t。
[0118]
步骤2,基于本次秘钥重构中更新后的翻转概率,从第一素材序列a

中选择与第二标准序列c相同的、具有稳定数值的子序列。
[0119]
本步骤在执行时,可以结合更新后的翻转概率表t中记录的翻转概率,从第一素材序列a

中选择翻转概率最小的n个数值,这n个数值构成的子序列与第二标准序列c完全相同。其中,第二标准序列c包含n个数值。选择翻转概率最小的n个数值,可以理解为,所选择的n个数值对应的翻转概率的和是多种选择方案中的最小值。在选择翻转概率最小的n个数值时,n个数值在第一素材序列a

中的位置次序可以不连续,位置次序可以不单调增或不单调减。这种方式能够确保每次秘钥重构时都能从第一素材序列a

中选择到上述子序列。
[0120]
例如,第二标准序列c为110000111,每个数值对应的第一素材序列a

中的位置次序可以分别是:第1位,第8位,第3位,第60位,第9位,第10位,第30位,第29位,第100位。
[0121]
步骤3,利用选择的子序列的位置信息更新第二位置信息。本步骤在执行时,可以直接将选择的子序列的位置信息作为第二位置信息,也可以确定子序列的n个数值在第一素材序列a

中的对应位置,以及n个位置之间的相对位置关系,作为第二位置信息。
[0122]
在步骤3之后,还可以在非易失性存储介质中存储本次秘钥重构中得到的更新后的第二位置信息。
[0123]
本实施例中提供的对翻转概率和第二位置信息进行更新的实施方式,可以应用在任意一次秘钥重构中。
[0124]
在一种实施方式中,执行主体可以将翻转概率和/或第二位置信息通过交易存储在区块链网络中。在执行步骤1时,可以从区块链网络中获取上一次秘钥重构中更新后的翻转概率,即得到初始翻转概率。在得到本次秘钥重构中更新后的翻转概率时,可以基于该翻转概率生成交易tx1,并向区块链网络提交该交易tx1,以在区块链网络中存储本次秘钥重构中更新后的翻转概率。
[0125]
在步骤3之后,即得到本次秘钥重构中更新后的第二位置信息时,可以基于该第二位置信息生成交易tx2,并向区块链网络提交该交易tx2,以在区块链网络中存储本次秘钥重构中更新后的第二位置信息。对应的,在执行步骤s220时,可以从区块链网络中获取存储
的第二位置信息。
[0126]
上述交易tx1和tx2也可以是一个交易,即通过一个交易,将本次秘钥重构中更新后的翻转概率和更新后的第二位置信息存储在区块链网络中。该交易也可以是用于调用智能合约的交易。在每次秘钥重构中得到更新后的翻转概率和/或第二位置信息时,可以向区块链网络提交用于调用智能合约的交易,以使得区块链网络基于该交易执行该智能合约,将翻转概率和/或第二位置信息写入区块链网络。
[0127]
将翻转概率和第二位置信息存储在区块链网络中,能够保证数据安全,不被篡改,提高了重要数据的安全性。
[0128]
在本实施例中,可以仅执行步骤1,也就是仅对翻转概率进行更新,而不执行步骤2和3;也可以执行步骤1~步骤3的方案,对翻转概率和第二位置信息均进行更新。
[0129]
在以上内容中,结合图2所示实施例对本说明书的重点改进之处进行了说明。在图2的基础上,采用不同实施方式执行步骤s240和s250,会得到不同的实施方案。下面结合图3-1、图3-2、图4-1和图4-2,对本说明书实施例的具体实施方案进行说明。为了使得说明更清楚,在对任意一种实施方案进行介绍时,按照从秘钥注册阶段到秘钥重构阶段的顺序进行说明。
[0130]
图3-1为一种实施方案中的秘钥注册阶段流程示意图,其中包括以下步骤a1~a6。图3-1侧重于展示各种数据之间的变换过程,其中并没有显示步骤a1~a6等步骤编号。
[0131]
步骤a1,在存储器达到预设状态时,基于第一位置信息l1,从存储器中读取多个存储单元的数值,得到原始素材序列a。原始素材序列a包含n个数值。在注册阶段,可以多次获取素材序列,利用多个素材序列统计每个数值发生翻转的概率,得到翻转概率表t。例如,可以通过对sram进行多次上电,获取多个素材序列。
[0132]
步骤a2,从原始素材序列a中获取种子序列b,例如获取k位的种子序列b,k为小于n的整数。种子序列b包含的数值在原始素材序列a中的位置信息不必记录和存储。
[0133]
步骤a3,利用纠错编码算法对种子序列b进行编码,得到第二标准序列c,第二标准序列c包含n个数值,一般来说n大于k。
[0134]
步骤a4,基于第三位置信息l3,从原始素材序列a中读取多个存储单元的数值,得到第三标准序列d。第三标准序列d包含n个数值。接着,将第二标准序列c与第三标准序列d进行预设运算,得到帮助数据h。上述预设运算可以包括异或运算。例如,计算c与d的异或结果,得到h。将帮助数据h存储在非易失性存储介质中。第三位置信息l3可以不必存储。在获取第三标准序列d时,可以基于翻转概率表t,从原始素材序列a中选择n个稳定的数值作为第三标准序列d中的数值。
[0135]
步骤a5,在原始素材序列a中选择与第二标准序列c相同的子序列。在选择时,可以利用步骤a1中的翻转概率表t进行选择。
[0136]
步骤a6,利用该子序列的位置信息确定第二位置信息l2。
[0137]
其中,步骤a5和a6对数据进行处理的过程未显示在图3-1中。在上述秘钥注册阶段中,在非易失性存储介质中存储上述第一位置信息l1、第二位置信息l2和翻转概率表t。
[0138]
图3-2为与图3-1对应的一种秘钥重构阶段的流程示意图,其中包括以下步骤a7~a13。图3-2侧重于展示各种数据之间的变换过程,其中并没有显示步骤a7~a13等步骤编号。
[0139]
步骤a7,在存储器达到预设状态时,基于第一位置信息l1,从存储器中读取多个存储单元的数值,得到第一素材序列a


[0140]
步骤a8,获取第二位置信息l2。
[0141]
步骤a9,基于第二位置信息l2,读取第一素材序列a

中的对应数值,得到第二序列c


[0142]
步骤a10,利用纠错编码算法对第二序列c

进行纠错,具体可以利用纠错编码算法对第二序列c

进行解码,恢复出种子序列b,利用纠错编码算法对种子序列b进行编码,得到第二标准序列c。
[0143]
步骤a11,获取帮助数据h,将帮助数据h与第二标准序列c进行预设运算,得到第三标准序列d。基于该第三标准序列d确定存储器的硬件秘钥。预设运算可以是异或运算。
[0144]
步骤a12,基于第二序列c

与第二标准序列c之间的差异,对翻转概率表t进行更新。本步骤也可以在步骤s10之后、在步骤a11之前执行。
[0145]
步骤a13,基于更新后的翻转概率表t,从第一素材序列a

中选择与第二标准序列c相同的、具有稳定数值的子序列,利用选择的子序列的位置信息更新第二位置信息l2。
[0146]
其中,步骤a12和a13对数据进行更新的过程未显示在图3-2中。在上述秘钥重构阶段中,在非易失性存储介质中存储上述第一位置信息l1、更新后的第二位置信息l2和更新后的翻转概率表t。
[0147]
上述图3-1和图3-2分别对一种实施例的秘钥注册流程和秘钥重构流程进行了说明。下面对另一实施例的秘钥注册流程和秘钥重构流程进行说明。
[0148]
图4-1为一种实施方案中的秘钥注册阶段流程示意图,其中包括以下步骤b1~b6。图4-1侧重于展示各种数据之间的变换过程,其中并没有显示步骤b1~b6等步骤编号。
[0149]
步骤b1,在存储器达到预设状态时,基于第一位置信息l1,从存储器中读取多个存储单元的数值,得到原始素材序列a。原始素材序列a包含n个数值。在注册阶段,可以多次获取素材序列,利用多个素材序列统计每个数值发生翻转的概率,得到翻转概率表t。
[0150]
步骤b2,从原始素材序列a中获取种子序列b,例如获取k位的种子序列b,k为小于n的整数。
[0151]
步骤b3,利用纠错编码算法对种子序列b进行编码,得到第三标准序列d,第三标准序列d包含n个数值。
[0152]
步骤b4,基于第二位置信息l2,从原始素材序列a中读取多个存储单元的数值,得到第二标准序列c。在注册阶段,第二位置信息l2可以是预设的,也可以是基于翻转概率表t,从原始素材序列a中选择的稳定数值序列。
[0153]
步骤b5,基于第二标准序列c确定存储器的硬件秘钥。
[0154]
步骤b6,将第二标准序列c与第三标准序列d进行预设运算,得到帮助数据h。上述预设运算可以包括异或运算。
[0155]
在上述秘钥注册阶段中,在非易失性存储介质中存储上述第一位置信息l1、第二位置信息l2、翻转概率表t和帮助数据h。
[0156]
图4-2为与图4-1对应的一种秘钥重构阶段的流程示意图,其中包括以下步骤b7~b13。图4-2侧重于展示各种数据之间的变换过程,其中并没有显示步骤b7~b13等步骤编号。
[0157]
步骤b7,在存储器达到预设状态时,基于第一位置信息l1,从存储器中读取多个存储单元的数值,得到第一素材序列a


[0158]
步骤b8,获取第二位置信息l2。
[0159]
步骤b9,基于第二位置信息l2,读取第一素材序列a

中的对应数值,得到第二序列c


[0160]
步骤b10,获取帮助数据h,将帮助数据h与第二序列c

进行预设运算,得到第三序列d

,利用纠错编码算法对第三序列d

进行纠错,恢复出第三标准序列d。具体的,可以利用纠错编码算法对第三序列d

进行解码,恢复出种子序列b,利用纠错编码算法对种子序列b进行编码,恢复出第三标准序列d。接着,将第三标准序列d与帮助数据h进行预设运算,得到第二标准序列c。其中,预设运算可以是异或运算或其他运算。
[0161]
步骤b11,基于第二标准序列c确定存储器的硬件秘钥。
[0162]
步骤b12,基于第二序列c

与第二标准序列c之间的差异,对翻转概率表t进行更新。
[0163]
步骤b13,基于更新后的翻转概率表t,从第一素材序列a

中选择与第二标准序列c相同的、具有稳定数值的子序列,利用选择的子序列的位置信息更新第二位置信息l2。
[0164]
其中,步骤b12和b13对数据进行更新的过程未显示在图4-2中。在上述秘钥重构阶段中,在非易失性存储介质中存储上述第一位置信息l1、帮助数据h、更新后的第二位置信息l2和更新后的翻转概率表t。
[0165]
对比图3-2和4-2,其中利用纠错编码算法对第二序列c

进行纠错的具体实施方式不同。图3-2中利用步骤a10对第二序列c

进行纠错,得到第二标准序列c(见图3-2中从c

到c的过程),图4-2中利用步骤b10对第二序列c

进行纠错,得到第二标准序列c(见图4-2中从c

到c的过程)。
[0166]
相应的,基于第二标准序列c重构存储器的硬件秘钥的具体实施方式也不同。图3-2中利用步骤a11重构存储器的硬件秘钥(见图3-2中从c到硬件秘钥的过程),图4-2中利用步骤b11重构存储器的硬件秘钥c(见图4-2中从c到硬件秘钥的过程)。
[0167]
在上述实施例中,利用纠错编码算法对数据data1进行编码,得到数据data2,利用纠错编码算法对数据data2进行解码,得到数据data1,以及先解码再编码的过程,具体可以采用常规方式进行,本实施例对此不再详述。
[0168]
上述各个实施例中,在每次重构硬件秘钥的过程中,都可以基于已经恢复出的准确数据,对翻转概率和第二位置信息l2进行更新,这样在下一次秘钥重构中能获得更加准确的第二序列c

,当第二序列c

的准确性提高时,整体的秘钥重构过程的成功率也能够得以提高。并且,对翻转概率和对第二位置信息l2的更新是随着秘钥重构过程不断进行的,因此能够有效地克服由于硬件老化带来的数据准确性不高的问题,从而能够持续地保持较高的秘钥重构成功率。
[0169]
本说明书中,第一位置信息、第二位置信息、第三位置信息、第一素材序列、第二序列、第二标准序列、第三序列、第三标准序列等词语中的“第一”或“第二”等词语,仅仅是为了区分和描述方便,而不具有任何限定意义。
[0170]
上述内容对本说明书的特定实施例进行了描述,其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺
序来执行,并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要按照示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的,或者可能是有利的。
[0171]
图5为实施例提供的一种cpu的示意性框图。cpu与存储器连接。该实施例与图2所示方法实施例相对应。包含该cpu和存储器的设备,可以通过任何具有计算、处理能力的装置、设备、平台、设备集群等来实现。该cpu500包括:
[0172]
第一读取模块510,配置为,当存储器达到预设状态时,基于预设的第一位置信息,读取所述存储器中多个存储单元的数值,得到第一素材序列;
[0173]
获取模块520,配置为,获取存储的第二位置信息,其中,所述第二位置信息包含:上一次秘钥重构中的素材序列中,与第二标准序列相同的子序列的位置信息;所述子序列是基于素材序列中多个数值的翻转概率选择得到的稳定数值序列,所述翻转概率是经过上一次秘钥重构中的信息更新后的数据;
[0174]
第二读取模块530,配置为,基于所述第二位置信息,读取所述第一素材序列中的对应数值,得到第二序列;
[0175]
纠错模块540,配置为,利用纠错编码算法对所述第二序列进行纠错,恢复出所述第二标准序列;
[0176]
重构模块550,配置为,基于所述第二标准序列,重构所述存储器的硬件秘钥。
[0177]
在一种实施方式中,cpu500还包括:
[0178]
第一更新模块560,配置为,在恢复出所述第二标准序列之后,基于所述第二序列和所述第二标准序列之间的差异,在本次秘钥重构中更新所述翻转概率。
[0179]
在一种实施方式中,cpu500还包括:
[0180]
选择模块570,配置为,基于本次秘钥重构中更新后的翻转概率,从所述第一素材序列中选择与所述第二标准序列相同的、具有稳定数值的子序列;
[0181]
第二更新模块580,配置为,利用选择的所述子序列的位置信息更新所述第二位置信息。
[0182]
在一种实施方式中,cpu500还包括:
[0183]
存储模块(图中未示出),配置为,在非易失性存储介质中,存储本次秘钥重构中更新后的翻转概率和更新后的第二位置信息。
[0184]
在一种实施方式中,cpu500还包括:
[0185]
生成模块(图中未示出),配置为,基于本次秘钥重构中更新后的翻转概率和/或更新后的第二位置信息,生成交易;
[0186]
提交模块(图中未示出),配置为,向区块链网络提交所述交易,以在所述区块链网络中存储所述更新后的翻转概率和/或更新后的第二位置信息。
[0187]
在一种实施方式中,第一更新模块560包括:
[0188]
第一获取子模块(图中未示出),配置为,获取上一次秘钥重构中更新的翻转概率,作为初始翻转概率;
[0189]
对比子模块(图中未示出),配置为,对比所述第二序列和所述第二标准序列之间的差异,得到差异数值;
[0190]
更新子模块(图中未示出),配置为,基于所述差异数值与所述第一素材序列中数
值的位置对应关系,对所述初始翻转概率进行更新,得到本次秘钥重构中更新后的翻转概率。
[0191]
在一种实施方式中,纠错模块540包括:
[0192]
第一解码子模块(图中未示出),配置为,利用纠错编码算法对所述第二序列进行解码,恢复出种子序列;
[0193]
第一编码子模块(图中未示出),配置为,利用所述纠错编码算法对所述种子序列进行编码,得到所述第二标准序列。
[0194]
在一种实施方式中,cpu500还包括注册模块(图中未示出),配置为,采用预设操作对所述硬件秘钥进行注册:所述注册模块包括:
[0195]
读取子模块(图中未示出),配置为,当存储器达到所述预设状态时,基于预设的第一位置信息,读取所述存储器中多个存储单元的数值,得到原始素材序列;
[0196]
第二获取子模块(图中未示出),配置为,从所述原始素材序列中获取所述种子序列;
[0197]
第二编码子模块(图中未示出),配置为,利用所述纠错编码算法对所述种子序列进行编码,得到所述第二标准序列;
[0198]
第一确定子模块(图中未示出),配置为,基于所述第二标准序列,确定所述存储器的硬件秘钥;
[0199]
选择子模块(图中未示出),配置为,在所述原始素材序列中选择与所述第二标准序列相同的子序列;
[0200]
第二确定子模块(图中未示出),配置为,利用所述子序列的位置信息确定第二位置信息。
[0201]
在一种实施方式中,纠错模块540包括:
[0202]
第三获取子模块(图中未示出),配置为,获取帮助数据;
[0203]
第一运算子模块(图中未示出),配置为,将所述帮助数据与所述第二序列进行预设运算,得到第三序列;
[0204]
纠错子模块(图中未示出),配置为,利用纠错编码算法对所述第三序列进行纠错,恢复出第三标准序列;
[0205]
第二运算子模块(图中未示出),配置为,将所述第三标准序列与所述帮助数据进行预设运算,得到所述第二标准序列。
[0206]
在一种实施方式中,重构模块550包括:
[0207]
第四获取子模块(图中未示出),配置为,获取帮助数据;
[0208]
第三运算子模块(图中未示出),配置为,将所述帮助数据与所述第二标准序列进行预设运算,得到第三标准序列;
[0209]
第三确定子模块(图中未示出),配置为,基于所述第三标准序列确定所述存储器的硬件秘钥。
[0210]
在一种实施方式中,所述存储器为随机存取存储器;所述预设状态包括:所述存储器通电、且未存储数据的状态。
[0211]
上述实施例中的cpu还可以替换为微控制单元(microcontroller unit,mcu)从而得到一种mcu的实施例,具体内容不再详述,可以参见上述实施例的说明。
[0212]
上述装置实施例与方法实施例相对应,具体说明可以参见方法实施例部分的描述,此处不再赘述。装置实施例是基于对应的方法实施例得到,与对应的方法实施例具有同样的技术效果,具体说明可参见对应的方法实施例。
[0213]
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行图1至图4-2任一项所述的方法。
[0214]
本说明书实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现图1至图4-2任一项所述的方法。
[0215]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于存储介质和计算设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
[0216]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
[0217]
以上所述的具体实施方式,对本发明实施例的目的、技术方案和有益效果进行了进一步的详细说明。所应理解的是,以上所述仅为本发明实施例的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1