数据写入方法、数据读取方法及相关装置与流程

文档序号:33562231发布日期:2023-03-22 15:49阅读:60来源:国知局
数据写入方法、数据读取方法及相关装置与流程

1.本技术实施例涉及计算机技术领域,尤其涉及一种数据写入方法、数据读取方法及相关装置。


背景技术:

2.随着数字技术的发展,很多机密信息都在计算机系统上处理,计算机系统的安全性显得尤为突出。目前计算机系统安全性的保证,通常会从中央处理器cpu硬件和内存控制器上进行设计。由于大部分的机密信息进行加密,并存储于计算机系统的内存上,从而实现对于机密信息的保护,但对于内存中存储的机密信息完整性无法进行检测。如果恶意攻击者,在物理上对加密内存发起攻击,用户不能探测数据的完整性,就会导致业务风险。
3.在一种方法中,采用在双倍速率同步动态随机存储器(ddr5)环境下的内存控制器中增加sha3(第三代安全散列算法)的摘要计算引擎,利用dram(内存)本身的冗余存储空间,比如ecc bit(检错纠错位)来保存数据mac值(message authentication codes(消息身份验证码))。
4.但是,sha3算法虽然能够用于验证数据的完整性,但是其在验证数据完整性时使用的mac值是截断后存储到内存中的,而截断后的mac值仅为28位,不能够对内存中存储的大量比特位的数据进行完整性验证,从而会严重削弱内存数据完整性保护功能(冲突碰撞概率为十万分之一左右);并且mac值存储于内存中的ecc bit位,缩短了原来用于纠错检错的ecc bit,降低纠错码对于内存数据的纠错能力。当内存纠错能力下降后,数据发生错误将无法检测,导致灾难性后果。
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.图1示例性的示出了计算机实现数据安全性处理的基本系统架构示意图。
35.图2示例性的示出了错误检查和纠正校验码实现内存检错纠错的基本系统架构示意图。
36.图3a示例性的示出了利用信息摘要算法,实现写数据完整性验证码生成的一系统框架示意图。
37.图3b示例性的示出了利用信息摘要算法,实现读数据完整性验证码验证的一系统框架示意图。
38.图4a为本技术实施例提供的数据写入方法,实现数据写入的架构示意图。
39.图4b为本技术实施例提供的数据读取方法,实现数据读取的架构示意图。
40.图5是本技术实施例所提供的数据写入方法的一流程示意图。
41.图6是本技术实施例所提供的数据写入方法的另一流程示意图。
42.图7是本技术实施例所提供的数据读取方法的一流程示意图。
43.图8是本技术实施例所提供的数据写入装置的示意图。
44.图9是本技术实施例所提供的数据读取装置的一结构示意图。
具体实施方式
45.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
46.图1示例性的示出了计算机实现数据安全性处理的基本系统架构示意图,如图1所示,该系统架构可以包括:处理器110、内存控制器120、内存130。
47.其中,处理器110主要为高性能计算处理器,一般为cpu(中央处理器)或者gpgpu(通用图形处理器),处理器110可以发送数据读写请求,内存130可以存储指令和数据,处理器110从内存130中获取指令和相应的数据,然后执行指令,并将结果数据写回到内存130中。
48.内存130是程序执行代码及数据的存放区,通常采用dram(动态随机存取存储器)类型的存储芯片。
49.在进行数据安全性保护时,会在处理器110硬件上增加加密保护方案,增加对内存数据的机密性保护。在内存控制器120上,增加加密引擎(即使用密钥进行数据的加解密),对待写入内存的数据,进行加密后,再把密文存储到内存130;而内存130读出数据时,内存控制器120对密文解密后,传输到处理器110进行数据处理。
50.内存130的机密性保护,现在已经有很多方案,但无法检测内存数据的完整性。如果恶意攻击者,在物理上对内存130存储的加密数据发起攻击,用户不能探测内存数据的完整性,导致业务风险,在金融等高安全性要求的领域尤为突出。
51.为了能够实现内存数据完整性的保证,在最新的ddr5(双倍数据率同步动态随机存取存储器)内存技术中增加了ecc(错误检查和纠正)校验码,来提高内存130的稳定性。
52.图2示例性的示出了错误检查和纠正校验码实现内存检错纠错的基本系统架构示意图。
53.如图中所示,该系统可以包括:处理器110、错误检查和纠正模块121、内存130。
54.如图中所示,当内存130因为故障或电噪声等发生错误,使内存数据某些bit位发生反转,导致数据错误。错误检查和纠正模块121(ecc检错纠错控制)在内存130上设置额外的存储单元(图2所示的各个检错纠错位)ecc bits,保存ecc校验数据,当处理器110发出读取数据的请求时,利用错误检查和纠正模块121来纠正错误的内存数据位。通常情况下,ddr5拥有足够的ecc校验数据的存储单元的比特位。但是ecc算法通常提供有限比特位的纠错和检测,并不能检测所有内存数据比特位的错误。
55.有些cpu厂商在内存控制器120中增加sha3(secure hash algorithm-3,单向散列函数)的摘要计算引擎,利用内存130本身的冗余存储空间(比如图2所示的检错纠错位)来保存数据mac值(message authentication code,信息验证码),具体的,如图3a和图3b所示,图3a示例性的示出了利用信息摘要算法,实现写数据完整性验证码生成的一系统框架示意图,图3b示例性的示出了利用信息摘要算法,实现读数据完整性验证码验证的一系统框架示意图。
56.如图中所示,该系统可以包括:信息摘要计算引擎150、内存130。
57.在数据写入阶段,待写入数据data由信息摘要计算引擎150计算信息验证码,信息验证码经过截断后,存入内存130中的冗余存储空间;在数据读取阶段,密文数据即写入时存储的加密数据和信息验证码从内存130中取出后,加密数据进入摘要计算引擎150重新计算,得到计算信息验证码,比较写入时存储的信息验证码与重新得到的计算信息验证码,若两者相等则数据未被篡改;若两者不相当则数据被篡改,发出数据异常信号。其中,在mac计算算法中,mac=sha3(data,addr,mac key,meta),addr为当前待读取加密数据data的内存
地址;mac key为信息验证码计算保护密钥,mac key由集成电路芯片自行生成并保存在内部,外部无法获取mac key;meta为一组元数据,由厂家自行决定。
58.但是,信息摘要算法以及信息验证码截断后为28bit,严重削弱内存130的完整性保护功能(冲突碰撞概率为十万分之一左右),并且会占用用于纠错的检错纠错位,降低内存130对内存数据的纠错能力。当内存130的纠错能力下降后,数据发生错误将无法检测,导致灾难性后果。
59.可以看出,上述数据完整保护的方式会削弱内存130的纠错能力以及完整性保护功能。
60.为了解决上述问题,本技术实施例提供了一种数据写入方法,以实现内存数据完整性保护功能、纠错功能。
61.图4a为本技术实施例提供的数据写入方法,实现数据写入的架构示意图。
62.具体的,数据写入的实现可以包括:
63.步骤1,处理器发出数据写入操作:将待写入数据data写入内存中的待写入数据地址addr的位置处。
64.步骤2,明文data(即原始要写入的未经过加密处理的待写入数据data)经过数据加密模块001加密,如:使用sm4加密算法,其中sm4为分组密码算法,用于实现待写入数据的加密,保护待写入数据data的安全性,得到待写入加密数据(密文data),并将待写入加密数据保存到内存的数据存储位(data bits),数据加密模块001所使用的第二加密密钥可以为安全处理器生成的安全加密参数和第二加密参数(如处理器启动时生成的随机数1)通过第一密钥导出函数生成,如可以使用kdf,kdf为密钥导出函数,由于本技术实施例中对待写入数据data和完整性纠错标签(明文tag)均进行加密,因此需要两个密钥导出函数,为了进行区分,分为第一密钥生成函数kdf1和第二密钥生成函数kdf2。
65.当然,在其他实施例中,具体的第二加密密钥的生成方式,可以根据需要确定。
66.在其他实施例中,待写入数据也可以不经过加密处理,直接存储。
67.步骤3,利用待写入数据地址addr和写入冗余初始值参数(如处理器启动时生成的随机数3),经过计算得到写入冗余初始值(即128位的crc的初始值),计算过程可以自定义(比如直接联结在一起,或者通过一定的计算),本技术实施例所提供的数据写入方法中不指定具体计算,其中随机数3是冗余编码运算模块002(用于执行写入冗余编码运算)的初始值计算参数,和待写入数据地址addr一起导出写入冗余初始值,随机数3是在处理器启动后由处理器硬件一次生成,外部无法获取其内容,在处理器整个工作过程中保持不变,从而可以保证冗余编码运算模块002的稳定性和确定性,为后续数据完整性的验证和数据的纠错提供可靠基础。
68.步骤4,冗余编码运算模块002crc128利用写入冗余初始值和处理器启动时随机生成的冗余多项式(即写入冗余多项式),对待写入加密数据(密文data)计算得到完整性纠错标签(明文tag,即为冗余数据);
69.当然,在不获取写入冗余初始值参数的方案中,则不会基于待写入数据地址addr和写入冗余初始值参数,获取写入冗余初始值,那么直接对所述待写入数据地址和所述待写入加密数据利用写入冗余多项式进行写入冗余编码运算,得到完整性纠错标签。
70.步骤5,待写入数据地址addr和第一加密参数(如处理器启动时生成的随机数2),
经过第二密钥生成函数kdf 2推导出当前的第一加密密钥,利用完整性纠错标签加密模块003(可以为前述sm4加密算法)对完整性纠错标签(明文tag)加密,得到待写入加密完整性纠错标签(密文tag),保存到内存004中对应的完整性验证纠错位,由于冗余编码运算模块002为线性变换,因此为了保护生成的完整性纠错标签的安全性,对完整性纠错标签增加额外的完整性纠错标签加密模块003的加密保护。
71.在其他实施方式中,也可以不使用第一加密参数,直接利用待写入数据地址addr通过第二密钥生成函数推导出当前的第一加密密钥,使用第一加密密钥对完整性纠错标签进行加密,保证完整性纠错标签的安全性。
72.相应的,在读取经过上述方法存储到内存中的数据时,需要对待写入加密完整性纠错标签(待读取加密完整性纠错标签)和待写入加密数据(待读取加密数据)进行解密,并进行数据完整性验证之后,确定数据为完整性时则可以直接读取,数据不完整时则进行纠错再读取,具体的,可以参考图4b,图4b为本技术实施例提供的数据读取方法,实现数据读取的架构示意图。
73.如图中所示,数据读取的实现可以包括:
74.步骤1,处理器发出数据读取操作,从待读取数据地址addr处读出待读取数据data,当然,所述待读取数据地址addr与上述数据写入过程中,各个待写入数据地址addr对应,由于需要验证存储于待读取地址addr中的数据的完整性,确认数据完整性之后才可以读取到正确的待读取数据,因此需要根据写入过程中存储到对应地址处的待读取加密完整性纠错标签来验证对应地址处的待读取加密数据的完整性;
75.根据数据读取请求中的待读取数据地址addr首先读取到数据写入过程中存储的待读取加密完整性纠错标签和待读取加密数据,然后进行完整性验证和纠错,即步骤2。
76.当然,如果在写入过程中存储的是未经过加密的完整性纠错标签和数据,那么在读取过程中读取的即为待读取完整性纠错标签和待读取数据。
77.步骤2,利用待读取数据地址addr和第一解密密钥,第一解密密钥与数据写入时使用的第一加密密钥相同,即可以为随机数2,经过第二密钥生成函数推导出当前的待读取加密完整性纠错标签的第一解密密钥,可以利用sm4对保存在内存004中的对应待读取数据地址addr处的完整性验证纠错位中的待读取加密完整性纠错标签进行解密,得到第一冗余完整性纠错标签;
78.容易理解的是,当数据写入时,如果仅使用待写入数据地址通过第二密钥生成函数推导出待写入完整性纠错标签的第一密钥时,相应的,在数据读取的过程中,也仅需要使用待读取数据地址通过第二密钥生成函数得到第一解密密钥,对待读取加密完整性纠错标签进行解密,从而可以得到正确的第一冗余完整性纠错标签。
79.步骤3,待读取数据地址addr和读取冗余初始值参数,如数据写入时使用的写入冗余初始值参数:随机数3,经过计算得到读取冗余初始值(128位crc的初始值);
80.根据数据写入过程中在冗余编码运算模块002进行写入冗余编码运算时使用的具体参数,相应的在数据读取时,冗余编码运算模块012进行读取冗余编码运算时需要使用相同的计算参数,如数据写入时直接对待写入数据地址和待写入加密数据进行写入编码运算时,数据读取过程中也就相应的直接使用待读取数据地址addr和待读取加密数据进行读取编码运算即可;如果数据写入时使用了待写入数据地址和写入冗余初始值参数得到写入冗
余初始值之后,再对待写入加密数据进行写入冗余编码运算,则在数据读取时,就需要使用待读取数据地址和读取冗余初始值参数得到读取冗余初始值之后,再对待读取加密数据进行读取冗余编码运算。
81.步骤4,冗余编码运算模块012(用于进行读取冗余编码运算)利用步骤3中计算的读取冗余初始值和冗余多项式(即读取冗余多项式),对保存在待读取数据地址addr处的待读取加密数据(密文data),计算得到第二冗余完整性纠错标签。
82.当数据写入过程中,仅使用待写入加密数据和待写入数据地址利用写入冗余多项式进行写入冗余编码运算时,在数据读取的过程中,对应的就需要使用待读取数据地址和待读取加密数据利用读取冗余多项式进行读取冗余编码运算。
83.步骤5,完整性验证与纠错模块013利用第二冗余完整性纠错标签、第一冗余完整性纠错标签进行完整性验证和纠错,当两者对比相等时,确定待读取加密数据完整,并对待读取数据进行解密。对待读取数据进行解密时,通过第一密钥生成函数利用第二解密参数和安全解密参数生成第二解密密钥,安全解密参数和数据写入过程中使用的安全加密参数相同,第二加密密钥和第二解密密钥对应。
84.当然,当数据写入过程中,仅使用安全加密参数进行待写入数据的加密时,在数据读取的过程中,相应的也仅使用安全解密参数完成对待读取加密数据的解密,或者当数据写入时仅使用第二加密参数进行待写入数据的加密时,在数据读取的过程中,同样使用对应的第二解密参数进行待读取加密数据的解密,即保证数据写入和数据读取时使用的加密参数和解密参数一致即可。
85.不相等时,进一步判断,首先,获取待读取加密数据data、第一冗余完整性纠错标签中对应比特位出现错误的错误偏差,然后对错误偏差进行判断,当错误偏差大于纠错阈值时,得到数据异常信息(通知处理器当前待读取数据地址addr处的待读取加密数据发生异常),当错误偏差小于纠错阈值时,通过冗余编码运算模块012对待读取加密数据data进行纠错后,得到纠正待读取加密数据,即data 1;
86.步骤6,纠正待读取加密数据data 1经过数据解密模块010,如数据写入时使用的算法sm4解密得到待读取数据,送入处理器。
87.同样的,根据数据写入过程中使用的加密参数的种类和个数,在数据读取时选择对应的解密参数进行纠正待读取加密数据的解密。如数据写入时使用的待写入数据加密的加密参数为第二加密参数或安全解密参数时,数据读取过程中就需要使用对应的第二解密参数或安全解密参数进行纠正待读取加密数据的解密;当数据写入过程中使用的待写入数据加密的加密参数为第二加密参数和安全加密参数时,在数据读取时就需要使用对应的第二解密参数和安全解密参数进行纠正待读取加密数据的解密。
88.下面,为方便理解,进一步结合数据读写的具体流程,进行进一步的说明,为方便说明本技术实施例提供的技术方案,首先从数据写入方法进行介绍,请参考图5,图5是本技术实施例所提供的数据写入方法的一流程示意图。
89.如图中所示,本技术实施例所提供的数据写入方法可以包括以下步骤:
90.步骤s00,获取待写入数据和所述待写入数据对应的待写入数据地址。
91.处理器发出数据写入请求,将待写入数据写入到内存的待写入地址中,因此,在得到数据写入请求时,即可获取待写入数据和所述待写入数据对应的待写入数据地址。
92.步骤s01,对所述待写入数据地址和所述待写入数据利用写入冗余多项式进行写入冗余编码运算,得到待写入完整性纠错标签,所述待写入完整性纠错标签用于完整性验证和数据纠错。
93.容易理解的是,冗余多项式是指冗余编码运算时使用的编码公式,为冗余编码运算提供算子,是在处理器硬件启动后随机生成的,并在处理器整个工作过程中保持不变,因此,基于处理器随机生成的冗余多项式,不易预测,且在工作过程中保持不变,这样,最终获得到的待写入完整性纠错标签是不容易被破解的,具有较高安全性。
94.所述写入冗余多项式可以提供纠错功能,基于所述写入冗余多项式进行写入冗余编码运算得到的完整性纠错标签可以实现当待写入数据出现错误时的数据纠正,由写入冗余多项式计算出最终的用于实现完整性校验的完整性纠错标签,完整性纠错标签的冲突碰撞概率极低,其概率大约小于1/100million,可以作为完整性验证使用的验证码。
95.由于通常情况下,写入冗余编码运算为线性分组码,这样当使用的待写入数据出现相同的情况时,生成的待写入完整性纠错标签就会相同,容易被破解攻击,安全性较低,因此,为了提高完整性纠错标签的安全性,在一种实施方式中,本技术实施例所提供的数据写入方法还可以包括:
96.获取写入冗余初始值参数;
97.所述对所述待写入数据地址和所述待写入数据利用写入冗余多项式进行写入冗余编码运算,得到待写入完整性纠错标签的步骤包括:
98.根据所述写入冗余初始值参数和所述待写入数据地址得到写入冗余初始值;
99.利用写入冗余多项式和所述写入冗余初始值对所述待写入数据进行写入冗余编码运算,得到所述待写入完整性纠错标签。
100.所述写入冗余初始值参数可以为处理器启动后由处理器硬件一次生成的随机数,外部无法获取其内容,在整个处理器工作过程中保持不变,不容易被外界获取和破坏,具有高安全性,因此,使用写入冗余初始值参数和待写入数据地址获得冗余初始值,可以进一步增强待写入完整性纠错标签的安全性。
101.步骤s02,将所述待写入数据和所述待写入完整性纠错标签写入到内存。
102.可见,本技术实施例所提供的技术方案,根据需要写入的待写入数据和所述待写入数据对应的待写入数据地址,首先利用写入冗余多项式对待写入数据和待写入数据地址进行写入冗余编码运算,得到待写入完整性纠错标签,然后将待写入完整性纠错标签和所述待写入数据写入到内存,待写入完整性纠错标签不仅可以实现在待写入数据出错时对待写入数据的纠错,而且同时可以实现对待写入数据地址对应的待写入数据的完整性验证,无需额外设置用于完整性验证的标签,因此不会占用用于纠错的纠错标签的存储空间,保证纠错性能,因此,可以在不影响对数据的纠错性能,保证纠错能力的情况下,提高内存数据的完整性保护功能。
103.为了进一步增强待写入完整性纠错标签的安全性,在一种实施方式中,还可以对待写入完整性纠错标签进行加密,具体的,请参考图6,图6是本技术实施例所提供的数据写入方法的另一流程示意图。
104.如图中所示,该流程可以包括以下步骤:
105.步骤s10,获取待写入数据和所述待写入数据对应的待写入数据地址。
106.步骤s10的内容可以参考步骤s00的内容,在此不再赘述。
107.步骤s11,对所述待写入数据地址和所述待写入数据利用写入冗余多项式进行写入冗余编码运算,得到待写入完整性纠错标签。
108.步骤s11可以参考步骤s01的内容,在此不再赘述。
109.步骤s12,对所述待写入完整性纠错标签进行加密,得到待写入加密完整性纠错标签。
110.通过对所述待写入完整性纠错标签进行加密,增加对待写入完整性纠错标签自身的保护,可以防止外来攻击,保护待写入完整性纠错标签的安全性,从而在进行完整性验证和纠错时可以确保完整性验证结果的准确性。
111.在一种实施方式中,所述对所述待写入完整性纠错标签进行加密,得到待写入加密完整性纠错标签的步骤可以包括:
112.根据所述待写入数据地址得到第一加密密钥;
113.利用所述第一加密密钥对所述待写入完整性纠错标签进行加密,得到所述待写入加密完整性纠错标签。
114.其中,根据所述待写入数据地址得到第一加密密钥可以通过前述所述的第一密钥生成函数kdf获得,当然,也可以根据其他的密钥生成方法获得,通过使用第一加密密钥对待写入完整性纠错标签进行加密,增加待写入完整性纠错标签的自身抵抗外界攻击的能力,提高待写入完整性纠错标签的安全性。
115.为了更进一步的增强待写入完整性纠错标签的自身防御性能,在一种实施方式中,还可以使用多参数来获得第一加密密钥,具体的,获得第一加密密钥的步骤还可以包括:
116.获取第一加密参数;
117.所述根据所述待写入数据地址得到第一加密密钥的步骤包括:
118.根据所述第一加密参数和所述待写入数据地址得到所述第一加密密钥。
119.所述第一加密参数可以为前述所述的处理器启动时,处理器硬件生成的随机数,从而使得第一加密参数为不可预测,且不可被外界获取的加密参数,进一步增强待写入完整性纠错标签的安全性。
120.当然,在其他实施方式中,还可以使用其他能够增加待写入完整性纠错标签的安全性的参数。
121.步骤s13,将所述待写入数据和所述待写入加密完整性纠错标签写入到内存。
122.通过对待写入完整性纠错标签加密,使得待写入完整性标签不易被破解,可以保证待写入完整性纠错标签的安全性,使得后续验证数据完整性和纠错时可以更加可靠。
123.当然,在另一些实施方式中,还可以通过对待写入数据进行处理,以提高待写入数据的安全性,从而可以提高后续基于待写入数据获得的待写入完整性纠错标签的安全性,具体的,本技术实施例所提供的数据写入方法还可以包括:
124.对所述待写入数据进行加密,得到待写入加密数据。
125.容易理解的是,通过加密处理可以保证待写入数据的安全性。
126.在一种具体实施方式中,所述对所述待写入数据进行加密,得到待写入加密数据的步骤包括:
127.根据安全加密参数得到第二加密密钥,所述安全加密参数通过安全处理器获得;
128.利用所述第二加密密钥对所述待写入数据进行加密,得到所述待写入加密数据。
129.安全处理器设置安全加密参数,用于生成安全加密密钥,可以保证待写入数据的安全性。
130.当然,在一种具体实施例中,第一加密密钥可以直接为安全加密参数。
131.在另一种具体实施方式中,为了进一步保证第二加密密钥的保密性能,提高对于待写入数据的安全性保护,在一种实施方式中,所述对所述待写入数据进行加密,得到待写入加密数据的步骤还可以包括:
132.获取第二加密参数;
133.所述得到所述第二加密密钥的步骤包括:
134.根据所述第二加密参数和所述安全加密参数得到所述第二加密密钥;
135.利用所述第二加密密钥对所述待写入数据进行加密,得到所述待写入加密数据。
136.其中,所述第二加密参数可以为cpu中央处理器启动时生成的随机数,是由处理器启动后处理器硬件一次生成,外部去其内容,在处理器整个工作过程中保持不变,且具有随机性,因此,可以防御外部攻击,提高待写入数据的防御能力,进而基于所述第二加密参数和所述安全加密参数得到第二加密密钥提高待写入数据的安全性。
137.当然,第二加密参数也可以为其他的参数,能够增强对于仅使用安全加密参数获得的第二加密密钥的安全性即可。
138.得到待写入加密数据后,进一步将所述待写入加密数据和所述待写入完整性纠错标签写入到内存。
139.这样,一个待写入数据就会有对应的用于完整性验证和数据纠错功能的待写入完整性纠错标签,可以实现对每一个存入到内存中的待写入数据实现完整性验证和数据纠错,提高数据的安全性,并且每一个存储到内存中的待写入数据均为加密处理得到的待写入加密数据,进一步保证待写入数据的安全性,可以在提高待写入数据安全性的同时,增加待写入数据的完整性验证和纠错的功能。
140.为了能够保证待写入数据的安全性的同时,增强待写入完整性纠错标签的安全性,在另一些实施方式中,还可以将对所述待写入数据进行加密处理和对所述待写入完整性纠错标签进行加密处理的方式进行结合,具体的,本技术实施例所提供的数据写入方法还可以包括:
141.首先,获取待写入数据和所述待写入数据对应的待写入数据地址。
142.然后,为了能够提高待写入数据本身的安全性,可以对所述待写入数据进行加密,得到待写入加密数据。
143.当然,对所述待写入数据进行加密时,可以通过采用单参数获得第二加密密钥的方式也可以所采用多参数获得第二加密密钥的方式,如采用单参数的方式获得第二加密密钥时,可以为:
144.根据安全加密参数得到第二加密密钥,所述安全加密参数通过安全处理器获得;
145.利用所述第二加密密钥对所述待写入数据进行加密,得到所述待写入加密数据。
146.通过安全加密参数获得到第二加密密钥,可以提高待写入数据本身的安全性。在另一种具体实施方式中,为了不容易被外界破坏,还可以增加多参数的方式获得第二加密
密钥,具体的可以为:
147.获取第二加密参数和安全加密参数,根据所述第二加密参数和所述安全加密参数得到所述第二加密密钥。
148.由于第二加密参数可以为不容易被外界获取且本身就有特殊性的参数,如前述所述的处理器启动时一次生成的随机数,这样,可以通过增加额外的不易被破解的加密参数结合安全加密参数进一步提高待写入数据的安全性。
149.在得到待写入加密数据后,进一步的结合待写入加密数据和待写入数据地址利用写入冗余多项式进行写入冗余编码运算,得到待写入完整性纠错标签。
150.当然,为了增加写入冗余编码运算的安全性,还可以使用能够提高冗余编码运算预防性能的写入冗余初始值参数,从而基于待写入数据地址和写入冗余初始值参数获得写入冗余初始值,进一步结合所述待写入加密数据,得到所述待写入完整性纠错标签。
151.接着,为了提高待写入完整性纠错标签的安全性,还可以对待写入完整性纠错标签进行加密,得到待写入加密完整性纠错标签。
152.具体的待写入完整性纠错标签的加密方式可以参考前述的实施例,当然,也可以更换使用其他类型的第一加密参数或者增加获得到第一加密密钥的密钥生成参数的数量,即增加第一加密参数的使用个数。
153.最后,将所述待写入加密数据和所述待写入加密完整性纠错标签写入到内存。
154.这样,通过对待写入数据和待写入完整性纠错标签同时采用加密的处理方式,可以同时实现待写入数据的安全性和待写入完整性纠错标签的安全性,从而可以基于待写入加密完整性纠错标签实现对待写入数据地址对应的待写入数据的完整性验证以及在待写入数据出错时对待写入数据的纠错,利用待写入数据和待写入数据地址,实现对于待写入数据的安全性保护、完整性验证、待写入数据错误纠正,因此,可以在不影响对数据的纠错性能,保证纠错能力的情况下,同时提高内存数据的完整性保护功能和待写入数据的安全性。
155.将待写入数据和对应的待写入完整性纠错标签写入到内存后,当处理器发出数据读取请求时,可以通过待写入完整性纠错标签对待写入数据进行完整性验证以及数据纠错,从而得到正确的需要读取的数据,即数据写入过程中存储到内存中的原始的完整的待写入数据。
156.为方便理解,下面从数据读取方面进行说明,请参考图7,图7是本技术实施例所提供的数据读取方法的一流程示意图。
157.如图中所示,该流程可以包括以下步骤:
158.步骤s20,获取待读取数据地址存储的待读取数据,和与所述待读取数据对应的待读取完整性纠错标签。
159.所述待读取数据地址包括如前述实施例任一项所述的数据写入方法中的待写入数据地址,所述待读取完整性纠错标签包括如前述实施例任一项所述的数据写入方法中写入的待写入完整性纠错标签。
160.容易理解的是,在另一些实施方式中,当数据写入的过程中,写入的是待写入加密数据和待写入加密完整性纠错标签时,数据读取时,获取的相应的为待读取加密数据和待读取写入加密完整性纠错标签。
161.当数据写入的过程中,写入的是待写入加密数据和待写入完整性纠错标签时,相应的,数据读取时,获取的为待读取加密数据和待读取完整性纠错标签。
162.当数据写入的过程中,写入的是待写入数据和待写入加密完整性纠错标签时,相应的,数据读取时,获取的为待读取数据和待读取加密完整性纠错标签。
163.即读取某一数据地址中的数据和存储到内存中的某一数据地址中的数据是对应的,因此,可以利用内存中预先写入的对应数据的待读取完整性纠错标签或者待读取加密完整性纠错标签进行数据的完整性验证并纠错之后,读取到正确的数据。
164.步骤s21,根据所述待读取完整性纠错标签,获取第一冗余完整性纠错标签。
165.对应于数据写入时的实现流程,在数据读取时需要进行数据完整性验证和纠错。
166.当数据写入过程中写入的是待写入完整性纠错标签时,在读取时,获取的为待读取完整性纠错标签。
167.当然,在另一种具体实施方式中,当数据写入过程中写入的是待写入加密完整性纠错标签时,在读取时,获取的即为待读取加密完整性纠错标签,此时需要对待读取加密完整性纠错标签进行解密之后在进行数据的完整性验证。
168.因此,本技术实施例所提供的数据读取方法的步骤还可以包括:
169.对所述待读取加密完整性纠错标签进行解密,获取第一冗余完整性纠错标签。
170.根据数据写入时的步骤,可以知道对待读取加密完整性纠错标签解密之后,才能够得到适用于完整性验证的数据信息,即第一冗余完整性纠错标签。
171.为了使得解密得到的所述第一冗余完整性纠错标签能够作为数据完整性验证和纠错的基础,因此解密时所需要的参数要与前述数据写入方法中所使用的加密参数相同。
172.具体的,所述对所述待读取加密完整性纠错标签进行解密,得到第一冗余完整性纠错标签的步骤可以包括:
173.利用所述待读取数据地址得到第一解密密钥,所述第一解密密钥与第一加密密钥对应,所述第一加密密钥用于在数据写入时对完整性纠错标签进行加密,得到所述待写入加密完整性纠错标签;
174.利用所述第一解密密钥对所述待读取加密完整性纠错标签进行解密,得到所述第一冗余完整性纠错标签。
175.由于数据写入过程中使用的第一加密密钥是根据待写入数据地址获得的,为了保证数据读取时对于数据完整性验证的实现,同样的,在对待读取加密完整性纠错标签进行解密时,所使用的解密密钥同样需要使用与数据写入方法中的待写入数据地址对应的待读取数据地址得到第一解密密钥。
176.当然,当数据写入过程中为了进一步提高完整性纠错标签在加密时的安全性,而使用了双重参数(即第一加密参数和待写入数据地址)进行加密时,数据读取过程中,同样需要使用对应的双重参数得到解密密钥,从而顺利完成对于待读取加密数据的解密。
177.具体的,对所述待读取加密数据解密的过程还可以包括:
178.获取第一解密参数,所述第一解密参数与第一加密参数对应,所述第一加密参数用于在数据写入时获取所述第一加密密钥;
179.所述利用所述待读取数据地址得到第一解密密钥的步骤包括:
180.利用所述第一解密参数和所述待读取数据地址得到第一解密密钥。
181.这样,可以与数据写入过程中进行安全性保护所使用的密钥生成参数形成对应,得到适用于该类型的待读取加密完整性纠错标签的解密密钥。
182.步骤s22,对所述待读取数据和所述待读取数据地址利用读取冗余多项式进行读取冗余编码运算,得到第二冗余完整性纠错标签。
183.所述读取冗余多项式与前述任一项所述的数据写入方法中的写入冗余多项式对应,这样可以保证得到的第二冗余完整性纠错标签能够适用于在数据写入时和数据读取时的同一数据地址中数据的完整性验证与纠错。
184.当然,当在数据写入的过程中,写入的是待写入数据时,数据读取获取的即为待读取数据,此时,在得到所述第二冗余完整性纠错标签时,就需要使用待加密数据;而当在数据写入的过程中,写入的是待写入加密数据时,数据读取获取的即为待读取加密数据,此时,在得到所述第二冗余完整性纠错标签时,就需要使用待读取加密数据。
185.为此,具体的,本技术实施例所提供的数据读取方法还可以包括:
186.对所述待读取加密数据和所述待读取数据地址利用读取冗余多项式进行读取冗余编码运算,得到第二冗余完整性纠错标签。
187.待读取加密数据和待写入加密数据为对应关系,根据数据写入的过程,相应的,在验证数据是否为完整性的时候,需要使用待读取加密数据,作为第二冗余完整性纠错标签的生成参数,这样,才能够确保最终确定的数据完整性的准确性。
188.为了保证数据的安全性,当在数据写入的时候增加了保护数据安全性的其他参数进行写入冗余编码运算时,相应的数据读取的过程中也需要使用同样的参数来完成读取冗余编码运算。
189.具体的,所述数据读取方法还可以包括:
190.获取读取冗余初始值参数;
191.所述对所述待读取数据和所述待读取数据地址利用读取冗余多项式进行读取冗余编码运算,得到第二冗余完整性纠错标签的步骤包括:
192.根据所述读取冗余初始值参数和所述待读取数据地址得到读取冗余初始值;
193.利用所述读取冗余多项式和所述冗余初始值对所述待读取数据进行读取冗余编码运算,得到所述第二冗余完整性纠错标签。
194.所述读取冗余初始值和前述所述数据写入方法中的写入冗余初始值相同,相应的所述读取冗余编码运算和所述写入冗余编码运算也相同,从而可以得到对应的第二冗余完整性纠错标签,保证数据完整性验证的可靠性。
195.容易理解的是,当所述待读取数据为待读取加密数据时,相应的在使用冗余初始值参数进行读取冗余编码运算的过程中,也需要使用待读取加密数据,具体的,获取第二冗余完整性纠错标签的步骤还可以包括:
196.利用所述读取冗余多项式和所述冗余初始值对所述待读取加密数据进行读取冗余编码运算,得到所述第二冗余完整性纠错标签。
197.这样,可以通过使用相对应的冗余编码运算参数,得到对等的数据,确保数据完整性验证的准确性。
198.步骤s23,确定第一冗余完整性纠错标签是否等于第二冗余完整性纠错标签。是,则执行步骤s27,否则执行步骤s24。
199.当所述第一冗余完整性纠错标签不等于所述第二冗余完整性纠错标签时,即表示读取冗余编码运算后的数据即第二冗余完整性纠错标签出现了错误,此时需要对第二冗余完整性纠错标签进行纠错。
200.具体的,请继续参考图7。
201.如图中所示,该流程还可以包括以下步骤:
202.步骤s24,获取所述第一冗余完整性纠错标签和所述第二冗余完整性纠错标签的错误偏差。
203.所述错误偏差可以包括待读取数据的原始数据和经过解密之后得到的解密具即所述第二冗余完整性纠错标签之间对应比特位上出现错误的个数。
204.在一种实施方式中,所述错误偏差可以包括汉明距离。
205.这样,汉明距离能够比较准确地确定错误偏差,保证判断的准确性,且能够对对应错误比特位的数据进行快速纠错,得到正确的待读取数据。
206.步骤s25,判断所述错误偏差是否大于纠错阈值。如果否,则执行步骤s26,如果是,则执行步骤s28。
207.步骤s26,对所述待读取数据和所述第一冗余完整性纠错标签利用所述读取冗余编码运算进行数据纠错,得到纠正待读取数据。
208.即将上述得到的待读取数据中出现数据错误的比特位进行翻转调整,如原始数据在该比特位为1,但是在写入过程中或由于内存出现的硬件问题而导致该比特位的数据发生的错误,由1翻转为0,此时通过冗余编码运算将该比特位的错误翻转由0纠正为1,这样就可以实现该比特位的数据纠错,直至完成出现了数据翻转的所有比特位的纠正,得到正确的待读取数据即纠正待读取数据。
209.当所述待读取数据为待读取加密数据时,则需要对所述待读取加密数据和所述第一冗余完整性纠错标签利用所述读取冗余编码运算进行数据纠错,得到纠正待读取加密数据。
210.从而根据数据写入过程中写入的实际数据得到对应的纠正数据。
211.当确定所述第一冗余完整性纠错标签等于所述第二冗余完整性纠错标签时,或者经过读取冗余编码运算进行数据纠正之后,确定所述待读取数据是完整的,此时可以进行下一步的步骤,即步骤s27。
212.步骤s27,发送确定完整的所述待读取数据。
213.当所述错误偏差大于所述纠错阈值时,表示该数据超出了冗余编码运算的纠错范围,不能实现纠错功能,因此,向外部设备发出数据异常信息,即步骤s28,提示计算机系统该数据地址处存储的数据出现错误,进行外部辅助修正,从而不会发生读取到错误的数据信息,而破坏整体的计算机数据运行,可以保护计算机数据的安全性。
214.步骤s28,发出数据异常信息。
215.由于写入冗余编码运算和读取冗余编码运算是对应的线性编码运算,因此输入的地址为同一个地址,待读取完整性纠错标签和待写入完整性纠错标签也是对应相同的,因此得到的第一冗余完整性纠错标签是可以对待读取数据进行完整性验证以及数据纠错的。
216.当所述待读取数据为待读取加密数据时,在对所述待读取加密数据进行完整性验证并纠错之后,还需要对得到的纠正待读取加密数据进行解密,得到待读取解密数据之后
再发送正确的待读取解密数据。
217.具体的,数据读取方法还可以包括:
218.对所述待读取加密数据进行解密,得到待读取解密数据;
219.发送确定完整的所述待读取解密数据。
220.根据所述第一冗余完整性纠错标签和第二冗余完整性纠错标签确定数据的完整性,并完成待读取加密数据的解密之后,发送所述待读取数据。即此时的待读取数据为安全且正确的数据,可以发送给处理器。
221.根据数据写入时具体写入的数据,进行对应的操作,数据写入时写入的为待写入加密数据,则在数据读取时,进行数据完整性的验证即为对待读取加密数据的完整性的验证,从而可以得到正确的验证结果。
222.具体的,对所述待读取加密数据进行解密,得到待读取解密数据的步骤包括:
223.获取安全解密参数,所述安全解密参数与安全加密参数对应,所述安全加密参数通过安全处理器获得,且用于在数据写入时获取对待写入数据进行加密的第二加密密钥;
224.根据所述安全解密参数得到第二解密密钥;
225.利用所述第二解密密钥对所述待读取加密数据进行解密,得到所述待读取解密数据。
226.这样,根据数据写入过程中使用的待写入数据加密参数(第二加密参数),在数据读取时对应的使用相同的数据解密参数(第二解密参数),得到适于对待读取加密数据解密的第二密钥,保证待读取加密数据的解密与待写入数据的加密的对应,从而可以确保后续数据完整性验证的顺利进行。
227.当然,当数据写入的过程中,使用了双参数(安全加密参数和第二加密参数)对待写入数据进行加密时,同样的,数据读取时,获得第二解密密钥所需要的参数也为两个。
228.具体的,所述对所述待读取加密数据进行解密的步骤还可以包括:
229.获取第二解密参数,所述第二解密参数与第二加密参数对应,所述第二加密参数用于在数据写入时获取所述第二加密密钥;
230.所述根据所述安全解密参数得到第二解密密钥的步骤包括:
231.根据所述第二解密参数和所述安全解密参数得到第二解密密钥;
232.利用所述第二解密密钥对所述待读取加密数据进行解密,得到所述待读取解密数据。
233.根据数据写入过程中,对待写入数据的加密时具体使用的加密参数(第二加密参数和安全加密参数),在数据读取的时候选择使用相对等的第二解密参数和安全解密参数,这样,可以使得得到的第二解密密钥为适用于对内存中存储的待读取加密数据解密的密钥。
234.当然,当数据写入时,对待写入数据加密时采用了多个加密参数的情况,同样的,数据读取时也需要采用同样个数的解密参数来进行解密。
235.可见,本技术实施例所提供的技术方案,根据需要读取的待读取数据地址获取待读取数据以及待读取完整性纠错标签,首先根据所述待读取完整性纠错标签,获取第一冗余完整性纠错标签,用于后续验证待读取数据的完整性并在验证出错时进行待读取数据的纠错,然后进一步的利用读取冗余多项式对待读取数据和待读取数据地址进行读取冗余编
码运算,得到第二冗余完整性纠错标签,通过第一冗余完整性纠错标签和第二冗余完整性纠错标签比较,确定待读取数据的完整性,当确定待读取数据完整时,进行解密,得到待读取数据,并发送所述待读取数据。所述待读取数据地址和数据写入过程中的待写入数据地址对应,因此根据待读取数据地址获取到的待读取数据即为写入时的待写入数据,待读取完整性纠错标签即为写入时,对应该数据的待写入完整性纠错标签,从而可以利用待读取完整性纠错标签实现待读取数据的完整性验证和数据纠错,且由于所使用的读取冗余多项式和数据写入时使用的写入多项式相同,因此得到的第二冗余完整性纠错标签即为数据写入时所使用的待写入数据,因此可以与第一冗余完整性纠错标签进行数据完整性的验证,实现对于待读取数据的完整性验证、待读取数据错误纠正,可以在不影响对数据的纠错性能,保证纠错能力的情况下,提高内存数据的完整性保护功能。
236.为了解决前述问题,本技术实施例还提供一种数据写入装置,该装置可以认为是实现本技术实施例提供的数据写入方法所需设置的功能模块。下文描述的装置内容可与上文描述的数据写入方法内容相互对应参照。
237.请参考图8,图8是本技术实施例所提供的数据写入装置的示意图。
238.如图中所示,所述数据写入装置可以包括:
239.写入获取模块300,适于获取待写入数据和所述待写入数据对应的待写入数据地址;
240.写入冗余编码运算模块301,适于对所述待写入数据地址和所述待写入数据利用写入冗余多项式进行写入冗余编码运算,得到待写入完整性纠错标签,所述待写入完整性纠错标签用于完整性验证和数据纠错;
241.写入模块302,适于将所述待写入数据和所述待写入完整性纠错标签写入到内存。
242.在一些实施例中,所述数据写入装置,还可以包括:
243.写入冗余参数获取模块,适于获取写入冗余初始值参数;
244.所述写入冗余编码运算模块301,适于对所述待写入数据地址和所述待写入数据利用写入冗余多项式进行写入冗余编码,得到待写入完整性纠错标签,包括:
245.根据所述写入冗余初始值参数和所述待写入数据地址得到写入冗余初始值;
246.利用写入冗余多项式和所述写入冗余初始值对所述待写入数据进行写入冗余编码运算,得到所述待写入完整性纠错标签。
247.在一些实施例中,所述数据写入装置,还可以包括:
248.完整性纠错标签加密模块,适于对所述待写入完整性纠错标签进行加密,得到待写入加密完整性纠错标签;
249.所述写入模块302,适于将所述待写入数据和所述待写入完整性纠错标签写入到内存,包括:
250.将所述待写入数据和所述待写入加密完整性纠错标签写入到内存。
251.在一种实施方式中,所述完整性纠错标签加密模块,适于对所述待写入完整性纠错标签进行加密,得到待写入加密完整性纠错标签,包括:
252.根据所述待写入数据地址得到第一加密密钥;
253.利用所述第一加密密钥对所述待写入完整性纠错标签进行加密,得到所述待写入加密完整性纠错标签。
254.在一些实施例中,所述数据写入装置还可以包括:
255.第一加密参数获取模块,适于获取第一加密参数;
256.所述完整性纠错标签加密模块,适于根据所述待写入数据地址得到第一加密密钥,包括:
257.根据所述第一加密参数和所述待写入数据地址得到所述第一加密密钥。
258.在一些实施方式中,所述数据写入装置,还可以包括:
259.数据加密模块,适于对所述待写入数据进行加密,得到待写入加密数据;
260.所述写入模块,适于将所述待写入数据和所述待写入完整性纠错标签写入到内存,包括:
261.将所述待写入加密数据和所述待写入完整性纠错标签写入到内存。
262.在一种实施方式中,所述数据加密模块,适于对所述待写入数据进行加密,得到待写入加密数据,包括:
263.根据安全加密参数得到第二加密密钥,所述安全加密参数通过安全处理器获得;
264.利用所述第二加密密钥对所述待写入数据进行加密,得到所述待写入加密数据。
265.在一些实施方式中,所述数据写入装置还可以包括:
266.第二加密参数获取模块,适于获取第二加密参数;
267.所述数据加密模块,适于得到所述第二加密密钥,包括:
268.根据所述第二加密参数和所述安全加密参数得到所述第二加密密钥。
269.可见,本技术实施例所提供的技术方案,根据需要写入的待写入数据和所述待写入数据对应的待写入数据地址,首先利用写入冗余多项式对待写入数据和待写入数据地址进行写入冗余编码运算,得到待写入完整性纠错标签,然后将待写入完整性纠错标签和所述待写入数据写入到内存,待写入完整性纠错标签不仅可以实现在待写入数据出错时对待写入数据的纠错,而且同时可以实现对待写入数据地址对应的待写入数据的完整性验证,无需额外设置用于完整性验证的标签,因此不会占用用于纠错的纠错标签的存储空间,保证纠错性能,因此,可以在不影响对数据的纠错性能,保证纠错能力的情况下,提高内存数据的完整性保护功能。
270.为了解决前述问题,本技术实施例还提供一种数据读取装置,该装置可以认为是实现本技术实施例提供的数据读取方法所需设置的功能模块。下文描述的装置内容可与上文描述的数据读取方法内容相互对应参照。
271.请参考图9,图9是本技术实施例所提供的数据读取装置的一结构示意图。
272.如图中所示,所述数据读取装置,可以包括:
273.读取获取模块400,适于获取待读取数据地址存储的待读取数据,和与所述待读取数据对应的待读取完整性纠错标签,所述待读取数据地址包括如前述实施例所述的数据写入装置中的待写入数据地址,所述待读取完整性纠错标签包括如前述实施例所述的数据写入装置中写入的待写入完整性纠错标签,所述待读取完整性纠错标签用于对所述待读取数据进行完整性验证和数据纠错;
274.第一冗余完整性纠错标签获取模块401,适于根据所述待读取完整性纠错标签,获取第一冗余完整性纠错标签;
275.读取冗余编码运算模块402,适于对所述待读取数据和所述待读取数据地址利用
读取冗余多项式进行读取冗余编码运算,得到第二冗余完整性纠错标签,所述读取冗余多项式与前述实施例任一项所述的数据写入装置中写入冗余多项式对应;
276.完整性确定模块403,适于当所述第一冗余完整性纠错标签等于所述第二冗余完整性纠错标签时,确定所述待读取数据完整;
277.发送模块404,适于发送确定完整的所述待读取数据。
278.在一种实施方式中,所述数据读取装置还可以包括:
279.数据纠错模块405,适于当所述第一冗余完整性纠错标签不等于所述第二冗余完整性纠错标签时,获取所述第一冗余完整性纠错标签和所述第二冗余完整性纠错标签的错误偏差;
280.当所述错误偏差不大于纠错阈值时,对所述待读取数据和所述第一冗余完整性纠错标签利用所述读取冗余编码运算进行数据纠错,得到纠正待读取数据;
281.所述发送模块404,适于发送确定完整的所述待读取数据,包括:
282.发送所述纠正待读取数据。
283.在一种实施方式中,所述的数据读取装置,还可以包括:
284.数据报错模块406,适于当所述错误偏差大于所述纠错阈值时,发出数据异常信息。
285.在一种实施方式中,所述错误偏差包括汉明距离。
286.在一种实施方式中,所述的数据读取装置,还包括:
287.读取冗余参数获取模块,适于获取读取冗余初始值参数;
288.所述读取冗余编码运算模块,适于对所述待读取数据和所述待读取数据地址利用读取冗余多项式进行读取冗余编码运算,得到第二冗余完整性纠错标签,包括:
289.根据所述读取冗余初始值参数和所述待读取数据地址得到读取冗余初始值;
290.利用所述读取冗余多项式和所述读取冗余初始值对所述待读取数据进行读取冗余编码运算,得到所述第二冗余完整性纠错标签。
291.在一种实施方式中,所述待读取完整性纠错标签包括待读取加密完整性纠错标签,所述第一冗余完整性纠错标签获取模块,适于根据所述待读取完整性纠错标签,获取第一冗余完整性纠错标签,包括:
292.对所述待读取加密完整性纠错标签进行解密,获取第一冗余完整性纠错标签。
293.在一种实施方式中,所述第一冗余完整性纠错标签获取模块,适于对所述待读取加密完整性纠错标签进行解密,获取第一冗余完整性纠错标签,包括:
294.利用所述待读取数据地址得到第一解密密钥,所述第一解密密钥与第一加密密钥对应,所述第一加密密钥用于在数据写入时对完整性纠错标签进行加密,得到所述待写入加密完整性纠错标签;
295.利用所述第一解密密钥对所述待读取加密完整性纠错标签进行解密,得到所述第一冗余完整性纠错标签。
296.在一种实施方式中,所述数据读取装置,还可以包括:
297.第一解密参数获取模块,适于获取第一解密参数,所述第一解密参数与第一加密参数对应,所述第一加密参数用于在数据写入时获取所述第一加密密钥;
298.所述第一冗余完整性纠错标签获取模块,适于利用所述待读取数据地址得到第一
解密密钥,包括:
299.利用所述第一解密参数和所述待读取数据地址得到第一解密密钥。
300.在一种实施方式中,所述待读取数据包括待读取加密数据,所述发送模块,适于发送确定完整的所述待读取数据之前,还包括:
301.数据解密模块,适于对所述待读取加密数据进行解密,得到待读取解密数据;
302.所述发送模块,适于发送确定完整的所述待读取数据,包括:
303.发送确定完整的所述待读取解密数据。
304.在一种实施方式中,所述数据解密模块,适于对所述待读取加密数据进行解密,得到待读取解密数据,包括:
305.获取安全解密参数,所述安全解密参数与安全加密参数对应,所述安全加密参数通过安全处理器获得,且用于在数据写入时获取对待写入数据进行加密的第二加密密钥;
306.根据所述安全解密参数得到第二解密密钥;
307.利用所述第二解密密钥对所述待读取加密数据进行解密,得到所述待读取解密数据。
308.在一种实施方式中,所述数据读取装置,还可以包括:
309.第二解密参数获取模块,适于获取第二解密参数,所述第二解密参数与第二加密参数对应,所述第二加密参数用于在数据写入时获取所述第二加密密钥;
310.所述数据解密模块,适于根据所述安全解密参数得到第二解密密钥,包括:
311.根据所述第二解密参数和所述安全解密参数得到第二解密密钥;
312.利用所述第二解密密钥对所述待读取加密数据进行解密,得到所述待读取解密数据。
313.可见,本技术实施例所提供的技术方案,根据需要读取的待读取数据地址获取待读取数据以及待读取完整性纠错标签,首先根据所述待读取完整性纠错标签,获取第一冗余完整性纠错标签,用于后续验证待读取数据的完整性并在验证出错时进行待读取数据的纠错,然后进一步的利用读取冗余多项式对待读取数据和待读取数据地址进行读取冗余编码运算,得到第二冗余完整性纠错标签,通过第一冗余完整性纠错标签和第二冗余完整性纠错标签比较,确定待读取数据的完整性,当确定待读取数据完整时,进行解密,得到待读取数据,并发送所述待读取数据。所述待读取数据地址和数据写入过程中的待写入数据地址对应,因此根据待读取数据地址获取到的待读取数据即为写入时的待写入数据,待读取完整性纠错标签即为写入时,对应该数据的待写入完整性纠错标签,从而可以利用待读取完整性纠错标签实现待读取数据的完整性验证和数据纠错,且由于所使用的读取冗余多项式和数据写入时使用的写入多项式相同,因此得到的第二冗余完整性纠错标签即为数据写入时所使用的待写入数据,因此可以与第一冗余完整性纠错标签进行数据完整性的验证,实现对于待读取数据的完整性验证、待读取数据错误纠正,可以在不影响对数据的纠错性能,保证纠错能力的情况下,提高内存数据的完整性保护功能。
314.本技术实施例还提供一种存储介质,所述存储介质存储有适于数据写入和数据读取的程序,以实现前述实施例任一项所述的数据写入方法或前述实施例任一项所述的数据读取方法。
315.本技术实施例还提供一种电子设备,包括至少一个存储器和至少一个处理器,所
述存储器存储有数据写入程序,所述处理器调用所述程序,以执行如前述实施例任一项所述的数据写入方法或前述实施例任一项所述的数据读取方法。
316.虽然本技术实施例披露如上,但本技术并非限定于此。任何本领域技术人员,在不脱离本技术的精神和范围内,均可作各种更动与修改,因此本技术的保护范围应当以权利要求所限定的范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1