掌桥专利:专业的专利平台
掌桥专利
首页

数据安全处理方法、安全运算器、芯片及计算机设备

文献发布时间:2023-06-19 19:33:46


数据安全处理方法、安全运算器、芯片及计算机设备

技术领域

本申请实施例涉及数据安全技术领域,具体涉及一种数据安全处理方法、安全运算器、芯片及计算机设备。

背景技术

随着集成电路的发展和工艺的提升,芯片的数据计算和存储能力得到了大幅的提高。芯片处理的各类信息和数据中存在需要安全保护的数据,因此研究芯片的数据安全保护方案显得尤为重要。

目前,应用芯片的计算机系统主要采用冯式架构设计,即数据计算和数据存储是互相分离的;例如,数据一般存储在芯片外接的存储器中。为了保证存储器的数据安全性,可采用数据安全处理方案,对存储器进行数据读写;例如,在将数据写入存储器时,对数据进行加密,并在需要从存储器中读取数据时进行解密。在此背景下,如何提供改进的技术方案,以提升数据安全处理的性能,成为了本领域技术人员亟需解决的技术问题。

发明内容

有鉴于此,本申请实施例提供一种数据安全处理方法、安全运算器、芯片及计算机设备,以降低数据安全处理的资源开销,并且提高数据安全处理的处理效率,从而提升数据安全处理的性能,进而提升芯片性能。

为实现上述目的,本申请实施例提供如下技术方案。

第一方面,本申请实施例提供一种数据安全处理方法,包括:

获取数据处理请求;

根据所述数据处理请求,确定目标原始密钥的目标存储条目;其中,所述目标存储条目存储有所述目标原始密钥以及所述目标原始密钥对应的目标轮密钥存储信息;

如果所述目标轮密钥存储信息指示,所述目标原始密钥对应的目标轮密钥组已存储,获取已存储的目标轮密钥组;其中,所述目标轮密钥组包括所述目标原始密钥对应的多个目标轮密钥,用于对所述数据处理请求所请求的数据进行多轮运算;

如果所述目标轮密钥存储信息指示所述目标轮密钥组未存储,计算生成与所述目标原始密钥对应的目标轮密钥组;以及,对计算生成的目标轮密钥组进行存储,并更新所述目标轮密钥存储信息;

根据目标轮密钥组,对所述数据处理请求所请求的数据进行安全处理。

第二方面,本申请实施例提供一种安全运算器,包括:密钥管理单元、密钥存储单元、密码算法引擎和轮密钥计算单元;其中,所述密钥存储单元至少配置有至少一个原始密钥的存储条目,原始密钥的存储条目存储有原始密钥以及原始密钥对应的轮密钥存储信息;

所述密钥管理单元,用于调度所述密钥存储单元、所述密码算法引擎和所述轮密钥计算单元,以执行如上述第一方面所述的数据安全处理方法。

第三方面,本申请实施例提供一种芯片,包括如上述第二方面所述的安全运算器。

第四方面,本申请实施例提供一种计算机设备,包括如上述第三方面所述的芯片。

本申请实施例提供的数据安全处理方法,可预先配置原始密钥的存储条目,原始密钥的存储条目可以存储原始密钥以及原始密钥对应的轮密钥存储信息;从而在获取数据处理请求后,本申请实施例可根据所述数据处理请求,确定目标原始密钥的目标存储条目,其中,所述目标存储条目存储有所述目标原始密钥以及所述目标原始密钥对应的目标轮密钥存储信息。如果目标轮密钥存储信息指示,所述目标原始密钥对应的目标轮密钥组已存储,则说明原始密钥对应的多个目标轮密钥已存储(所述目标轮密钥组包括所述目标原始密钥对应的多个目标轮密钥),能够直接用于对所请求的数据进行多轮运算;从而,本申请实施例可获取已存储的目标轮密钥组。如果所述目标轮密钥存储信息指示所述目标轮密钥组未存储,则本申请实施例可计算生成与所述目标原始密钥对应的目标轮密钥组,对计算生成的目标轮密钥组进行存储,并更新所述目标轮密钥存储信息。进而,本申请实施例可根据目标轮密钥组,对请求的数据进行安全处理,以实现数据的安全处理。

附图说明

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

图1为数据安全保护的系统架构示例图。

图2为数据安全保护的另一系统架构示例图。

图3为密钥存储单元的结构示例图。

图4为本申请实施例提供的配置原始密钥的存储条目的流程图。

图5为本申请实施例提供的数据安全处理方法的流程图。

图6为本申请实施例提供的数据安全处理方法的另一流程图。

图7A为轮密钥计算单元的结构示例图。

图7B为加密算法引擎的结构示例图。

图7C为解密算法引擎的结构示例图。

图8为本申请实施例提供的数据安全处理方法的再一流程图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

随着CXL(Compute EXpress Link,计算快速链接)存储协议的出现,计算机系统的存储配置更加灵活且具有扩展性,并且随着云计算技术的普及,虚拟机得到了广泛的应用,每个虚拟机都希望具有独立的存储区域。因此计算机系统需要实现密码算法引擎(例如加密算法引擎和解密算法引擎),对存储到存储器中的数据进行安全保护,这就涉及到针对存储器的数据安全处理。

针对存储器的数据安全处理主要分为两个方面:在存储器写入数据时的加密存储和从存储器读取数据时的对应解密。例如,针对需写入存储的数据,使用密钥对数据进行加密处理,加密后数据再保存到存储器中。又例如,从存储器读取加密后数据时,使用密钥对加密后数据进行对应解密处理,从而得到解密后数据。

数据的安全处理需要使用到密钥,密钥作为密码算法的一种参数,可以用于将明文数据转换为密文,或将密文转换为明文数据。其中,对称密码算法等密码算法需要在一次数据加密处理或者一次数据解密处理时使用到多轮运算,并且每轮运算需要使用不同的轮密钥,因此一次数据加密处理或者一次数据解密处理需要使用到多个轮密钥;为便于说明,用于一次数据安全处理的多个轮密钥可形成一个轮密钥组,例如用于一次数据加密处理或者一次数据解密处理的多个轮密钥可形成一个轮密钥组。也就是说,对称密码算法等密码算法需要通过多轮运算,完成一次数据加密处理或者一次数据解密处理,每轮运算使用到的密钥称为轮密钥,多轮运算使用的多个轮密钥形成一个轮密钥组。

在一个示例中,假设完成一次数据加密处理或者一次数据解密处理需要N轮运算,则N轮运算需要对应N个轮密钥(此处N个轮密钥形成一个轮密钥组);进而每轮运算使用对应的轮密钥进行运算,进而通过轮密钥组中的N个轮密钥完成N轮运算,实现一次数据加密处理或者一次数据解密处理。

为便于理解,图1示例性的示出了数据安全保护的系统架构示例图,如图1所示,数据安全保护的系统可以包括:数据处理引擎110和存储器120;其中,数据处理引擎110设置有加密算法引擎111、解密算法引擎112和轮密钥计算单元113。数据处理引擎110例如用于控制存储器120的存储控制器。

当向存储器120写数据时,加密算法引擎111可对数据进行加密处理。对数据进行一次加密处理涉及加密算法的多轮运算;从而轮密钥计算单元113可计算加密算法的每轮运算的轮密钥,从而加密算法引擎111可通过轮密钥计算单元113计算的多个轮密钥,对数据进行加密运算,得到加密后数据;加密后数据再写入存储器120进行保存;

当从存储器120读取数据时,解密算法引擎112可对加密后数据进行解密处理。对加密后数据进行一次解密处理涉及解密算法的多轮运算;从而轮密钥计算单元113可计算解密算法的每轮运算的轮密钥,从而解密算法引擎112可通过轮密钥计算单元113计算的多个轮密钥,对加密后数据进行解密,从而得到解密后数据。

也就是说,在进行加密算法的每轮运算时,轮密钥计算单元113需要逐轮计算出加密算法的每轮运算的轮密钥;轮密钥计算单元113所计算出的每轮运算的轮密钥,可逐轮的提供给加密算法引擎111,从而使得加密算法引擎111完成加密算法的多轮运算。同理,在进行解密算法的每轮运算时,轮密钥计算单元113需要逐轮计算出解密算法的每轮运算的轮密钥;轮密钥计算单元113所计算出的每轮运算的轮密钥,可逐轮的提供给解密算法引擎112,从而使得解密算法引擎112可完成解密算法的多轮运算。

需要说明的是,加密算法和解密算法针对同一数据可以使用相同轮密钥组进行运算,只是加密算法和解密算法使用的轮密钥顺序是相逆的状态;例如,加密算法的第一轮运算使用的轮密钥为,解密算法的最后一轮运算使用的轮密钥,以此类推,加密算法的末轮运算使用的轮密钥为,解密算法的第一轮运算使用的轮密钥。加密算法的末轮运算使用的轮密钥可称为末轮轮密钥,也是解密算法的第一轮运算使用的轮密钥。

通过上述描述可以看出,在每次对数据进行安全处理时(例如在每次对数据进行加密处理或者每次对数据进行解密处理时),轮密钥计算单元均需要重新计算支持多轮运算的轮密钥组;而每次进行数据安全处理时,均重新计算轮密钥组,无疑将导致数据安全处理存在较大的资源开销,并且也导致数据安全处理的处理延迟较大、处理效率较低。基于此,本申请实施例提供改进的数据安全处理方案,以降低数据安全处理的资源开销,并且提高数据安全处理的处理效率,从而提升数据安全处理的性能,进而提升芯片性能。

另外需要说明的是,为支持CXL等存储协议对不同存储区域的数据隔离保护,存储器可以划分为多个存储区域,不同存储区域可能需要设置不同的密钥;这就导致在对存储器的不同存储区域进行数据安全处理时,轮密钥计算单元需要为不同存储区域计算不同轮密钥组,从而轮密钥计算单元需要在多个轮密钥组的计算之间进行切换。

可以看出,在存储器的不同存储区域对应设置不同轮密钥组的情况下,轮密钥计算单元需要在多个轮密钥组的计算之间进行切换,从而满足存储器需要多个轮密钥组进行数据安全保护的需求。基于此,本申请实施例提供的数据安全处理方案可在提升数据安全处理的性能的情况下,进一步支持存储器需要多个轮密钥组进行数据安全保护的需求。

本申请实施例提供的数据安全处理方案,可以预先配置原始密钥的存储条目,原始密钥的存储条目可用于存储原始密钥以及原始密钥对应的轮密钥存储信息;可选的,原始密钥对应的轮密钥存储信息可用于指示原始密钥对应的轮密钥存储情况和轮密钥存储地址;其中,原始密钥可用于生成支持多轮运算的多个轮密钥,形成原始密钥的轮密钥组。在此基础上,在利用原始密钥的轮密钥组进行数据安全处理时,如果原始密钥的存储条目中的轮密钥存储信息指示原始密钥的轮密钥组已存储,则本申请实施例可调用已存储的轮密钥组完成数据安全处理的多轮运算,而不需要再重新计算原始密钥的轮密钥组,从而降低数据安全处理的资源开销,并且提高数据安全处理的处理效率。

作为可选实现,本申请实施例可以在预先配置原始密钥的存储条目的情况下,预先计算原始密钥对应的轮密钥组并进行存储,从而基于轮密钥组的存储情况和存储地址,对原始密钥的存储条目中的轮密钥存储信息进行更新;进而在利用原始密钥对应的轮密钥组进行数据安全处理时,可通过原始密钥的存储条目中的轮密钥存储信息,调用已存储的原始密钥对应的轮密钥组,而不必再重新计算原始密钥对应的轮密钥组,达到减少轮密钥计算次数的效果,从而降低数据安全处理的资源开销,并且提高数据安全处理的处理效率。

在其他可能的可选实现中,本申请实施例可以在使用原始密钥对应的轮密钥组进行数据安全处理时,若通过原始密钥的存储条目中的轮密钥存储信息,确定原始密钥对应的轮密钥组未被存储,则可计算生成原始密钥对应的轮密钥组,并将计算生成轮密钥组进行存储;同时,基于轮密钥组的存储情况和存储地址,对原始密钥的存储条目中的轮密钥存储信息进行更新;从而后续再次利用原始密钥对应的轮密钥组进行数据安全处理时,本申请实施例可通过原始密钥的存储条目中的轮密钥存储信息,调用已存储的原始密钥对应的轮密钥组,而不必再重新计算原始密钥对应的轮密钥组。

基于上述思路,本申请实施例可对数据安全保护的系统的架构进行改进调整,作为可选实现,图2示例性的示出了数据安全保护的另一系统架构示例图,如图2所示,该数据安全保护的系统可以包括:安全运算器200和存储器120。安全运算器200可以视为是具有数据安全处理能力(例如数据加解密能力),并且具有轮密钥计算和存储能力的数据处理引擎。在可选实现中,安全运算器200可以是用于控制存储器120的存储控制器;例如在存储器120为内存时,安全运算器200可以是内存控制器,在一个示例中,内存控制器具有数据加解密能力,并且具有轮密钥计算和存储能力;又例如,在存储器120为CXL存储器时,安全运算器200可以是CXL存储控制器,在一个示例中,CXL存储控制器具有数据加解密能力,并且具有轮密钥计算和存储能力。

结合图1和图2所示,安全运算器200可以包括密钥管理单元210、密钥存储单元220、密码算法引擎230和轮密钥计算单元113;其中,作为可选实现,密码算法引擎230可以包括加密算法引擎111和解密算法引擎112。

密钥管理单元210负责数据安全处理的整体管理工作,包括密钥的生成、密钥的调度以及密钥的替换和销毁等;并且密钥管理单元210可通过对数据请求进行解析,来实现对轮密钥计算单元113、密钥存储单元220和密码算法引擎230的调度,从而完成对数据的安全处理。

轮密钥计算单元113负责根据原始密钥计算对应的轮密钥组(即原始密钥所生成的多个轮密钥)。密钥存储单元220负责存储密钥信息,包括原始密钥的存储条目和原始密钥对应的轮密钥组等;进一步的,密钥存储单元220还可对原始密钥对应的末轮轮密钥进行单独存储。

密码算法引擎230负责执行密码算法,以对数据进行安全处理;密码算法引擎230对数据进行一次安全处理需要涉及密码算法的多轮运算,并使用到支持多轮运算的轮密钥组。例如,密码算法引擎230中的加密算法引擎111可负责执行加密算法,从而对写入存储器120的数据进行加密处理,并使用到支持加密算法多轮运算的轮密钥组。又例如,密码算法引擎230中的解密算法引擎112可负责执行解密算法,从而对从存储器120读取的加密后数据进行解密处理,并使用到支持解密算法多轮运算的轮密钥组。

在配置原始密钥的存储条目的可选实现中,密钥管理单元210可在密钥存储单元220中配置原始密钥的存储条目。在进一步的可选实现中,存储器可以划分多个存储区域,基于多个存储区域的数量,密钥管理单元210可在密钥存储单元220中相应配置多个原始密钥的存储条目,其中一个原始密钥的存储条目可存储一个原始密钥以及该原始密钥对应的轮密钥存储信息。需要说明的是,一个原始密钥可对应存储器的一个存储区域,基于存储器所划分的多个存储区域的数量,本申请实施例可相应配置多个原始密钥的存储条目,从而为存储器的不同存储区域对应配置不同原始密钥(不同原始密钥生成的轮密钥组不同);进而在对存储器的不同存储区域进行数据安全处理时,本申请实施例可以使用不同原始密钥的轮密钥组,以实现不同存储区域的数据安全隔离保护。

作为可选实现,图3示例性的示出了密钥存储单元的一种结构示例图,如图3所示,密钥存储单元220可以包括:存储原始密钥的存储条目的原始密钥存储单元221、存储轮密钥组的轮密钥存储单元222、和存储末轮轮密钥的末轮轮密钥存储单元223。

针对存储器划分的多个存储区域,原始密钥存储单元221可以存储各个存储区域对应的原始密钥的存储条目,以在原始密钥存储单元221中配置多个原始密钥的存储条目。本申请实施例可将多个原始密钥中部分或全部原始密钥对应的轮密钥组,在轮密钥存储单元222中进行存储;将多个原始密钥中部分或全部原始密钥对应的末轮轮密钥,在末轮轮密钥存储单元223中进行存储。

也就是说,在可选实现中,并不是每一个原始密钥均在密钥存储单元220存储有轮密钥组和末轮轮密钥,因此原始密钥的存储条目中除存储原始密钥外,还需引入原始密钥对应的轮密钥存储信息,以指示原始密钥对应的轮密钥存储情况和轮密钥存储地址。

在可选实现中,假设轮密钥存储单元222中轮密钥组的存储数量上限,小于末轮轮密钥存储单元223中末轮轮密钥的存储数量上限;并且末轮轮密钥存储单元223中末轮轮密钥的存储数量上限,小于原始密钥存储单元221中原始密钥的存储条目的存储数量,例如定义轮密钥存储单元222中轮密钥组的存储数量上限为K,末轮轮密钥存储单元223中末轮轮密钥的存储数量上限为J,原始密钥存储单元221中原始密钥的存储条目的存储数量为M,则K<J<M。

基于上述假设,原始密钥存储单元221可以存储各个原始密钥的存储条目,一个原始密钥的存储条目可以保存原始密钥,以及原始密钥对应的轮密钥存储信息;例如,基于原始密钥0至原始密钥M-1的M个原始密钥,原始密钥存储单元221中可以存储M个原始密钥的存储条目,分别为原始密钥0的存储条目至原始密钥M-1的存储条目。

可选的,在原始密钥的存储条目中,轮密钥存储信息可以包括轮密钥标识以及轮密钥地址;其中,轮密钥标识用于指示原始密钥对应的轮密钥存储情况,轮密钥地址用于指示原始密钥对应的轮密钥存储地址。例如,原始密钥0的存储条目可以保存原始密钥0、原始密钥0对应的轮密钥标识以及轮密钥地址;从而通过原始密钥0对应的轮密钥标识,指示原始密钥0对应的轮密钥存储情况;通过原始密钥0对应的轮密钥地址,指示原始密钥0对应的轮密钥存储地址。又例如,原始密钥1的存储条目可以保存原始密钥1、原始密钥1对应的轮密钥标识以及轮密钥地址;以此类推,原始密钥M-1的存储条目可以保存原始密钥M-1、原始密钥M-1对应的轮密钥标识以及轮密钥地址。

在原始密钥存储单元221保存原始密钥0的存储条目至原始密钥M-1的存储条目的情况下,轮密钥存储单元222可保存K个轮密钥组,例如第0轮密钥组至第K-1轮密钥组;假设一个轮密钥组包括支持N轮运算的N个轮密钥,则轮密钥存储单元222存储的第0轮密钥组包括第0轮密钥组的轮密钥1至轮密钥N,第1轮密钥组包括第1轮密钥组的轮密钥1至轮密钥N,以此类推,第K-1轮密钥组包括第K-1轮密钥组的轮密钥1至轮密钥N。

原始密钥的轮密钥组在轮密钥存储单元222中的存储地址,可由原始密钥的存储条目中的轮密钥地址进行映射。可选的,通过轮密钥地址来映射轮密钥组的存储地址,可以是通过地址的全相联映射的方式,也可以是通过组相联映射的方式,或者其他的地址映射方式。

末轮轮密钥存储单元223可以保存J个原始密钥的末轮轮密钥,比如末轮轮密钥为轮密钥组中的轮密钥N,则末轮轮密钥存储单元223可保存第0轮密钥组的轮密钥N,第1轮密钥组的轮密钥N,以此类推,第J-1轮密钥组的轮密钥N。

由于原始密钥存储单元中保存的原始密钥的存储条目,与轮密钥存储单元中保存的轮密钥组、末轮轮密钥存储单元中保存的末轮轮密钥可能并不是一一对应的关系。因此为指示原始密钥对应的轮密钥存储信息,在可选实现中,本申请实施例在原始密钥对应的存储条目中增加轮密钥标识和轮密钥地址的存储域段。

可选的,针对任一个原始密钥的存储条目,存储条目中保存的轮密钥标识可以指示原始密钥对应的轮密钥的存储情况;在一个实现示例中,原始密钥对应的轮密钥的存储情况可以分为三种情况:

原始密钥对应的轮密钥组被存储,例如原始密钥对应的轮密钥组存储在轮密钥存储单元222中;原始密钥对应的轮密钥组被存储,表示原始密钥对应的所有多个轮密钥被存储在轮密钥存储单元222中;

原始密钥对应的末轮轮密钥被单独存储,例如原始密钥对应的末轮轮密钥存储在末轮轮密钥存储单元223中;

原始密钥对应的任一轮密钥均未被存储,例如轮密钥存储单元222中未存储有原始密钥对应的轮密钥组,并且,末轮轮密钥存储单元223中未存储有原始密钥对应的末轮轮密钥。

在一个实现示例中,本申请实施例可通过原始密钥对应的轮密钥标识的不同取值,来表示原始密钥对应的轮密钥存储情况。例如,当原始密钥对应的轮密钥标识的取值为第一值时(第一值比如10),则表示原始密钥对应的轮密钥组被存储(即,轮密钥存储单元222中存储有原始密钥对应的轮密钥组)。又例如,当原始密钥对应的轮密钥标识的取值为第二值时(第二值比如00),则表示原始密钥对应的任一轮密钥均未被存储(即,轮密钥存储单元222中未存储有原始密钥对应的轮密钥组,并且末轮轮密钥存储单元223中未存储有原始密钥对应的末轮轮密钥)。再例如,当原始密钥对应的轮密钥标识的取值为第三值时(第三值比如01),则表示原始密钥对应的末轮轮密钥被单独存储(即,末轮轮密钥存储单元223中存储有原始密钥对应的末轮轮密钥)。在可选实现示例中,轮密钥标识可占用2bit(比特)存储空间;轮密钥标识的取值为第一值和第三值,则可视为轮密钥标识有效。

针对任一个原始密钥的存储条目,原始密钥对应的轮密钥地址可根据对应轮密钥的存储情况进行调整。当原始密钥对应的轮密钥标识指示,原始密钥对应的轮密钥组已存储(例如原始密钥对应的轮密钥标识的取值为第一值),则原始密钥对应的轮密钥地址可以是原始密钥对应的轮密钥组的存储地址(例如原始密钥对应的轮密钥组在轮密钥存储单元222中的存储地址)。

当原始密钥对应的轮密钥标识指示,原始密钥对应的末轮轮密钥被单独存储(例如原始密钥对应的轮密钥标识的取值为第三值),则原始密钥对应的轮密钥地址可以是原始密钥对应的末轮轮密钥的存储地址(例如原始密钥对应的末轮轮密钥在末轮轮密钥存储单元223中的存储地址)。当原始密钥对应的轮密钥标识指示原始密钥对应的任一轮密钥均未存储(例如原始密钥对应的轮密钥标识的取值为第二值),则原始密钥对应的轮密钥地址可以为空。

也就是说,轮密钥地址可以指示末轮轮密钥在末轮轮密钥存储单元中的存储地址,或轮密钥组在轮密钥存储单元中的存储地址。当轮密钥标识的取值为第一值时,轮密钥地址可指示对应的轮密钥组在轮密钥存储单元中的存储地址;当轮密钥标识的取值为第三值时,轮密钥地址可指示对应的末轮轮密钥在末轮轮密钥存储单元中的存储地址。

需要说明的是,在不考虑密钥存储单元220的存储负担的情况下,本申请实施例也可设置轮密钥存储单元222中轮密钥组的存储数量上限,等于末轮轮密钥存储单元223中末轮轮密钥的存储数量上限,并等于原始密钥存储单元221中原始密钥的存储条目的存储数量,即K=J=M;因此在可能的情况中,K≤J≤M,具体的K和J值的选择需要综合考虑存储器的数据读延时、系统支持的最大设备数目、系统的存储区域划分等因素。

基于本申请实施例预先配置原始密钥的存储条目的思路,本申请实施例可以在原始密钥存储单元221中预先配置至少一个原始密钥的存储条目,其中,一个原始密钥对应存储器的一个存储区域,并且一个存储区域的数据采用对应原始密钥的轮密钥组进行安全处理。作为可选实现,图4示例性的示出了本申请实施例提供的配置原始密钥的存储条目的流程图,该流程可由安全运算器200执行实现;如图4所示,该流程可以包括如下步骤。

在步骤S410中,获取配置请求,所述配置请求携带有原始密钥和原始密钥的密钥标识。

在一些实施例中,CPU等处理器或者专用于数据安全配置的安全处理器,可以向安全运算器200传递配置请求,以请求在安全运算器200的原始密钥存储单元221中配置原始密钥的存储条目。配置请求中可以携带原始密钥,以及用于标识原始密钥的密钥标识;不同原始密钥可以使用不同的密钥标识进行区分。

作为可选实现,本申请实施例可以为存储器统一配置相同的原始密钥,相应的,原始密钥存储单元221中可以配置单独的一个原始密钥的存储条目,从而存储器中的数据使用相同的原始密钥对应的轮密钥组进行安全处理。在其他可选实现中,本申请实施例可以为存储器的每个存储区域分别配置不同的原始密钥,相应的,原始密钥存储单元221中可以配置多个原始密钥的存储条目,从而存储器中不同存储区域的数据,使用不同原始密钥对应的轮密钥组进行安全处理,以实现不同存储区域的数据安全隔离。

在步骤S411中,判断配置请求的权限等级是否符合预设权限等级,若否,执行步骤S412,若是,执行步骤S413。

考虑配置安全性,本申请实施例可设置预设权限等级,只有在配置请求的权限等级达到预设权限等级时,本申请实施例才允许响应配置请求。

作为可选实现,判断配置请求的权限等级是否符合预设权限等级可以是,判断发出配置请求的器件是否为预设安全器件。预设安全器件例如专用于数据安全配置的安全处理器、或者CPU等处理器中运行的特定虚拟机。当然,本申请实施例也可支持其他的权限判断方式,来判断配置请求的权限等级是否符合预设权限等级,本申请实施例对此并不设限。

在步骤S412中,报错并结束流程。

当配置请求的权限等级不符合预设权限等级,本申请实施例可进行报错,并结束配置流程。

在步骤S413中,根据原始密钥的密钥标识,确定原始密钥对应的存储条目的存储地址;在所确定的存储地址,配置原始密钥对应的存储条目。

在步骤S414中,在原始密钥对应的存储条目,存储原始密钥以及原始密钥的轮密钥存储信息。

当配置请求的权限等级符合预设权限等级时,本申请实施例可响应配置请求,从而在原始密钥存储单元221配置相应的原始密钥的存储条目。作为可选实现,本申请实施例可基于原始密钥的密钥标识,确定原始密钥的存储条目的存储地址;从而在该存储地址,配置原始密钥对应的存储条目;进而通过原始密钥对应的存储条目,保存原始密钥和对应的轮密钥存储信息。

可选的,在原始密钥对应的存储条目初始配置的情况下,由于原始密钥对应的轮密钥组还未计算生成和存储,因此存储条目中的轮密钥标识可以指示原始密钥对应的任一轮密钥均未被存储,例如,设置存储条目中的轮密钥标识的取值为第二值,并且设置轮密钥地址为空。在原始密钥对应的轮密钥组被计算生成和存储的情况下,本申请实施例可将存储条目中的轮密钥存储信息进行调整,例如调整存储条目中的轮密钥标识指示,原始密钥对应的轮密钥组被存储;并将轮密钥地址设置为轮密钥组的存储地址。

需要说明的是,将原始密钥对应的存储条目的存储地址,与原始密钥的密钥标识相对应,可以避免还需存储原始密钥的密钥标识的情况。在一个实现中,本申请实施例可从配置请求中提取原始密钥的密钥标识,将密钥标识作为原始密钥的存储条目的存储偏置地址,从而在原始密钥存储单元221的存储偏置地址所对应的存储空间,配置原始密钥的存储条目。

本申请实施例可通过图4所示流程,将原始密钥的存储条目配置在原始密钥存储单元221中,也可通过图4所示流程对已配置的存储条目中的内容(例如原始密钥等)进行更新。

另外,在为存储器的多个存储区域配置原始密钥的情况下,本申请实施例可支持通过多次配置请求,来分别配置多个原始密钥的存储条目。在其他可能的实现中,本申请实施例也可支持在一次配置请求中,对多个原始密钥的存储条目进行配置,例如,一次配置请求中可以携带多组配置数据,一组配置数据包括一个存储区域对应的原始密钥,以及原始密钥的密钥标识。

需要说明的是,本申请实施例除利用原始密钥的密钥标识,作为原始密钥的存储条目的存储地址,从而进行原始密钥的存储条目与密钥标识的关联外,还可支持同时存储原始密钥的密钥标识,并将原始密钥的存储条目和所存储的密钥标识进行关联对应。另外,判断配置请求的权限等级是否符合预设权限等级可以视为是可选流程,例如使得配置请求通过特定的数据通路到达安全运算器200,而不必再判断配置请求的权限等级。

本申请实施例在预先配置原始密钥的存储条目的情况下,可对针对存储器的数据处理请求进行响应,从而实现数据的安全处理。作为可选实现,图5示例性的示出了本申请实施例提供的数据安全处理方法的流程图,该流程可由安全运算器200执行实现;如图5所示,该流程可以包括如下步骤。

在步骤S510中,获取数据处理请求。

在步骤S511中,如果所述数据处理请求指示对请求的数据进行安全处理,从所述数据处理请求中确定目标原始密钥的目标密钥标识。

数据处理请求可以是针对存储器的数据处理请求,涉及将请求的数据写入存储器的数据写请求,以及从存储器中读取数据的数据读请求。例如,数据写请求携带请求的数据以及写地址,用于将请求的数据(此处请求的数据为写入存储器的数据)写入存储器的写地址;又例如,数据读请求可以携带读地址,用于请求从存储器的读地址读取请求的数据(此处请求的数据为从存储器读取的数据)。

针对数据处理请求所请求的数据是否具有安全保护的需求,数据处理请求可能指示对请求的数据进行透传处理,也可能指示对请求的数据进行安全处理。作为可选实现,本申请实施例可通过判断数据处理请求是否携带安全标识符,以判断数据处理请求是否指示对请求的数据进行安全处理;如果数据处理请求中未携带安全标识符,则数据处理请求指示对请求的数据进行透传处理,从而本申请实施例可不对请求的数据进行安全处理,而是对请求的数据进行直接传输(例如对请求的数据进行直接写入或者直接读取);如果数据处理请求中携带安全标识符,则数据处理请求指示对请求的数据进行安全处理,从而本申请实施例需利用目标原始密钥对应的目标轮密钥组,对请求的数据进行安全处理。本申请实施例主要考虑数据处理请求是对请求的数据进行安全处理的情况。

在进一步的可选实现中,数据处理请求指示对请求的数据进行安全处理可能是对请求写入存储器的数据进行加密处理,也可能是对请求从存储器读取的数据进行解密处理。可选的,安全标识符可以是写数据时的加密标识符,也可以是读数据时的解密标识符。如果数据处理请求为数据写请求,并且数据写请求携带加密标识符,则指示对请求写入存储器的数据进行加密处理;如果数据写请求未携带加密标识符,则指示对请求写入存储器的数据进行透传处理。如果数据处理请求为数据读请求,并且数据读请求携带解密标识符,则指示对请求从存储器读取的数据进行解密处理;如果数据读请求未携带解密标识符,则指示对请求从存储器读取的数据进行透传处理。

在可选实现中,数据处理请求的请求内容中的固定字段,可作为安全标识符;例如,数据处理请求的请求内容中的不同固定字段,可以作为加密标识符和解密标识符;又例如,数据处理请求的请求内容中同一固定字段的不同赋值,可以作为加密标识符和解密标识符。

当数据处理请求指示对请求的数据进行安全处理时,数据处理请求可以携带目标原始密钥的目标密钥标识,从而本申请实施例可从数据处理请求中确定目标密钥标识。为便于说明,本申请实施例将对请求的数据进行安全处理的轮密钥组称为目标轮密钥组,目标轮密钥组中的轮密钥称为目标轮密钥,目标轮密钥对应的原始密钥称为目标原始密钥,目标原始密钥的密钥标识称为目标密钥标识。

作为可选实现,当数据处理请求指示对请求的数据进行安全处理时,数据处理请求中可以指定密钥选择标识符来确定目标原始密钥,数据处理请求中的密钥选择标识符与目标原始密钥的目标密钥标识保持一致。

在可能的实现示例中,如果数据处理请求为指示对请求写入存储器的数据进行加密处理的数据写请求,则数据写请求可以携带写数据、写地址、加密标识符以及目标原始密钥的目标密钥标识。如果数据处理请求为指示对请求从存储器读取的数据进行解密处理的数据读请求,则数据读请求可以携带读地址、解密标识符以及目标原始密钥的目标密钥标识。

在步骤S512中,根据所述目标密钥标识,判断目标原始密钥对应的目标存储条目是否配置,若否,执行步骤S513,若是,执行步骤S514。

作为可选实现,本申请实施例可预先配置原始密钥的存储条目,并且预先配置的原始密钥的存储条目的存储地址,与原始密钥的密钥标识相关联。从而,本申请实施例在从数据处理请求中确定目标原始密钥的目标密钥标识之后,可通过目标密钥标识判断目标原始密钥对应的目标存储条目是否配置;例如,本申请实施例可判断原始密钥存储单元中,与目标密钥标识对应的存储地址,是否配置有存储条目。为便于说明,目标原始密钥对应的存储条目,可称为目标存储条目。

在步骤S513中,报错并结束流程。

与目标原始密钥对应的目标存储条目未被配置,本申请实施例可进行报错,并结束流程。

在步骤S514中,根据目标存储条目存储的目标轮密钥存储信息,判断目标原始密钥对应的目标轮密钥组是否已存储,若是,执行步骤S515,若否,执行步骤S516。

本申请实施例可在步骤S512的判断结果为是时,获取到预先配置的目标原始密钥对应的目标存储条目。该目标存储条目除保存目标原始密钥外,还可保存目标原始密钥对应的目标轮密钥存储信息;本申请实施例可将目标原始密钥对应的轮密钥存储信息,称为目标轮密钥存储信息。

基于目标轮密钥存储信息,本申请实施例可判断与目标原始密钥对应的目标轮密钥组是否在轮密钥存储单元中已存储;若目标轮密钥组在轮密钥存储单元中已存储,则本申请实施例可直接调用已存储的目标轮密钥组,对请求的数据进行安全处理;若目标轮密钥组未在轮密钥存储单元中存储,则本申请实施例需调用轮密钥计算单元,生成与目标原始密钥对应的目标轮密钥组,从而利用生成的目标轮密钥组对请求的数据进行安全处理,并且在轮密钥存储单元中存储生成的目标轮密钥组,并对目标轮密钥存储信息进行更新。

作为可选实现,目标轮密钥存储信息可以包括目标原始密钥对应的目标轮密钥标识和目标轮密钥地址;其中,目标轮密钥标识可以用于指示目标原始密钥对应的轮密钥存储情况,目标轮密钥地址用于指示目标原始密钥对应的轮密钥存储地址。

可选的,如果目标轮密钥标识的取值为第一值,则目标轮密钥组已存储;此时,目标轮密钥地址为目标轮密钥组在轮密钥存储单元中的存储地址。

可选的,如果目标轮密钥标识的取值为第二值,则目标原始密钥对应的任一目标轮密钥均未被存储,也就是说,没有任何一个目标轮密钥被存储,此时,目标轮密钥地址可以为空。

可选的,如果目标轮密钥标识的取值为第三值,则目标原始密钥对应的目标末轮轮密钥被单独存储,此时,目标轮密钥地址为目标末轮轮密钥在末轮轮密钥存储单元中的存储地址。目标轮密钥组中的末轮轮密钥可称为目标末轮轮密钥。

在步骤S515中,获取已存储的目标轮密钥组;根据目标轮密钥组,对请求的数据进行安全处理。

在步骤S514的判断结果为是时,本申请实施例可获取到已存储的目标轮密钥组。例如,本申请实施例可根据目标轮密钥地址,从轮密钥存储单元中获取已存储的目标轮密钥组。

基于获取的已存储的目标轮密钥组,本申请实施例可利用目标轮密钥组,对请求的数据进行安全处理。例如,利用目标轮密钥组中的多个目标轮密钥,对请求的数据进行加密处理,或者对请求的数据进行解密处理。

在步骤S516中,计算生成与所述目标原始密钥对应的目标轮密钥组;对计算生成的目标轮密钥组进行存储,并更新所述目标轮密钥存储信息;根据计算生成的目标轮密钥组,对请求的数据进行安全处理。

在步骤S515的判断结果为否时,本申请实施例可确认目标轮密钥组未存储,从而本申请实施例需要当场计算生成目标原始密钥对应的目标轮密钥组,从而利用计算生成的目标轮密钥组,对请求的数据进行安全处理。在可选实现中,本申请实施例可调用轮密钥计算单元113,计算生成目标原始密钥对应的目标轮密钥组,从而将目标轮密钥组提供给密码算法引擎230,以对请求的数据进行安全处理。

在一个实现示例中,轮密钥计算单元113可以包括级联结构的多个计算单元,用于计算各轮运算的轮密钥,即轮密钥计算单元113中的一个计算单元可用于计算一个轮密钥,从而通过级联结构的多个计算单元,完成计算多个轮密钥,实现一个轮密钥组的计算。轮密钥计算单元113中级联结构的多个计算单元,计算得到的各轮运算的轮密钥,可逐轮的提供给密码算法引擎230,以由密码算法引擎230对请求的数据进行安全处理。

需要说明的是,轮密钥计算单元中级联结构的计算单元在计算轮密钥时,每一级计算单元可接收上一级计算单元的计算结果,并将本级计算单元的计算结果输出给下一级计算单元,从而迭代的实现各个轮密钥的计算。例如,以一个轮密钥组包括支持N轮运算的N个轮密钥为例,则采用级联结构的N个计算单元,生成一个密钥组的N个轮密钥需要N个计算周期。进一步的,本申请实施例可支持并行的计算多个原始密钥的轮密钥组;例如,采用级联结构的N个计算单元可在一个计算周期,最多输出N个原始密钥对应的不同轮次的轮密钥;在一个示例中,第一轮的计算单元产生第一个原始密钥的第一轮运算的轮密钥、第二轮的计算单元产生第二个原始密钥的第二轮运算的轮密钥,以此类推。

在计算生成目标轮密钥组后,本申请实施例可对计算生成的目标轮密钥组进行存储(例如在轮密钥存储单元222中存储计算生成的目标轮密钥组),以使得原来未存储的目标轮密钥组,能够在本次数据安全处理的过程中被存储,从而后续在利用目标轮密钥组进行数据安全处理时,本申请实施例可直接调用已存储的目标轮密钥组,而不必再重新计算目标轮密钥组。

在存储目标轮密钥组时,本申请实施例可同步更新目标轮密钥存储信息。可选的,本申请实施例可将目标轮密钥存储信息中的目标轮密钥标识的取值设置为第一值,并将目标轮密钥地址设置为计算生成的目标轮密钥组的存储地址(例如目标轮密钥地址设置为,计算生成的目标轮密钥组在轮密钥存储单元中的存储地址)。

在可能的实现中,如果轮密钥存储单元222中轮密钥组的存储数量上限,小于原始密钥存储单元221中原始密钥的存储条目的数量,则由于轮密钥存储单元222仅存储部分原始密钥的轮密钥组,因此本申请实施例在轮密钥存储单元222中存储目标轮密钥组时,可能出现轮密钥存储单元222没有空闲存储空间的情况。基于此,本申请实施例可判断用于存储轮密钥组的存储空间中是否存在空闲存储空间(例如轮密钥存储单元222中是否存在空闲存储空间);如果不存在空闲存储空间,则本申请实施例可从轮密钥存储单元222已存储的轮密钥组中,选择删除的被选轮密钥组;将被选轮密钥组进行删除,并将被选轮密钥组中的末轮轮密钥进行单独存储(例如在末轮轮密钥存储单元223中单独存储被选轮密钥组中的末轮轮密钥);同时,在被选轮密钥组对应的原始密钥的存储条目中更新轮密钥存储信息。在轮密钥存储单元222中删除被选轮密钥组后,被选轮密钥组对应的存储地址,可用于存储计算生成的目标轮密钥组;从而本申请实施例可将目标轮密钥地址设置为,被选轮密钥组对应的存储地址。

在可选实现中,从轮密钥存储单元222中选择删除的被选轮密钥组时,被选轮密钥组可以是轮密钥存储单元222中符合删除条件的轮密钥组(例如,最近未使用的轮密钥组,或者基于优先级的最近未使用的轮密钥组)。在轮密钥组的存储数量达到上限时,将最近未使用的轮密钥组进行删除,并空余出存储空间来保存新计算生成的目标轮密钥组,能够使得轮密钥存储单元222存储经常使用的轮密钥组,从而提升轮密钥存储单元222中存储的轮密钥组被直接用于数据安全处理的概率,并节省轮密钥存储单元222的存储空间。

本申请实施例提供的数据安全处理方法,可预先配置原始密钥的存储条目,原始密钥的存储条目可以存储原始密钥以及原始密钥对应的轮密钥存储信息;从而在获取数据处理请求后,本申请实施例可根据所述数据处理请求,确定目标原始密钥的目标存储条目,其中,所述目标存储条目存储有所述目标原始密钥以及所述目标原始密钥对应的目标轮密钥存储信息。如果目标轮密钥存储信息指示,所述目标原始密钥对应的目标轮密钥组已存储,则说明原始密钥对应的多个目标轮密钥已存储(所述目标轮密钥组包括所述目标原始密钥对应的多个目标轮密钥),能够直接用于对所请求的数据进行多轮运算;从而,本申请实施例可获取已存储的目标轮密钥组。如果所述目标轮密钥存储信息指示所述目标轮密钥组未存储,则本申请实施例可计算生成与所述目标原始密钥对应的目标轮密钥组,对计算生成的目标轮密钥组进行存储,并更新所述目标轮密钥存储信息。进而,本申请实施例可根据目标轮密钥组,对请求的数据进行安全处理,以实现数据的安全处理。

可以看出,本申请实施例提供的数据安全处理方案,可通过预先配置的原始密钥的存储条目,来存储原始密钥以及原始密钥对应的轮密钥存储信息,从而在进行数据安全处理时,如果轮密钥存储信息指示数据安全处理需要使用的轮密钥组已存储,则可调用存储的轮密钥组完成数据安全处理的多轮运算,而不需要再重新计算支持轮密钥组,达到减少轮密钥计算次数的效果,从而降低数据安全处理的资源开销,并且提高数据安全处理的处理效率,进而提升数据安全处理的性能,以及提升应用数据安全处理方案的芯片的性能。

在进一步的可选实现中,当轮密钥存储单元中没有空闲存储空间,本申请实施例从轮密钥存储单元中选择删除的被选轮密钥组时,可将被选轮密钥组的末轮轮密钥在末轮密钥存储单元中进行单独存储。这是因为在进行数据解密处理时,末轮轮密钥可作为轮密钥计算单元的输入,以用于生成支持解密算法的多个轮密钥,因此对末轮轮密钥进行单独存储具有一定意义。需要说明的是,解密算法的多个轮密钥可基于末轮轮密钥来计算生成,也可基于原始密钥计算生成;解密算法的多个轮密钥与对应加密算法的多个轮密钥属于同一个轮密钥组,只是使用顺序互逆。

为进一步对本申请实施例提供的数据安全处理方法进行介绍,下面分别从数据加密角度和数据解密角度,对本申请实施例提供的方案进行介绍。

作为可选实现,图6示例性的示出了本申请实施例提供的数据安全处理方法的另一流程图,该流程可应用于向存储器写数据时的数据加密场景,参照图6,该流程可以包括如下步骤。

在步骤S610中,获取数据写请求。

在步骤S611中,判断数据写请求是对请求写入存储器的数据进行透传处理,还是进行加密处理;若是进行透传处理,跳转到步骤S612,若是进行加密处理,跳转到步骤S613。

作为可选实现,如果数据写请求未携带加密标识符,则可确定对请求写入存储器的数据进行透传处理;如果数据写请求携带加密标识符,则可确定对请求写入存储器的数据进行加密处理。

在步骤S612中,将数据的加密标志位设置为无效,并将数据放置到加密队列,跳转到步骤S624。

在对数据进行透传处理时,数据的加密标志位设置为无效,从而加密算法引擎处理到加密队列中对应的数据时,可基于无效的加密标志位,直接将数据透传写入存储器,而不进行加密处理。

在步骤S613中,根据数据写请求中的目标密钥标识,判断原始密钥存储单元是否存储有目标原始密钥的目标存储条目,若否,执行步骤S614,若是,执行步骤S615。

在步骤S614中,报错并结束流程。

在步骤S615中,根据目标存储条目的目标轮密钥标识,判断轮密钥存储单元中是否存储有目标原始密钥对应的目标轮密钥组,若否,执行步骤S616,若是,执行步骤S623。

可选的,本申请实施例可判断目标轮密钥标识是否为第一值,若是,则可确定轮密钥存储单元存储有目标轮密钥组,若否,则可确定轮密钥存储单元未存储有目标轮密钥组。

在步骤S616中,根据目标轮密钥标识,判断末轮轮密钥存储单元中是否存储有目标轮密钥组的目标末轮轮密钥,若是,执行步骤S617,若否,执行步骤S618。

可选的,在目标轮密钥标识不为第一值时,本申请实施例可进一步判断目标轮密钥标识是否为第三值,若是,则末轮轮密钥存储单元中存储有目标末轮轮密钥,若否,则末轮轮密钥存储单元未存储有目标末轮轮密钥。

在步骤S617中,将末轮轮密钥存储单元中的目标末轮轮密钥进行删除。

在目标轮密钥组未存储的情况下,本申请实施例后续需要计算生成目标轮密钥组,在此情况下,如果目标轮密钥组中的目标末轮轮密钥在末轮轮密钥存储单元中单独存储,则本申请实施例可删除末轮轮密钥存储单元中的目标末轮轮密钥,以避免末轮轮密钥存储单元中的目标末轮轮密钥,与后续计算生成的目标轮密钥组中的目标末轮轮密钥相重复。在执行步骤S617后,可跳转到步骤S618。

在步骤S618中,判断轮密钥存储单元是否具有空闲存储空间,若否,执行步骤S619,若是,执行步骤S621。

在步骤S619中,将轮密钥存储单元中最久未使用的轮密钥组进行删除。

在步骤S620中,将最久未使用的轮密钥组中的末轮轮密钥,存储在末轮轮密钥存储单元中。

本申请实施例可检查轮密钥存储单元中是否具有空闲存储空间,用来存储后续计算生成的目标轮密钥组;若没有空闲存储空间,则本申请实施例可将轮密钥存储单元中最久未使用的轮密钥组进行删除,并在末轮轮密钥存储单元中保存该删除的轮密钥组中的末轮轮密钥,以对该删除的轮密钥组中的末轮轮密钥进行备份。

在将删除的轮密钥组中的末轮轮密钥,保存在末轮轮密钥存储单元中时,如果末轮轮密钥存储单元也没有空闲存储空间,则本申请实施例可将末轮轮密钥存储单元中最久未使用的末轮轮密钥进行删除。

可选的,针对轮密钥存储单元中删除的轮密钥组,本申请实施例在将该轮密钥组中的末轮轮密钥保存在末轮轮密钥存储单元中时,还可同步对该轮密钥组对应的原始密钥的存储条目进行更新,例如,将存储条目中的轮密钥标识的取值设置为第三值(表示末轮轮密钥被单独存储),并将轮密钥地址设置为末轮轮密钥的存储地址。在执行步骤S620后,可跳转到步骤S621。

在步骤S621中,调用轮密钥计算单元,计算生成目标原始密钥对应的目标轮密钥组。

作为可选实现,本申请实施例提供的轮密钥计算单元可以分为正向轮密钥计算单元,以及逆向轮密钥计算单元;正向轮密钥计算单元可用于根据原始密钥,计算支持加密算法的多轮运算的多个轮密钥;逆向轮密钥计算单元可用于根据末轮轮密钥,计算支持解密算法的多轮运算的多个轮密钥;基于解密算法的多轮运算使用的轮密钥顺序,与加密算法的多轮运算使用的轮密钥顺序相逆,因此正向轮密钥计算单元和逆向轮密钥计算单元计算的轮密钥顺序可以相逆。

可选的,在步骤S621的实现中,本申请实施例可将目标原始密钥传递给正向轮密钥计算单元,由正向轮密钥计算单元计算支持加密算法的多轮运算的多个目标轮密钥,计算的多个目标轮密钥形成目标轮密钥组。

为便于理解,图7A示例性的示出了轮密钥计算单元的结构示例图,如图7A所示,轮密钥计算单元113可以包括:正向轮密钥计算单元710和逆向轮密钥计算单元720。以加密算法和解密算法需要N轮运算,使用到N个轮密钥为例,正向轮密钥计算单元710可基于原始密钥,计算得到N个轮密钥;如图7所示,正向轮密钥计算单元710可以包括N个计算单元,例如计算单元711至71N,从而原始密钥在输入正向轮密钥计算单元710后,正向轮密钥计算单元710中计算单元711可计算得到轮密钥1(即加密算法第一轮运算的轮密钥),计算单元711的计算结果输入计算单元712,从而计算单元712可计算得到轮密钥2(即加密算法第二轮运算的轮密钥),以此类推,计算单元71N可计算得到轮密钥N(即加密算法第N轮运算的轮密钥)。

逆向轮密钥计算单元720可基于末轮轮密钥(即轮密钥N),计算得到支持解密算法的其他N-1轮运算的N-1个轮密钥,也就是说,在末轮轮密钥已给定的情况下,轮密钥N可用于解密算法的第一轮运算,逆向轮密钥计算单元720不需计算轮密钥N,而只需计算剩余的轮密钥N-1至轮密钥1;基于解密算法的多轮运算使用的轮密钥顺序,与加密算法的多轮运算使用的轮密钥顺序相逆,逆向轮密钥计算单元720可以从轮密钥N-1开始计算,并逆序的计算到轮密钥1。基于此,逆向轮密钥计算单元720中可以设置N-1个计算单元,例如计算单元72N-1至721;从而轮密钥N在输入逆向轮密钥计算单元720后,逆向轮密钥计算单元720中的计算单元72N-1可计算得到轮密钥N-1(即解密算法第二轮运算的轮密钥),计算单元72N-1的计算结果输入计算单元72N-2,从而计算单元72N-2可计算得到轮密钥N-2(即解密算法第三轮运算的轮密钥),以此类推,计算单元721可计算得到轮密钥1(即解密算法第N轮运算的轮密钥)。

可以看出,正向轮密钥计算单元可根据原始密钥,顺序计算支持多轮运算的多个轮密钥(例如顺序计算轮密钥1至轮密钥N)。逆向轮密钥计算单元可根据末轮轮密钥,逆序计算支持多轮运算的多个轮密钥(例如逆序的计算轮密钥N-1至轮密钥1)。

进一步的,为了能够及时提供轮密钥以保证加解密性能,正向轮密钥计算单元和逆向轮密钥计算单元均可采用级联结构的设计,级联的级数与具体对称加密算法有关,例如SM4算法需要32个轮密钥,则采用32级计算单元进行级联。每一级计算单元将计算结果输出给下一级计算单元,同时接受上一级计算单元的计算结果作为下一次计算的输入。通过采用级联结构,所有轮密钥生成共需N个计算周期,其中每个计算周期按需产生一个轮密钥,在一个计算周期中,正向轮密钥计算单元和逆向轮密钥计算单元最多可同时输出N个原始密钥对应的不同轮次的轮密钥,N为轮密钥计算单元的级联级数,即支持多轮运算的多个轮密钥的个数。

在步骤S622中,将计算的目标轮密钥组,存储在轮密钥存储单元,并更新目标轮密钥标识和目标轮密钥地址。

可选的,如果轮密钥存储单元中没有空闲存储空间,则轮密钥存储单元中删除的轮密钥组的存储地址,可以作为计算的目标轮密钥组的存储地址,从而使得计算的目标轮密钥组,能够存储在轮密钥存储单元。如果轮密钥存储单元中具有空闲存储空间,则本申请实施例可直接将计算的目标轮密钥组,存储在轮密钥存储单元。在存储目标轮密钥组时,本申请实施例可对目标轮密钥存储信息进行更新,例如将目标轮密钥存储信息中的目标轮密钥标识设置为第一值,将目标轮密钥地址设置为目标轮密钥组在轮密钥存储单元中的存储地址。

在步骤S623中,设置数据的加密标志为有效,将数据放置加密队列。

在步骤S624中,如果加密队列中数据的加密标志位有效,则调用加密算法引擎,根据目标轮密钥组执行加密算法的多轮运算,以对数据进行加密处理,将加密后数据写入存储器;如果加密队列中数据的加密标志位无效,将数据透传写入存储器。

可选的,在数据的加密标志位有效时,本申请实施例可读取加密算法的各轮运算的目标轮密钥,并逐轮的输入加密算法引擎,以通过加密算法引擎,对数据执行加密算法的多轮运算,实现数据的加密处理。在一个示例中,图7B示例性的示出了加密算法引擎的结构示例图,如图7B所示,以加密算法需要N轮运算为例,加密算法引擎可以包括N轮的加密运算单元(例如第一轮加密运算单元至第N轮加密运算单元),N轮的加密运算单元依序利用相应轮的轮密钥,完成加密算法的N轮运算,从而实现对数据的加密处理。例如,第一轮加密运算单元基于第一轮的轮密钥1对数据进行运算,运算结果输入第二轮加密运算单元;第二轮加密运算单元基于第二轮的轮密钥2,对第一轮加密运算单元的运算结果进行运算,运算结果输入下一轮的加密运算单元;以此类推,从而第N轮加密运算单元基于末轮的轮密钥N,完成数据运算,得出加密后数据。也就是说,每轮的加密运算单元接收上一轮的加密运算单元的输出,并基于每轮的轮密钥,完成每轮的运算;从而从明文数据开始,通过N轮的运算,实现对数据的加密处理,得到加密后数据。

作为可选实现,与图7B所示的加密算法引擎的运算过程相对应,图7C示例性的示出了解密算法引擎的结构示例图,如图7C所示,解密算法引擎包括N轮的解密运算单元(例如第一轮解密运算单元至第N轮解密运算单元),每轮的解密运算单元接收上一轮的解密运算单元的输出,并基于当前轮的轮密钥进行运算,从而在第N轮解密运算单元输出解密后的密文;其中,第一轮解密运算单元的输入为加密后数据,第一轮解密运算单元至第N轮解密运算单元所使用的轮密钥顺序,为轮密钥N至轮密钥1,即第一轮解密运算单元使用轮密钥N(本申请实施例所指的末轮轮密钥)进行运算,以此类推,第N轮解密运算单元使用轮密钥1进行运算。

作为可选实现,图8示例性的示出了本申请实施例提供的数据安全处理方法的再一流程图,该流程可应用于从存储器读取数据时的数据解密场景,参照图8,该流程可以包括如下步骤。

在步骤S810中,获取数据读请求。

在步骤S811中,判断数据读请求是对从存储器读取的数据进行透传处理,还是进行解密处理;若是进行透传处理,跳转到步骤S812,若是进行解密处理,跳转到步骤S813。

在步骤S812中,将数据的解密标志位设置为无效,并将数据放置到待处理队列,跳转到步骤S822。

在步骤S813中,根据数据写请求中的目标密钥标识,判断原始密钥存储单元是否存储有目标原始密钥的目标存储条目,若否,执行步骤S814,若是,执行步骤S815。

在步骤S814中,报错并结束流程。

在步骤S815中,根据目标存储条目的目标轮密钥标识,判断轮密钥存储单元中是否存储有目标原始密钥对应的目标轮密钥组,若否,执行步骤S816,若是,执行步骤S821。

在步骤S816中,判断轮密钥存储单元是否具有空闲存储空间,若否,执行步骤S817,若是,执行步骤S819。

在步骤S817中,将轮密钥存储单元中最久未使用的轮密钥组进行删除。

在步骤S818中,将最久未使用的轮密钥组中的末轮轮密钥,存储在末轮轮密钥存储单元中。

可选的,本申请实施例可对该删除的最久未使用的轮密钥组,对应的轮密钥存储信息进行更新。

可选的,在将删除的轮密钥组中的末轮轮密钥,保存在末轮轮密钥存储单元中时,如果末轮轮密钥存储单元没有空闲存储空间,则本申请实施例可删除末轮轮密钥存储单元中最久未使用的末轮轮密钥。

在步骤S819中,计算生成原始密钥对应的目标轮密钥组。

在步骤S820中,将计算的目标轮密钥组,存储在轮密钥存储单元,并更新目标轮密钥标识和目标轮密钥地址。

在可选实现中,本申请实施例可根据目标原始密钥,计算生成目标轮密钥组,并将计算生成的目标轮密钥组在轮密钥存储单元中进行存储;例如,将目标原始密钥传递给正向轮密钥计算单元,由正向轮密钥计算单元依次计算出目标轮密钥1至目标轮密钥N,从而将目标轮密钥1至目标轮密钥N形成的目标轮密钥组存储在轮密钥存储单元中;在此情况下,由于解密算法是基于轮密钥N至轮密钥1的顺序进行运算,因此本申请实施例可将目标轮密钥N至目标轮密钥1依次送入解密算法引擎进行运算。

在其他可能的实现中,在目标轮密钥组未在轮密钥存储单元中存储,但目标末轮轮密钥在末轮轮密钥存储单元进行存储时(例如,目标轮密钥标识不为第一值,但为第三值),本申请实施例也可基于目标末轮轮密钥计算得到目标轮密钥组,而不一定基于目标原始密钥计算得到目标轮密钥组。在此情况下,作为可选实现,本申请实施例可从末轮轮密钥存储单元中,读取目标末轮轮密钥,并将目标末轮轮密钥送入逆向轮密钥计算单元,以计算其他轮的目标轮密钥;同时启动解密算法引擎,将目标末轮轮密钥作为解密算法第一轮运算的轮密钥,并且在逆向轮密钥计算单元每计算出一轮目标轮密钥时,将所计算的目标轮密钥输入解密算法引擎进行计算,使得逆向轮密钥计算单元计算目标轮密钥的过程,与解密算法引擎进行多轮运算的过程能够同时进行。

也就是说,在目标原始密钥对应的目标末轮轮密钥预先单独存储的情况下,本申请实施例可根据预先单独存储的目标末轮轮密钥,依次计算支持解密算法的各轮运算的目标轮密钥,以得到支持解密算法的多轮运算的多个目标轮密钥;其中,每计算得到支持一轮运算的目标轮密钥,则所计算得到的目标轮密钥同步至解密算法相应轮的运算,并同步存储至目标轮密钥组中;解密算法的第一轮运算的目标轮密钥为预先单独存储的目标末轮轮密钥。可选的,解密算法引擎执行解密算法的过程可结合图7C所示。

在步骤S821中,将数据的解密标志位设置为有效,将数据放置待处理队列。

在步骤S822中,如果待处理队列中数据的解密标志位有效,则调用解密算法引擎根据目标轮密钥组,执行解密算法的多轮运算,以对数据进行解密处理,输出解密后的数据,并将末轮轮密钥存储单元中所存储的目标末轮轮密钥进行删除;如果待处理队列中数据的解密标志位无效,直接输出读取的数据。

在可选实现中,在完成数据的解密处理后,如果目标末轮轮密钥是处于单独存储的情况,则本申请实施例可将末轮轮密钥存储单元中存储的目标末轮轮密钥进行删除。

需要说明的是,图8所示流程与图6所示流程类似或相同的部分,可相互参照。

本申请实施例提供的数据处理方案,可以针对存储器的多个存储区域,预先配置各个存储区域的原始密钥,并将部分或全部原始密钥对应的轮密钥组进行存储,从而本申请实施例存在可以直接调用已存储的轮密钥组进行数据安全处理的可能,可以减少轮密钥计算次数,降低数据安全处理的资源开销,并且提高数据安全处理的处理效率;同时,通过配置多个原始密钥的存储条目,并且实现部分或全部原始密钥对应的轮密钥组被存储,能够有效地支持CXL等存储协议需要多个轮密钥组进行数据保护的需求。

进一步的,针对未存储的轮密钥组,本申请实施例可以在数据安全处理的过程中,采用轮密钥计算单元计算轮密钥组,并且轮密钥计算单元的计算单元采用级联结构,能够降低对存储器的数据带宽带来的影响。

进一步的,通过设置轮密钥组的存储数量小于原始密钥的存储条目的数量,本申请实施例能够减少硬件实现的代价和复杂度;进一步的,使得已存储的轮密钥组为经常使用的轮密钥组,能够提升已存储的轮密钥组被直接调用于数据安全处理的概率。

进一步的,在数据读取的解密场景下,本申请实施例可以利用已单独存储的末轮轮密钥,来计算其他轮的轮密钥;并且末轮轮密钥可直接输入第一轮的解密运算进行处理,从而在逐轮计算其他轮的轮密钥的过程中,已计算的轮密钥可同步输入解密算法引擎进行相应的解密运算,实现解密运算与轮密钥计算能够同步进行,可降低轮密钥的计算而引入的解密算法处理延时。

本申请实施例还提供一种安全运算器,该安全运算器例如存储控制器。该安全运算器可以被配置为执行本申请实施例提供的数据安全处理方法。在可选实现中,结合前文描述,安全运算器可以包括:密钥管理单元、密钥存储单元、密码算法引擎和轮密钥计算单元。密钥管理单元、密钥存储单元、密码算法引擎和轮密钥计算单元的功能和细化结构,可参照前文相应部分的描述。

在一些实施例中,密钥存储单元至少配置有至少一个原始密钥的存储条目,原始密钥的存储条目存储有原始密钥以及原始密钥对应的轮密钥存储信息。

所述密钥管理单元,可用于调度所述密钥存储单元、所述密码算法引擎和所述轮密钥计算单元,以执行本申请实施例提供的数据安全处理方法。

在一些实施例中,密钥管理单元可用于:

获取数据处理请求;根据所述数据处理请求,从所述密钥存储单元中确定目标原始密钥的目标存储条目;其中,所述目标存储条目存储有所述目标原始密钥以及所述目标原始密钥对应的目标轮密钥存储信息;

如果所述目标轮密钥存储信息指示,所述目标原始密钥对应的目标轮密钥组在所述密钥存储单元已存储,获取已存储的目标轮密钥组;其中,所述目标轮密钥组包括所述目标原始密钥对应的多个目标轮密钥,用于对所述数据处理请求所请求的数据进行多轮运算;

如果所述目标轮密钥存储信息指示所述目标轮密钥组在所述密钥存储单元未存储,调用所述轮密钥计算单元计算生成与所述目标原始密钥对应的目标轮密钥组;以及,将在所述密钥存储单元对计算生成的目标轮密钥组进行存储,并更新所述目标轮密钥存储信息;

调用所述密码算法引擎,根据目标轮密钥组,对所述数据处理请求所请求的数据进行安全处理。

在一些实施例中,所述密钥存储单元包括:原始密钥存储单元、轮密钥存储单元、和末轮密钥存储单元;

所述原始密钥存储单元存储至少一个原始密钥的存储条目;

所述轮密钥存储单元存储有所述至少一个原始密钥中全部或部分原始密钥对应的轮密钥组;

所述末轮密钥存储单元存储有所述至少一个原始密钥中全部或部分原始密钥对应的末轮轮密钥。

在一些实施例中,所述原始密钥存储单元中原始密钥的存储条目的数量,大于或等于,所述末轮密钥存储单元中末轮轮密钥的数量上限;所述末轮密钥存储单元中末轮轮密钥的数量上限,大于或等于,所述轮密钥存储单元中轮密钥组的存储数量上限。

在一些实施例中,所述轮密钥计算单元包括:正向轮密钥计算单元,以及逆向轮密钥计算单元;

所述正向轮密钥计算单元,用于根据原始密钥,顺序计算支持多轮运算的多个轮密钥;

所述逆向轮密钥计算单元,用于根据末轮轮密钥,逆序计算支持多轮运算的多个轮密钥。

在一些实施例中,所述密码算法引擎包括加密算法引擎和解密算法引擎;

所述加密算法引擎,用于在数据处理请求为数据写请求,并指示对请求写入存储器的数据进行加密处理时,根据轮密钥组中的多个轮密钥,执行加密算法的多轮运算,以对请求写入存储器的数据进行加密处理;其中,加密算法的一轮运算使用对应轮的一个轮密钥;

所述解密算法引擎,用于在数据处理请求为数据读请求,并指示对从存储器读取的数据进行解密处理时,根据轮密钥组中的多个轮密钥,执行解密算法的多轮运算,以对从存储器读取的数据进行解密处理;其中,解密算法的多轮运算使用的轮密钥顺序,与加密算法的多轮运算使用的轮密钥顺序相逆。

本申请实施例还提供一种芯片,包括本申请实施例提供的安全运算器(例如存储控制器)。

本申请实施例还提供一种计算机设备,包括本申请实施例提供的芯片。

上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。

虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。

相关技术
  • 基于数据安全的奖金发放方法、装置、计算机设备及存储介质
  • 一种数据安全方法、装置、CPU、芯片及计算机设备
  • 一种数据安全方法、装置、CPU、芯片及计算机设备
技术分类

06120115957997