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

白盒加密方法和装置以及白盒解密方法和装置

文献发布时间:2023-06-19 19:32:07


白盒加密方法和装置以及白盒解密方法和装置

技术领域

本发明涉及加解密技术领域,尤其涉及白盒加密方法和装置以及白盒解密方法和装置。

背景技术

在计算机或嵌入式设备中会运行各种各样的密码算法来保证信息安全。如果恶意攻击者可以完全控制密码算法的运行环境,不仅二进制完全可见,也可以完全控制可执行程序,例如可以对可执行程序进行修改、调试或者动态分析等,这种运行环境下恶意攻击者很容易通过观察密码算法的运算中间过程分析出密钥。这种攻击场景也叫做“白盒环境”。而能够抵御白盒环境分析的密码算法实现叫做白盒密码。

相关技术已经提出了使用查找表的方式来实现AES(高级加密标准)等对称密码算法的白盒密码实现。通过将一般的密码操作变成查表而导致攻击者无法分析出关于密钥的信息,这种密码算法具有抵御白盒环境分析的能力。但是现有通过查找表实现的白盒加密方法,其所需要的查找表占用存储空间较大,进而在很多情况下将受限于存储条件而无法使用。

发明内容

本发明旨在至少解决相关技术中存在的技术问题之一。为此,本发明提出一种白盒加密方法,其可以减小查找表的大小,进而降低对存储空间的要求,且该种白盒加密方法尤其适合于嵌入式设备。

本发明还提出一种白盒加密装置。

本发明还提出一种白盒解密方法。

本发明还提出一种白盒解密装置。

本发明还提出一种电子设备。

本发明还提出一种存储介质。

根据本发明第一方面实施例的白盒加密方法,包括:

第一编码保护步骤,对原始数据进行编码保护得到输入数据;

加密运算步骤,包括轮运算操作,所述轮运算操作包括首轮轮运算操作、若干轮中间轮轮运算操作和末轮轮运算操作,所述首轮轮运算操作包括所述编码保护的逆操作、轮密钥加、字节替换、列混合和矩阵混淆,所述中间轮轮运算操作包括逆矩阵混淆、轮密钥加、字节替换、列混合和矩阵混淆,所述末轮轮运算操作包括逆矩阵混淆、轮密钥加、字节替换、列混合和逆列混合;

所述首轮轮运算操作基于所述输入数据进行处理得到轮运算结果,所述中间轮轮运操作和所述末轮轮运算操作基于上一轮所述轮运算操作的轮运算结果进行处理得到加密数据。

根据本发明实施例的白盒加密方法,其加密运算步骤变更了混淆操作,且末轮轮运算操作除了最后逆列混合之外都和之前的轮运算操作(包括首轮轮运算操作和中间轮轮运算操作)统一了起来,因此可以简化查找表,进而可以节省存储空间。此外,第一编码保护步骤较之于相关技术采用的线性保护可以节省存储空间。综上,本发明实施例的白盒加密方法所需要查找表占用空间较小,更能适应嵌入式平台等资源有限的场景应用。

根据本发明的一个实施例,所述第一编码保护步骤中,对所述原始数据进行随机数掩码保护得到所述输入数据。

根据本发明的一个实施例,所述第一编码保护步骤中,使用随机数生成16个PS查找表,且将128位的所述原始数据拆分成16个8位数据,通过所述PS查找表分别对16个8位数据进行随机数掩码保护得到所述输入数据;

所述首轮轮运算操作中,所述逆操作为逆PS混淆。

根据本发明的一个实施例,所述轮运算操作中:

执行查找表TyBox查表操作得到对应轮所述轮运算操作的轮运算结果;

所述首轮轮运算操作的所述查找表TyBox由编码保护的逆操作、轮密钥加、字节替换、列混合和矩阵混淆得到;

所述中间轮轮运算操作的所述查找表TyBox和所述末轮轮运算操作的所述查找表TyBox均由逆矩阵混淆、轮密钥加、字节替换、列混合和矩阵混淆得到。根据本发明的一个实施例,所述加密运算步骤还包括相邻所述轮运算操作之间的转换操作,所述转换操作中:

执行查找表Mixing查表操作,所述查找表Mixing用于将所述轮运算结果的128位数据拆分为16个8位数据;

所述首轮轮运算操作的所述查找表Mixing和所述中间轮轮运算操作的所述查找表Mixing均由逆矩阵混淆和矩阵混淆得到;

所述末轮轮运算操作的所述查找表Mixing由逆矩阵混淆和逆列混合得到。

根据本发明的一个实施例,所述加密运算步骤中:

对所述轮运算结果进行异或操作,得到所述查找表Mixing的输入;

对所述查找表Mixing的输出进行异或操作,得到下一轮所述轮运算操作对应查找表TyBox的输入。

根据本发明的一个实施例,所述中间轮轮运算操作为八轮。

根据本发明第二方面实施例的白盒加密装置,包括:

第一编码保护模块,用于对原始数据进行编码保护得到输入数据;

加密运算模块,用于进行轮运算操作,所述轮运算操作包括首轮轮运算操作、若干轮中间轮轮运算操作和末轮轮运算操作,所述首轮轮运算操作包括所述编码保护的逆操作、轮密钥加、字节替换、列混合和矩阵混淆,所述中间轮轮运算操作包括逆矩阵混淆、轮密钥加、字节替换、列混合和矩阵混淆,所述末轮轮运算操作包括逆矩阵混淆、轮密钥加、字节替换、列混合和逆列混合;

所述首轮轮运算操作基于所述输入数据进行处理得到轮运算结果,所述中间轮轮运操作和所述末轮轮运算操作基于上一轮所述轮运算操作的轮运算结果进行处理得到加密数据。

根据本发明实施例的白盒加密装置,其技术效果和第一方面实施例的白盒加密方法对应,因此此处不再赘述。

根据本发明第三方面实施例的白盒解密方法,包括:

第二编码保护步骤,对加密数据进行编码保护得到输入数据;

解密运算步骤,包括轮运算操作,所述轮运算操作包括首轮轮运算操作、若干轮中间轮轮运算操作和末轮轮运算操作,所述首轮轮运算操作包括所述编码保护的逆操作、轮密钥加、逆字节替换、逆列混合和矩阵混淆,所述中间轮轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换、逆列混合和矩阵混淆,所述末轮轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换和逆列混合;

所述首轮轮运算操作基于所述输入数据进行处理得到轮运算结果,所述中间轮轮运操作和所述末轮轮运算操作基于上一轮所述轮运算操作的轮运算结果进行处理得到原文。

根据本发明实施例的白盒解密方法,其技术效果和第一方面实施例的白盒加密方法对应,因此此处不再赘述。

根据本发明第四方面实施例的白盒解密装置,包括:

第二编码保护模块,用于对加密数据进行编码保护得到输入数据;

解密运算模块,用于对输入数据进行轮运算操作,所述轮运算操作包括首轮轮运算操作、若干轮中间轮轮运算操作和末轮轮运算操作,所述首轮轮运算操作包括所述编码保护的逆操作、轮密钥加、逆字节替换、逆列混合和矩阵混淆,所述中间轮轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换、逆列混合和矩阵混淆,所述末轮轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换和逆列混合;

所述首轮轮运算操作基于所述输入数据进行处理得到轮运算结果,所述中间轮轮运操作和所述末轮轮运算操作基于上一轮所述轮运算操作的轮运算结果进行处理得到原文。

根据本发明实施例的白盒解密装置,其技术效果和第三方面实施例的白盒解密方法对应,因此此处不再赘述。

根据本发明第五方面实施例的电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述白盒加密方法的步骤,或者,实现上述白盒解密方法的步骤。

根据本发明实施例的电子设备,其技术效果和第一方面实施例的白盒加密方法对应,或者,其技术效果和第三方面实施例的白盒解密方法对应,因此此处不再赘述。

根据本发明第六方面实施例的非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述白盒加密方法的步骤,或者,实现上述白盒解密方法的步骤。

根据本发明实施例的非暂态计算机可读存储介质,其技术效果和第一方面实施例的白盒加密方法对应,或者,其技术效果和第三方面实施例的白盒解密方法对应,因此此处不再赘述。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

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

图1是AES加密流程示意图;

图2是本发明实施例提供的白盒加密方法的流程示意图;

图3是本发明实施例提供的白盒加密方法的首轮轮运算操作和中间轮轮算操作的流程示意图;

图4是本发明实施例提供的白盒加密方法的末轮轮运算操作的流程示意图;

图5是本发明实施例提供的白盒加密方法的查找表Mixing执行混淆操作的流程示意图;

图6是本发明实施例提供的白盒加密装置的结构示意图;

图7是本发明实施例提供的白盒解密方法的流程示意图;

图8是本发明实施例提供的白盒解密装置的结构示意图;

图9是本发明实施例提供的电子设备的结构示意图。

附图标记:

100、第一编码保护模块;200、加密运算模块;300、第二编码保护模块;400、解密运算模块;910、处理器;920、通信接口;930、存储器;940、通信总线。

具体实施方式

下面结合附图和实施例对本发明的实施方式作进一步详细描述。以下实施例用于说明本发明,但不能用来限制本发明的范围。

在本发明实施例的描述中,需要说明的是,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

在本发明实施例的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明实施例中的具体含义。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

针对迭代型分组密码算法,白盒密码的设计方法被提出。其中,白盒密码的设计思路为针对一个m比特到n比特的变换X,任意选定一个m比特到m比特的双射F和一个n比特到n比特的双射G,其中m和n均为任意正整数,把

X′=G·X·F

看成X的一个编码形式,其中F为变换X的输入编码,G为变换X的输出编码,X′为变换X的一个编码形式。在迭代型分组密码的变换中,一个变换的输出通常是另一个变换的输入,因此上一个变换X的输出编码必须与下一个变换Y的输入编码相互抵消,即有

Y′·X′=(H·Y·G

其中,Y′为变换Y的一个编码形式,G

密码算法的变换通常用数组来表示,也称为查找表。由于密码算法的变换的输入输出规模一般较大,造成查找表的规模较大,需要的存储空间也较大而无法实现,因此拼接编码的方法被提出以减小查找表的大小,定义如下。

双射F=F

其中,F

同样的可以得到

这样就可以把n比特的双射F用k个比较小的映射F

由于所有的变换过程都用复合查找表的形式表示,输入编码和输出编码对于攻击者是未知的,通过查找表可以在白盒环境中隐藏密钥信息。

AES算法如下:

AES-128在FIPS 197(一种高级加密标准)中定义,将一个16字节的输入映射为16字节的输出。一共有10轮运算,每轮运算以下几种运算操作一个16字节的状态变量state。

轮密钥加(AddRoundKey):将16字节的状态变量与16字节的轮密钥进行异或,对应

字节替换(SubBytes):通过S盒将一个字节的输入映射为一个字节的输出,对应state[i]=Sbox(state[i]),i=1,2,…,15;

行移位(ShiftRows):将16字节的状态变量的字节顺序重新排列,对应

state[0]=state[0],state[1]=state[5],state[2]=state[10],

state[3]=state[15],state[4]=state[4],state[5]=state[9],

state[6]=state[14],state[7]=state[3],state[8]=state[8],

state[9]=state[13],state[10]=state[2],state[11]=state[7],

state[12]=state[12],state[13]=state[1],state[14]=state[6],

state[15]=state[11];

列混合(MixColumns):将16字节的状态变量左乘一个4*4的矩阵

/>

其中i=0,4,8,12;矩阵MC定义为:

整体的加解密流程如图1所示。

使用如下查找表,也即查找表T-box和查找表Ty。其中,对于查找表T-box而言,每一轮中的轮密钥加和字节替换都可以组合成16个8进8出的查找表,定义如下:

前九轮的查找表

第十轮的查找表

其中,k

对于查找表Ty而言,在第1轮至第9轮中,查找表T-box的输出随后进入列混合操作。列混合操作可以按每4字节拆分为4个子操作,每个子操作可以由4个8进32出的查找表Ty来完成,其中,四个查找表Ty分别为

运算结果为:

由于查找表T-box是8进8出,查找表Ty是8进32出,所以这两个查找表可以组合成为8进32出的查找表TyBox,得到:

AES加密运算的第1轮到第9轮可以使用TyBox完成运算,第10轮可以使用T-box查找表完成运算。

在白盒环境下,直接使用上述查找表进行运算是不安全的,可以根据查找表数据恢复出密钥,所以需要对查找表进行混淆处理,使得使用查找表时输入的数据和查表输出的数据均为混淆后的数据。

考虑对

因32*32的矩阵混淆造成查找表数据过大,所以考虑采用4个32*8位的查找表数据并联实现,4个32*8查找表的查表结果进行异或之后得到最终的结果。此异或操作也可用查找表实现,则由此产生的查找表称为TypeⅣ查找表。

为增强安全性及应用考虑,运算的原始数据及运算结果数据也加入混淆,则由此产生的查找表数据称为TypeⅠ查找表。

通常查找表会以数组的方式进行存储,以上AES方案中,需要用到的查找表大约为750KB,具体参考下表:

表1

这对于资源受限的嵌入式设备来说会由于存储空间有限而不能使用此方案。

基于以上问题,本发明实施例提供一种白盒加密方法,请参见图2,包括第一编码保护步骤和加密运算步骤。其中,第一编码保护步骤中,对原始数据进行编码保护得到输入数据。加密运算步骤包括轮运算操作,轮运算操作包括首轮轮运算操作、若干轮中间轮轮运算操作和末轮轮运算操作,首轮轮运算操作包括编码保护的逆操作轮密钥加、字节替换、列混合和矩阵混淆,中间轮轮运算操作包括逆矩阵混淆、轮密钥加、字节替换、列混合和矩阵混淆,末轮轮运算操作包括逆矩阵混淆、轮密钥加、字节替换、列混合和逆列混合;首轮轮运算操作基于输入数据进行处理得到轮运算结果,中间轮轮运操作和末轮轮运算操作基于上一轮轮运算操作的轮运算结果进行处理得到加密数据。

首轮轮运算操作和中间轮轮运算操作不同之处在于,首轮轮运算操作的对象为输入数据,中间轮轮运算操作的对象基于上一轮轮运算操作的运算结果得到。此处的“上一轮轮运算操作”包括首轮轮运算操作或者中间轮轮运算操作。其中,中间轮轮运算操作的数量不做限制,例如128位密钥长度对应的轮运算操作一般为十轮,进而此时中间轮轮运算操作包括8轮;再例如,192位密钥长度对应的轮运算操作一般为12轮,进而此时中间轮轮运算操作包括10轮;又例如256位密钥长度对应的轮运算操作一般为14轮,进而此时中间轮轮运算操作包括12轮。当然,以上只是一般情况下为了保证加密安全性对应的轮运算操作的数量,也可以适当增加或者减少轮运算操作的数量,此时加密的安全性也相应提高或者降低。

根据本发明实施例的白盒加密方法,其加密运算步骤和本发明实施例前文提及的方法不同,具体体现在变更了混淆操作,且末轮轮运算操作除了最后逆列混合之外都和之前的轮运算操作(包括首轮轮运算操作和中间轮轮运算操作)统一了起来,因此可以简化查找表,进而可以节省存储空间。此外,第一编码保护步骤较之于相关技术采用的线性保护可以节省存储空间。综上,本发明实施例的白盒加密方法所需要查找表占用空间较小,更能适应嵌入式平台等资源有限的场景应用。

根据本发明的实施例,因32*32的矩阵混淆造成查找表数据过大,所以考虑采用4个32*8位的查找表数据并联实现,4个32*8查找表的查表结果进行异或之后得到结果。

根据本发明实施例的白盒加密方法,第一编码保护步骤中,对原始数据进行随机数掩码保护得到输入数据。其中,通过采用随机数掩码保护对原始数据进行处理,可以增强首轮轮运算操作的运算安全性。当然,也可以采用其他编码方式对原始数据进行保护处理,例如不排除采用线性编码保护对原始数据进行处理,此处不一一列举。

下面以128位明文数据的加密为例进行说明,不失一般性,本发明实施例的白盒加密方法也可以用于加密其他长度明文数据。

根据本发明实施例的白盒加密方法,第一编码保护步骤中,使用随机数生成16个PS查找表,PS查找表为设定的非线性查找表,将128位的原始数据拆分成16个8位数据,通过PS查找表分别对16个8位数据进行随机数掩码保护得到输入数据。其中,PS查找表进行的是非线性替换,此时可以通过较小的非线性查找表实现替换保护效果,进而可以节省加密所需空间。也即,第一编码保护步骤中执行的操作为:利用PS查找表将输入数据映射为查表后的输入数据,也即PS混淆。其中,PS查找表所占用的空间为16*256字节=4KB。在此基础上,首轮轮运算操作中,编码保护的逆操作为PS混淆的逆操作,也即逆PS混淆。

其中,PS混淆指代的是利用PS查找表,将输入数据映射为查表后的数据

根据本发明实施例的白盒加密方法,加密运算步骤包括:执行查找表TyBox的查表操作,其中,首轮轮运算操作的查找表TyBox由其对应的编码保护的逆操作、轮密钥加、字节替换和列混合和矩阵混淆得到;中间轮轮运算操作的查找表TyBox由其对应的逆矩阵混淆、轮密钥加、字节替换和列混合、矩阵混淆得到;末轮轮运算操作的查找表TyBox由其对应的逆矩阵混淆、轮密钥加、字节替换、列混合和逆列混合得到。其中,十轮轮运算操作的查找表TyBox所需要的空间为10*16*256*4=160KB,查找表TyBox分别对应十轮轮运算操作中的轮密钥加、字节替换和列混合,且查找表对应16个8位数据输入和32位数据输出。

根据本发明实施例的白盒加密方法,加密运算步骤还包括相邻轮运算操作之间的转换操作。转换操作中:执行查找表Mixing的查表操作,其中,查找表Mixing用于将轮运算结果的128位数据拆分为16个8位数据。其中,查找表Mixing组合了逆矩阵混淆和矩阵混淆,对于末轮轮运算操作而言,其矩阵混淆由逆列混合代替。也即,首轮轮运算操作的查找表Mixing和中间轮轮运算操作的查找表Mixing均由逆矩阵混淆和矩阵混淆得到;末轮轮运算操作的查找表Mixing由逆矩阵混淆和逆列混合得到。通过查找表Mixing将经过32*32矩阵混淆的运算结果转换为4个8*8矩阵混淆的数据。查找表Mixing所需要的空间为10*16*256*4=160KB。其中,由于查找表TyBox可以去除8*8位矩阵混淆,但是不能去除32*32位矩阵混淆,所以需要查找表Mixing对查找表TyBox的输出进行处理。查找表Mixing的目的是去除查找表TyBox中添加的32*32位矩阵混淆,并增加8*8位矩阵混淆做为下一轮轮运算操作的输入。

根据本发明实施例的白盒加密方法,加密运算步骤中首轮轮运算操作和中间轮轮运算操作的过程请参考图3,末轮轮运算操作的过程请参考图4,具体的,查找表TyBox用于每轮轮运算操作。此外,查找表Mixing用于对轮运算操作的轮运算结构进行处理。查找表Mixing执行混淆操作的过程请参考图5。查找表TyBox增加了混淆运算,查找表Mixing予以还原,在不降低安全性的同时将末轮轮运算操作和前面的轮运算操作统一了起来。相比本发明实施例提及的前述方案,查找表占用资源可以大幅减少。

根据本发明的实施例,加密运算步骤中:

对轮运算结果进行异或操作,得到查找表Mixing的输入;

对查找表Mixing的输出进行异或操作,得到下一轮轮运算操作对应查找表TyBox的输入。

根据本发明的实施例,对查找表TyBox的输出进行异或操作,以及对查找表Mixing的输出进行异或操作,均没有用到查找表,而是直接进行,进而可以进一步降低白盒加密算法所需的存储空间。也即,本发明实施例的白盒加密算法,其无需用到上述提及的查找表TypeⅣ,进而可以节省至少336KB的空间。

根据本发明实施例的白盒加密方法,上述提及的PS查找表、查找表TyBox和查找表Mixing以数组方式存储时总共占用空间为4KB+160KB+160KB=324KB,具体请参考下表:

表2

根据本发明实施例的白盒加密方法,中间轮轮运算操作为八轮,进而此时轮运算操作总共十轮。

根据本发明实施例的白盒加密方法,对每轮轮运算操作中的带混淆的输出进行异或,以作为下一轮轮运算操作的输入或者作为最终的加密数据,加密预算步骤中除了查找表TyBox和查找表Mixing之外不需要额外的查找表,因此可以减少空间占用。具体的,参考表1,Type IV里的查找表用于辅助Type I/II/III的运算,其实现的是对输入数据的异或操作,输入的是带混淆的数据,Type IV查找表的效果是去掉混淆,对原始数据进行异或后再次进行不同的混淆,Type IV查找表输出的是异或后加入新混淆的数据。相比之下,本发明实施例的白盒加密方法,每轮轮运算操作中,其会直接对带混淆的数据进行异或,并不会在异或后加入新的混淆,也即对查找表TyBox的输出进行异或操作以及对查找表Mixing的输出进行异或操作时均不会用到查找表,因此无需Type IV里的查找表,能够减少336KB的空间。

根据本发明第二方面的实施例,提供一种白盒加密装置,请参见图6,包括:

第一编码保护模块100,用于对原始数据进行编码保护得到输入数据;

加密运算模块200,用于进行轮运算操作,轮运算操作包括首轮轮运算操作、若干轮中间轮轮运算操作和末轮轮运算操作,首轮轮运算操作包括编码保护的逆操作、轮密钥加、字节替换、列混合和矩阵混淆,中间轮轮运算操作包括逆矩阵混淆、轮密钥加、字节替换、列混合和矩阵混淆,末轮轮运算操作包括逆矩阵混淆、轮密钥加、字节替换、列混合和逆列混合;

首轮轮运算操作基于输入数据进行处理得到轮运算结果,中间轮轮运操作和末轮轮运算操作基于上一轮轮运算操作的轮运算结果进行处理得到加密数据。

根据本发明实施例的白盒加密装置,加密运算模块200运行过程中变更了混淆操作,且加密运算模块200运行过程中执行的末轮轮运算操作除了最后逆列混合操作之外都和之前执行的轮运算操作(包括首轮轮运算操作和中间轮轮运算操作)统一了起来,因此可以简化查找表。此外,第一编码保护模块较之于相关技术采用的线性保护可以节省存储空间。综上,本发明实施例的白盒加密装置所需要查找表占用空间较小,更能适应嵌入式平台等资源有限的场景应用。

根据本发明的实施例,第一编码保护模块100用于对原始数据进行随机数掩码保护得到输入数据。例如,第一编码保护模块100使用随机数生成16个PS查找表,且将128位的原始数据拆分成16个8位数据,通过PS查找表分别对16个8位数据进行随机数掩码保护得到输入数据。

根据本发明的实施例,加密运算模块200运行时执行查找表TyBox的查表操作。

根据本发明的实施例,加密运算模块200运行时执行查找表Mixing的查表操作。

根据本发明的实施例,加密运算模块200运行过程中执行八轮中间轮轮运算操作。

本发明实施例的白盒加密装置在运行的时候,对每轮轮运算操作中的带混淆的输出进行异或,以作为下一轮轮运算操作的输入或者作为最终的加密数据,其异或操作均未采用查找表,进而除了查找表TyBox和查找表Mixing之外不需要额外的查找表。

本发明第一方面实施例的内容都可以用于解释本发明第二方面实施例的内容,因此此处不进行赘述。

根据本发明第三方面的实施例,请参见图7,提供一种白盒解密方法,包括:

第二编码保护步骤,对加密数据进行编码保护得到输入数据;

解密运算步骤,包括轮运算操作,轮运算操作包括首轮轮运算操作、若干轮中间轮轮运算操作和末轮轮运算操作,首轮轮运算操作包括编码保护的逆操作、轮密钥加、逆字节替换、逆列混合和矩阵混淆,中间轮轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换、逆列混合和矩阵混淆,末轮轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换和逆列混合;

首轮轮运算操作基于输入数据进行处理得到轮运算结果,中间轮轮运操作和末轮轮运算操作基于上一轮轮运算操作的轮运算结果进行处理得到原文。

根据本发明实施例的白盒解密方法,其和第一方面实施例提及的白盒加密方法对应,因此技术效果也对应。

根据本发明的实施例,第二编码保护步骤中,对加密数据进行随机数掩码保护得到输入数据。例如,第二编码保护步骤中,使用随机数生成16个PS查找表,且将128位的加密数据拆分成16个8位数据,通过PS查找表分别对16个8位数据进行随机数掩码保护得到输入数据。

根据本发明的实施例,解密运算步骤中,执行查找表InvTyBox的查表操作,查找表TyBox由每轮轮运算操作的逆矩阵混淆(或者逆操作)、轮密钥加、逆字节替换、逆列混合和矩阵混淆得到。

根据本发明的实施例,解密运算步骤中,执行查找表Mixing的查表操作,查找表Mixing由逆矩阵混淆和矩阵混淆(或者逆列混合)得到。

根据本发明的实施例,解密运算步骤中,中间轮轮运算操作为八轮。

前述几个方面实施例的内容都可以用于解释本发明实施例的白盒解密方法,因此此处不进行赘述。

根据本发明第四方面实施例的白盒解密装置,请参见图8,包括:

第二编码保护模块300,用于对加密数据进行编码保护得到输入数据;

解密运算模块400,用于对输入数据进行轮运算操作,轮运算操作包括首轮轮运算操作、若干轮中间轮轮运算操作和末轮轮运算操作,首轮轮运算操作包括编码保护的逆操作、轮密钥加、逆字节替换、逆列混合和矩阵混淆,中间轮轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换、逆列混合和矩阵混淆,末轮轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换和逆列混合;

首轮轮运算操作基于输入数据进行处理得到轮运算结果,中间轮轮运操作和末轮轮运算操作基于上一轮轮运算操作的轮运算结果进行处理得到原文。

根据本发明实施例的白盒解密装置,其和第二方面实施例提及的白盒加密装置对应,因此技术效果也对应。

根据本发明实施例的白盒解密装置,第二编码保护模块300用于对加密数据进行随机数掩码保护得到输入数据。例如,第二编码保护模块300使用随机数生成16个PS查找表,且将128位的加密数据拆分成16个8位数据,通过PS查找表分别对16个8位数据进行随机数掩码保护得到输入数据。

根据本发明的实施例,解密运算模块400运行时,执行查找表InvTyBox的查表操作,查找表InvTyBox由逆矩阵混淆(或者编码保护的逆操作)、轮密钥加、逆字节替换、逆列混合和矩阵混淆得到。

根据本发明的实施例,解密运算模块400运行时,执行查找表InvMixing的查表操作,查找表InvMixing由逆矩阵混淆和矩阵混淆(或者逆列混合)得到。

根据本发明的实施例,解密运算模块400运行过程中执行八轮中间轮轮运算操作。

根据本发明第五方面的实施例,提供一种电子设备的实体结构示意图,如图9所示,该电子设备可以包括:处理器(processor)910、通信接口(Communications Interface)920、存储器(memory)930和总线940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的逻辑指令,以执行如下方法:第一编码保护步骤,对原始数据进行编码保护得到输入数据;加密运算步骤,包括轮运算操作,轮运算操作包括首轮轮运算操作、若干轮中间轮轮运算操作和末轮轮运算操作,首轮轮运算操作包括编码保护的逆操作、轮密钥加、字节替换、列混合和矩阵混淆,中间轮轮运算操作包括逆矩阵混淆、轮密钥加、字节替换、列混合和矩阵混淆,末轮轮运算操作包括逆矩阵混淆、轮密钥加、字节替换、列混合和逆列混合;首轮轮运算操作基于输入数据进行处理得到轮运算结果,中间轮轮运操作和末轮轮运算操作基于上一轮轮运算操作的轮运算结果进行处理得到加密数据。或者,处理器910可以调用存储器930中的逻辑指令,以执行如下方法:第二编码保护步骤,对加密数据进行编码保护得到输入数据;解密运算步骤,包括轮运算操作,轮运算操作包括首轮轮运算操作、若干轮中间轮轮运算操作和末轮轮运算操作,首轮轮运算操作包括编码保护的逆操作、轮密钥加、逆字节替换、逆列混合和矩阵混淆,中间轮轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换、逆列混合和矩阵混淆,末轮轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换和逆列混合;首轮轮运算操作基于输入数据进行处理得到轮运算结果,中间轮轮运操作和末轮轮运算操作基于上一轮轮运算操作的轮运算结果进行处理得到原文。

此外,上述的存储器930中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在计算机可读取存储介质中。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

进一步地,本发明实施例公开一种计算机程序产品,计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:第一编码保护步骤,对原始数据进行编码保护得到输入数据;加密运算步骤,包括轮运算操作,轮运算操作包括首轮轮运算操作、若干轮中间轮轮运算操作和末轮轮运算操作,首轮轮运算操作包括编码保护的逆操作、轮密钥加、字节替换、列混合和矩阵混淆,中间轮轮运算操作包括逆矩阵混淆、轮密钥加、字节替换、列混合和矩阵混淆,末轮轮运算操作包括逆矩阵混淆、轮密钥加、字节替换、列混合和逆列混合;首轮轮运算操作基于输入数据进行处理得到轮运算结果,中间轮轮运操作和末轮轮运算操作基于上一轮轮运算操作的轮运算结果进行处理得到加密数据。再例如,当程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法:第二编码保护步骤,对加密数据进行编码保护得到输入数据;解密运算步骤,包括轮运算操作,轮运算操作包括首轮轮运算操作、若干轮中间轮轮运算操作和末轮轮运算操作,首轮轮运算操作包括编码保护的逆操作、轮密钥加、逆字节替换、逆列混合和矩阵混淆,中间轮轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换、逆列混合和矩阵混淆,末轮轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换和逆列混合;首轮轮运算操作基于输入数据进行处理得到轮运算结果,中间轮轮运操作和末轮轮运算操作基于上一轮轮运算操作的轮运算结果进行处理得到原文。

另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:第一编码保护步骤,对原始数据进行编码保护得到输入数据;加密运算步骤,包括轮运算操作,轮运算操作包括首轮轮运算操作、若干轮中间轮轮运算操作和末轮轮运算操作,首轮轮运算操作包括编码保护的逆操作、轮密钥加、字节替换、列混合和矩阵混淆,中间轮轮运算操作包括逆矩阵混淆、轮密钥加、字节替换、列混合和矩阵混淆,末轮轮运算操作包括逆矩阵混淆、轮密钥加、字节替换、列混合和逆列混合;首轮轮运算操作基于输入数据进行处理得到轮运算结果,中间轮轮运操作和末轮轮运算操作基于上一轮轮运算操作的轮运算结果进行处理得到加密数据。再例如,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法:第二编码保护步骤,对加密数据进行编码保护得到输入数据;解密运算步骤,包括轮运算操作,轮运算操作包括首轮轮运算操作、若干轮中间轮轮运算操作和末轮轮运算操作,首轮轮运算操作包括编码保护的逆操作、轮密钥加、逆字节替换、逆列混合和矩阵混淆,中间轮轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换、逆列混合和矩阵混淆,末轮轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换和逆列混合;首轮轮运算操作基于输入数据进行处理得到轮运算结果,中间轮轮运操作和末轮轮运算操作基于上一轮轮运算操作的轮运算结果进行处理得到原文。

以上所描述的装置实施例仅仅是示意性的,其中作为单独部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个位置,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。

下面以包括十轮轮运算操作的情形对本发明其中一个实施例的白盒加密方法进行具体描述:

设k为密钥,k0,k1,…,k10为16字节的轮密钥,则AES-128加密流程可以描述为:

令ki’=ShiftRows(ki),则AES-128加密流程可以变换为:

state←plaintext

for r=0…8

AddRoundKey(state;kr)

ShiftRows(state)

SubBytes(state)

MixColumns(state)

AddRoundKey(state;k9)

ShiftRows(state)

SubBytes(state)

令ki’=ShiftRows(ki),则AES-128加密流程可以变换为:

state←plaintext

for r=0…8

ShiftRows(state)

AddRoundKey(state;kr’)

SubBytes(state)

MixColumns(state)

ShiftRows(state)

AddRoundKey(state;k9’)

SubBytes(state);

在以上基础上,使用随机数生成16个置换查号表,也即PS查找表,PS查找表用于对明文数据进行编码保护,将128位明文数据拆分为16个8位数据,每个8位数据输入映射为8位输出,共计16*256字节=4KB。

查找表TyBox用于每一轮运算的输入数据处理,对应于AddRoundKey、SubBytes和MixColumns这三个操作。组合了逆矩阵混淆(或者编码保护的逆操作)、行移位、轮密钥加、字节替换、列混合、矩阵混淆。对于第一轮运算操作(也即首轮轮运算操作),需要去除PS查找表混淆。对于最后一轮运算操作(也即末轮轮运算操作,也即第10轮运算操作)多一个轮密钥加。将每轮运算输入的128位数据拆分为16个8位数据,每个8位输入映射为32位输出,共计10*16*256*4=160KB。

查找表Mixing将经过32*32矩阵混淆的运算结果转换为4个8*8矩阵混淆的输入数据,组合了逆矩阵混淆和矩阵混淆。具体的,查找表Mixing将TyBox运算结果的128位数据拆分为16个8位数据,每个8位输入映射为32位输出,共计10*16*256*4=160KB。其中,第10轮的矩阵混淆由逆列混合代替。

以上加密过程可以概括如下:

根据明文数据查找PS查找表,得到128位输入数据;

每一轮运算时,先对输入的数据做行移位调整字节次序,然后将128位输入数据按32位分为4份,对每份32位的数据按8位分为4份,通过查找表TyBox得到4个32位输出;然后将这4个32位输出异或后的结果按8位分为4份,查查找表Mixing得到4个32位输出,将这4个32位输出异或后即为运算结果。

第10轮运算结果即为最终加密结果,加密流程如下所示:

state←plaintext

PS(state)

for r=0…9

ShiftRows(state)

for i=0…3

TyBoxTables(state)

XOR(state)

MixingTables(state)

在以上基础上,根据本发明实施例的白盒加密方法,其涉及的解密查找表和解密过程如下:

设k为密钥,k0,k1,…,k10为16字节的轮密钥,则AES-128解密流程可以描述为:

state←ciphertext

AddRoundKey(state;k10)

for r=0…8

InvShiftRows(state)

InvSubBytes(state)

AddRoundKey(state;k[9-r])

InvMixColumns(state)

InvShiftRows(state)

InvSubBytes(state)

AddRoundKey(state;k0)

plaintext←state

出于方便考虑将AddRoundKey(state;k10)合并至第一轮中,出于安全性考虑最后一轮增加逆向列混合,则AES-128解密流程可以变换为:

state←ciphertext

AddRoundKey(state;k10)

InvShiftRows(state)

InvSubBytes(state)

AddRoundKey(state;k9)

InvMixColumns(state)

for r=1…9

InvShiftRows(state)

InvSubBytes(state)

AddRoundKey(state;k[9-r])

InvMixColumns(state)

MixColumns(state)

plaintext←state

在解密过程中涉及到的查找表包括查找表InvPS、查找表InvTyBox和查找表InvMixing。

查找表InvPS使用随机数生成16个置换查找表,用于对密文数据进行编码保护。具体的,查找表InvPS将128位密文数据拆分为16个8位数据,每个8位输入映射为8位输出。共计16*256=4KB。

查找表InvTyBox用于每一轮运算的输入数据处理,对应于InvSubBytes、AddRoundKey和InvMixColumns这三个操作,组合了逆矩阵混淆(或者编码保护的逆操作)、逆行移位、轮密钥加、逆字节替换、逆列混合和矩阵混淆。其中,第一轮轮运算操作需去除InvPS查找表混淆,此外,第一轮轮运算操作多一个轮密钥加。查找表InvTyBox将每轮运算输入的128位数据拆分为16个8位数据,每个8位输入映射为32位输出,共计10*16*256*4=160KB。

查找表InvMixing用于处理每一轮轮运算操作的运算结果,作为下一轮轮运算操作的输入数据。通过查找表InvMixing,将经过32*32矩阵混淆的运算结果转换为4个8*8矩阵混淆的输入数据,组合了逆矩阵混淆和矩阵混淆。其中,第十轮轮运算操作中的矩阵混淆由逆列混合代替。也即,在解密过程中,前九轮的轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换、逆列混合、矩阵混淆,第十轮的轮运算操作包括逆矩阵混淆、轮密钥加、逆字节替换和逆列混合。

加密第十轮的TyBox的矩阵混淆由列混合代替,解密第十轮的InvTyBox的混淆矩阵由逆列混合代替。

将InvTyBox运算结果的128位数据拆分为16个8位数据,每个8位输入映射为32位输出。共计10*16*256*4=160KB。

以上解密过程可以概括如下:

根据密文数据查InvPS查找表,得到128位输入数据;

每一轮运算时,先对输入的数据做逆行移位调整字节次序,然后将128位数据按32位分为4份;对每份32位数据按8位分为4份,查查找表InvTyBox得到4个32位输出;然后将这4个32位输出异或后的结果按8位分为4份,查查找表InvMixing得到4个32位输出,将这4个32位输出异或后即为运算结果。

第10轮运算结果即为最终解密结果,解密流程如下所示:

state←ciphertext

InvPS(state)

for r=0…9

InvShiftRows(state)

for i=0…3

InvTyBoxTables(state)

XOR(state)

InvMixingTables(state)

以上实施方式仅用于说明本发明,而非对本发明的限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行各种组合、修改或者等同替换,都不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围中。

技术分类

06120115939069