加密函数和解密函数生成方法、加密和解密方法以及相关装置技术领域
本发明涉及信息技术的领域,且具体来说,涉及加密函数和解密函数生成方法、加
密和解密方法以及相关装置。
背景技术
白盒模型是现有密码攻击模型中的典型模型。在白盒模型中,可以认为攻击者已
进入用于加密和解密计算的计算模块的系统并且已完全控制所述系统。也就是说,计算模
块F()对攻击者完全透明且攻击者可以在任何时候查看或修改所有数据的值,并且还可以
查看和修改任何计算步骤的中间结果。
因为已完全控制系统,所以白盒攻击者可以查看存储器中的所有数据。在常规密
码算法中,密钥在计算过程期间直接存储在存储器中。攻击者可以通过仅定位存储器中相
对随机的数据而以较高概率找到密钥。因此,常规密码算法非常易受白盒攻击者的攻击。为
了防止攻击者窃取白盒模型中的密钥,乔等人在2002年提出白盒密码术的概念并且设计用
于高级加密标准(Advanced Encryption Standard,AES)和数据加密标准(Data
Encryption Standard,DES)的白盒实施方法。白盒密码算法C一般包含两个部分:一个部分
是白盒加密和解密函数生成算法G,以及另一部分是生成的白盒加密函数E,和白盒解密函
数D,。如图1中所示,白盒加密和解密函数生成算法G接收两个输入:原始密钥K和随机种子,
并且生成白盒加密函数E,和白盒解密函数D,。白盒密码算法C=E,(P)将明文P加密成密文
C,并且白盒密码算法P=D'(C)将密文C解密成明文P。在E,和D,的数据段中并且在计算过程
期间,原始密钥K本身完全隐藏并且因此可以防止黑客窃取密钥。
目前,白盒加密和解密函数生成算法的设计想法类似并且一般实践具有以下两
点:
首先,计算改变成表查找并且随机仿射掩码层被添加到表的输入和输出。输出掩
码将在下一轮中通过输入掩码倒转。因此,最终输出值保持不变。第二,考虑到查找表的大
小,如果原始表格需要分成若干子表,单独计算出子表并且将计算结果XOR运算为原始表格
的输出,其中掩码层必须进行仿射变换。
然而,目前白盒加密和解密函数生成算法的设计是不完美的,因为白盒AES中的加
密和解密函数一般可以分成若干8位至8位预计算表T。表T可以被认为分别在AES中的S盒之
前和之后添加未知的仿射掩码层和未知的仿射掩码层F1,其中输入掩码层包含密钥
的1字节信息。目前,在已知S和T的情况下存在可以恢复输入和输出掩码层的算法。在恢复
两个连续连接轮中的T盒的掩码层之后,攻击者可以获得密钥的1字节信息。随后,通过重复
前述过程,可以恢复整个密钥。因此,实际上可以低攻击复杂性破解所有所揭示的白盒加密
和解密函数生成算法。
发明内容
本发明的实施例提供加密和解密函数生成方法、加密和解密方法以及相关装置,
这可以在揭示白盒加密和解密函数生成算法时确保用于白盒加密和解密函数中的密钥的
机密性并且增加攻击者恢复密钥的攻击复杂性。
以下技术方案用于本发明的实施例中。
根据第一方面,提供一种加密函数生成方法,其中所述方法包括:
接收用户输入的随机种子和原始密钥;
根据原始密钥生成R轮迭代计算所需的轮密钥,其中R轮迭代计算所需的轮密钥包
含第r轮的轮密钥,R表示生成加密函数所需的迭代计算的轮数,R是正整数并且1≤r≤R;
通过使用随机数产生器并且根据随机种子生成R轮迭代计算所需的仿射扩张掩码
以及R轮迭代计算所需的随机干扰数据,其中仿射扩张掩码用于将m比特数据变换成n比特
数据,m和n是预设正整数,n>m,R轮迭代计算所需的仿射扩张掩码包含第r轮的仿射扩张掩
码,并且R轮迭代计算所需的随机干扰数据包含第r轮的随机干扰数据;以及
生成加密函数,其中加密函数包含R轮迭代计算的预计算表,R轮迭代计算的预计
算表中的第r轮的预计算表包括第r轮的预设输入数据与对应于输入数据的输出数据之间
的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输入掩码数据,输出数据包含
第r轮的输出掩码数据以及第r轮的随机干扰数据,并且根据预设初始值、第r轮的轮密钥和
第r轮的仿射扩张掩码计算第r轮的输出掩码数据。
在第一方面的第一可能实施方式中,参考第一方面,仿射扩张掩码是根据F(x)=
A*x+b确定的,其中x是m维列向量,A和b是通过使用随机数产生器并且根据随机种子生成的
矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n维列向量,并且可以根据A和b确定F(x)。
在第一方面的第二可能实施方式中,参考第一方面或第一方面的第一可能实施方
式,第r轮的仿射扩张掩码包含第r轮的输入仿射扩张掩码和第r轮的输出仿射扩张掩码。
在第一方面的第三可能实施方式中,参考第一方面或第一方面的第二可能实施方
式,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同;
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
根据第二方面,提供加密方法,其中所述方法包括:
接收用户输入的明文;
根据包含在预存储的仿射扩张掩码和明文中的输入仿射扩张掩码计算输入掩码
数据,其中仿射扩张掩码用于将m比特数据仿射地变换成n比特数据,其中m和n是预设正整
数并且n>m;
使用预存储的加密函数根据输入掩码数据获得输出掩码数据,其中预存储的加密
函数包含R轮迭代计算的预计算表,R轮迭代计算的预计算表中的第r轮的预计算表包括第r
轮的预设输入数据与对应于输入数据的输出数据之间的一对一映射关系,第r轮的预设输
入数据包含第r轮的预设输入掩码数据,输出数据包含第r轮的输出掩码数据和第r轮的随
机干扰数据,并且根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输
出掩码数据,根据接收到的随机种子通过加密函数生成装置并且通过使用随机数产生器生
成第r轮的仿射扩张掩码和第r轮的随机干扰数据,1≤r≤R,R表示生成加密函数所需的迭
代计算的轮数;以及
根据输出掩码数据和包含在预存储的仿射扩张掩码中的输出仿射扩张掩码计算
对应于明文的密文。
在第二方面的第一可能实施方式中,参考第二方面,仿射扩张掩码是根据F(x)=
A*x+b确定的,其中x是m维列向量,A和b是通过使用随机数产生器并且根据随机种子生成的
矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n维列向量,并且可以根据A和b确定F(x)。
在第二方面的第二可能实施方式中,参考第二方面或第二方面的第一可能实施方
式,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同;以及
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
根据第三方面,提供解密函数生成方法,其中所述方法包括:
接收用户输入的随机种子和原始密钥;
根据原始密钥生成R轮迭代计算所需的轮密钥,其中R轮迭代计算所需的轮密钥包
含第r轮的轮密钥,R表示生成解密函数所需的迭代计算的轮数,R是正整数并且1≤r≤R;
通过使用随机数产生器并且根据随机种子生成R轮迭代计算所需的仿射扩张掩码
和R轮迭代计算所需的随机干扰数据,其中仿射扩张掩码用于将m比特数据仿射地变换成n
比特数据,m和n是预设正整数,n>m,R轮迭代计算所需的仿射扩张掩码包含第r轮的仿射扩
张掩码,并且R轮迭代计算所需的随机干扰数据包含第r轮的随机干扰数据;以及
生成解密函数,其中解密函数包含R轮迭代计算的预计算表,R轮迭代计算的预计
算表中的第r轮的预计算表包括第r轮的预设输入数据与对应于输入数据的输出数据之间
的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输入掩码数据,输出数据包含
第r轮的输出掩码数据和第r轮的随机干扰数据,并且根据预设初始值、第r轮的轮密钥和第
r轮的仿射扩张掩码计算第r轮的输出掩码数据。
在第三方面的第一可能实施方式中,参考第三方面,仿射扩张掩码是根据F(x)=
A*x+b确定是,其中x是m维列向量,A和b是通过使用随机数产生器并且根据随机种子生成的
矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n维列向量,并且可以根据A和b确定F(x)。
在第三方面的第二可能实施方式中,参考第三方面或第三方面的第一可能实施方
式,第r轮的仿射扩张掩码包含第r轮的输入仿射扩张掩码和第r轮的输出仿射扩张掩码。
在第三方面的第三可能实施方式中,参考第三方面或第三方面的第二可能实施方
式,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同;
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
根据第四方面,提供解密方法,其中所述方法包括:
接收用户输入的密文;
根据包含在预存储的仿射扩张掩码和密文中的输入仿射扩张掩码计算输入掩码
数据,其中仿射扩张掩码用于将m比特数据仿射地变换成n比特数据,其中m和n是预设正整
数并且n>m;
使用预存储的加密函数根据输入掩码数据获得输出掩码数据,其中预存储的解密
函数包含R轮迭代计算的预计算表,R轮迭代计算的预计算表中的第r轮的预计算表包括第r
轮的预设输入数据与对应于输入数据的输出数据之间的一对一映射关系,第r轮的预设输
入数据包含第r轮的预设输入掩码数据,输出数据包含第r轮的输出掩码数据和第r轮的随
机干扰数据,并且根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输
出掩码数据,根据接收到的随机种子通过解密函数生成装置并且通过使用随机数产生器生
成第r轮的仿射扩张掩码和第r轮的随机干扰数据,1≤r≤R,并且R表示生成解密函数所需
的迭代计算的轮数;以及
根据输出掩码数据和包含在预存储的仿射扩张掩码中的输出仿射扩张掩码计算
对应于密文的明文。
在第四方面的第一可能实施方式中,参考第四方面,仿射扩张掩码是根据F(x)=
A*x+b确定的,其中x是m维列向量,A和b是通过使用随机数产生器并且根据随机种子生成的
矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n维列向量,并且可以根据A和b确定F(x)。
在第四方面的第二可能实施方式中,参考第四方面或第四方面的第一可能实施方
式,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同;
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
根据第五方面,提供加密函数生成装置,其中所述装置包含随机种子接收单元、密
钥接收单元、密钥生成单元、随机数生成单元和加密函数生成单元;
随机种子接收单元用于接收用户输入的随机种子;
密钥接收单元用于接收用户输入的原始密钥;
密钥生成单元用于根据原始密钥生成R轮迭代计算所需的轮密钥,其中R轮迭代计
算所需的轮密钥包含第r轮的轮密钥,R表示生成加密函数所需的迭代计算的轮数,R是正整
数并且1≤r≤R;
随机数生成单元用于通过使用随机数产生器并且根据随机种子生成R轮迭代计算
所需的仿射扩张掩码和R轮迭代计算所需的随机干扰数据,其中仿射扩张掩码用于将m比特
数据仿射地变换成n比特数据,m和n是预设正整数,n>m,R轮迭代计算所需的仿射扩张掩码
包含第r轮的仿射扩张掩码,并且R轮迭代计算所需的随机干扰数据包含第r轮的随机干扰
数据;以及
加密函数生成单元用于生成加密函数,其中加密函数包含R轮迭代计算的预计算
表,R轮迭代计算的预计算表中的第r轮的预计算表包括第r轮的预设输入数据与对应于输
入数据的输出数据之间的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输入掩
码数据,输出数据包含第r轮的输出掩码数据和第r轮的随机干扰数据,并且根据预设初始
值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码数据。
在第五方面的第一可能实施方式中,参考第五方面,仿射扩张掩码是根据F(x)=
A*x+b确定的,其中x是m维列向量,A和b是通过使用随机数产生器并且根据随机种子生成的
矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n维列向量,并且可以根据A和b确定F(x)。
在第五方面的第二可能实施方式中,参考第五方面或第五方面的第一可能实施方
式,第r轮的仿射扩张掩码包含第r轮的输入仿射扩张掩码和第r轮的输出仿射扩张掩码。
在第五方面的第三可能实施方式中,参考第五方面或第五方面的第二可能实施方
式,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同;
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
根据第六方面,提供加密装置,其中所述加密装置包含明文接收单元、输入掩码数
据计算单元、搜索单元和密文计算单元;
明文接收单元用于接收用户输入的明文;
输入掩码数据计算单元用于根据包含在预存储的仿射扩张掩码和明文中的输入
仿射扩张掩码计算输入掩码数据,其中仿射扩张掩码用于将m比特数据仿射地变换成n比特
数据,其中m和n是预设正整数并且n>m;
搜索单元用于使用预存储的加密函数根据输入掩码数据获得输出掩码数据,其中
所述预存储的加密函数包含R轮迭代计算的预计算表,R轮迭代计算的预计算表中的第r轮
的预计算表包括第r轮的预设输入数据与对应于输入数据的输出数据之间的一对一映射关
系,第r轮的预设输入数据包含第r轮的预设输入掩码数据,输出数据包含第r轮的输出掩码
数据和第r轮的随机干扰数据,并且根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩
码计算第r轮的输出掩码数据,根据接收到的随机种子通过加密函数生成装置并且通过使
用随机数产生器生成第r轮的仿射扩张掩码和第r轮的随机干扰数据,1≤r≤R,并且R表示
生成加密函数所需的迭代计算的轮数;以及
密文计算单元用于根据输出掩码数据和包含在预存储的仿射扩张掩码中的输出
仿射扩张掩码计算对应于明文的密文。
在第六方面的第一可能实施方式中,参考第六方面,仿射扩张掩码是根据F(x)=
A*x+b确定的,其中x是m维列向量,A和b是通过使用随机数产生器并且根据随机种子生成的
矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n维列向量,并且可以根据A和b确定F(x)。
在第六方面的第二可能实施方式中,参考第六方面或第六方面的第一可能实施方
式,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同;
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
根据第七方面,提供解密函数生成装置,其中所述装置包含随机种子接收单元、密
钥接收单元、密钥生成单元、随机数生成单元和解密函数生成单元;
随机种子接收单元用于接收用户输入的随机种子;
密钥接收单元用于接收用户输入的原始密钥;
密钥生成单元用于根据原始密钥生成R轮迭代计算所需的轮密钥,其中R轮迭代计
算所需的轮密钥包含第r轮的轮密钥,R表示生成解密函数所需的迭代计算的轮数,R是正整
数并且1≤r≤R;
随机数生成单元用于通过使用随机数产生器并且根据随机种子生成R轮迭代计算
所需的仿射扩张掩码和R轮迭代计算所需的随机干扰数据,其中仿射扩张掩码用于将m比特
数据仿射地变换成n比特数据,m和n是预设正整数,n>m,R轮迭代计算所需的仿射扩张掩码
包含第r轮的仿射扩张掩码,并且R轮迭代计算所需的随机干扰数据包含第r轮的随机干扰
数据;以及
解密函数生成单元用于生成解密函数,其中解密函数包含R轮迭代计算的预计算
表,R轮迭代计算的预计算表中的第r轮的预计算表包括第r轮的预设输入数据与对应于输
入数据的输出数据之间的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输入掩
码数据,输出数据包含第r轮的输出掩码数据和第r轮的随机干扰数据,并且根据预设初始
值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码数据。
在第七方面的第一可能实施方式中,参考第七方面,仿射扩张掩码是根据F(x)=
A*x+b确定的,其中x是m维列向量,A和b是通过使用随机数产生器并且根据随机种子生成的
矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n维列向量,并且可以根据A和b确定F(x)。
在第七方面的第二可能实施方式中,参考第七方面或第七方面的第一可能实施方
式,第r轮的仿射扩张掩码包含第r轮的输入仿射扩张掩码和第r轮的输出仿射扩张掩码。
在第七方面的第三可能实施方式中,参考第七方面或第七方面的第二可能实施方
式,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同;
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
根据第八方面,提供解密装置,其中所述解密装置包含密文接收单元、输入掩码数
据计算单元、搜索单元和明文计算单元;
密文接收单元用于接收用户输入的密文;
输入掩码数据计算单元用于根据包含在预存储的仿射扩张掩码和密文中的输入
仿射扩张掩码计算输入掩码数据,其中仿射扩张掩码用于将m比特数据仿射地变换成n比特
数据,其中m和n是预设正整数并且n>m;
搜索单元用于使用预存储的加密函数根据输入掩码数据获得输出掩码数据,其中
预存储的解密函数包含R轮迭代计算的预计算表,R轮迭代计算的预计算表中的第r轮的预
计算表包括第r轮的预设输入数据与对应于输入数据的输出数据之间的一对一映射关系,
第r轮的预设输入数据包含第r轮的预设输入掩码数据,输出数据包含第r轮的输出掩码数
据和第r轮的随机干扰数据,并且根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码
计算第r轮的输出掩码数据,根据接收到的随机种子通过解密函数生成装置并且通过使用
随机数产生器生成第r轮的仿射扩张掩码和第r轮的随机干扰数据,1≤r≤R,并且R表示生
成解密函数所需的迭代计算的轮数;以及
明文计算单元用于根据输出掩码数据和包含在预存储的仿射扩张掩码中的输出
仿射扩张掩码计算对应于密文的明文。
在第八方面的第一可能实施方式中,参考第八方面,仿射扩张掩码是根据F(x)=
A*x+b确定的,其中x是m维列向量,A和b是通过使用随机数产生器并且根据随机种子生成的
矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n维列向量,并且可以根据A和b确定F(x)。
在第八方面的第二可能实施方式中,参考第八方面或第八方面的第一可能实施方
式,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同;
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
本发明的实施例提供加密函数和解密函数生成方法、加密和解密方法以及相关装
置。加密函数生成方法包括:接收用户输入的随机种子和原始密钥;根据原始密钥生成R轮
迭代计算所需的轮密钥,其中R轮迭代计算所需的轮密钥包含第r轮的轮密钥,R表示生成加
密函数所需的迭代计算轮数,R是正整数并且1≤r≤R;通过使用随机数产生器并且根据随
机种子生成R轮迭代计算所需的仿射扩张掩码和R轮迭代计算所需的随机干扰数据,其中仿
射扩张掩码用于将m比特数据仿射地变换成n比特数据,m和n是预设正整数,n>m,R轮迭代计
算所需的仿射扩张掩码包含第r轮的仿射扩张掩码,并且R轮迭代计算所需的随机干扰数据
包含第r轮的随机干扰数据;以及生成加密函数,其中加密函数包含R轮迭代计算的预计算
表,R轮迭代计算的预计算表中的第r轮的预计算表包括第r轮的预设输入数据与对应于输
入数据的输出数据之间的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输入掩
码数据,输出数据包含第r轮的输出掩码数据和第r轮的随机干扰数据,并且根据预设初始
值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码数据。
解密函数生成方法包括:接收用户输入的随机种子和原始密钥;根据原始密钥生
成R轮迭代计算所需的轮密钥,其中R轮迭代计算所需的轮密钥包含第r轮的轮密钥,R表示
生成解密函数所需的迭代计算的轮数,R是正整数并且1≤r≤R;通过使用随机数产生器并
且根据随机种子生成R轮迭代计算所需的仿射扩张掩码和R轮迭代计算所需的随机干扰数
据,其中仿射扩张掩码用于将m比特数据仿射地变换成n比特数据,m和n是预设正整数,n>m,
R轮迭代计算所需的仿射扩张掩码包含第r轮的仿射扩张掩码,并且R轮迭代计算所需的随
机干扰数据包含第r轮的随机干扰数据;以及生成解密函数,其中解密函数包含R轮迭代计
算的预计算表,R轮迭代计算的预计算表中的第r轮的预计算表包括第r轮的预设输入数据
与对应于输入数据的输出数据之间的一对一映射关系,第r轮的预设输入数据包含第r轮的
预设输入掩码数据,输出数据包含第r轮的输出掩码数据和第r轮的随机干扰数据,并且根
据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码数据。
因为大量随机干扰数据添加在对应于加密函数和解密函数的预计算表中,所以在
攻击者找到现实预计算表之前,攻击者无法使用现有技术来以225的计算复杂性恢复包含在
预计算表中的密钥字节。因此,攻击者必须尝试所有可能的仿射子集。也就是说,攻击者需
要穷尽性地尝试所有N(n,m)个不同的m维仿射子集且随后尝试恢复密钥,其中计算复杂性
是这显著增加攻击的复杂性并且在揭示白盒加密函数或
解密函数生成方法的情况下确保用于白盒加密函数或解密函数中的密钥的机密性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现
有技术描述中所需要使用的附图作简单介绍。显而易见地,下面描述中的附图仅仅示出本
发明的一些实施例,并且对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还
可以根据这些附图获得其它附图。
图1是根据本发明的实施例的白盒加密的示意图;
图2-1是根据本发明的实施例的在AES-128加密过程中的AK操作的示意图;
图2-2是根据本发明的实施例的在AES-128加密过程中的SB操作的示意图;
图2-3是根据本发明的实施例的在AES-128加密过程中的SR操作的示意图;
图2-4是根据本发明的实施例的在AES-128加密过程中的MC操作的示意图;
图3是根据本发明的实施例的在未拆分列计算的情况下生成预计算表的示意图;
图4是根据本发明的实施例的拆分列计算且生成预计算表的示意图;
图5是根据本发明的实施例的在拆分列计算之后在连续两轮迭代输入和输出数据
之间的关系的示意图;
图6是根据本发明的实施例的在拆分列计算之后在连续两轮迭代输入和输出数据
之间的另一关系的示意图;
图7是根据本发明的实施例的加密和解密系统的架构的示意图;
图8是根据本发明的实施例的加密函数生成方法的示意性流程图;
图9是根据本发明的实施例的预计算表的示意性组成图;
图10是根据本发明的实施例的加密方法的示意性流程图;
图11是根据本发明的实施例的明文的示意性组成图;
图12是根据本发明的实施例的解密函数生成方法的示意性流程图;
图13是根据本发明的实施例的解密方法的示意性流程图;
图14是根据本发明的实施例的加密函数生成装置的第一示意性结构图;
图15是根据本发明的实施例的加密装置的第一示意性结构图;
图16是根据本发明的实施例的解密函数生成装置的第一示意性结构图;
图17是根据本发明的实施例的解密装置的第一示意图;
图18是根据本发明的实施例的加密函数生成装置的第二示意性结构图;
图19是根据本发明的实施例的加密装置的第二示意性结构图;
图20是根据本发明的实施例的解密函数生成装置的第二示意性结构图;以及
图21是根据本发明的实施例的解密装置的第二示意图。
具体实施方式
首先,为了清楚且简洁地描述每个实施例,下文简单描述若干概念:
二进制字段(GF2):界定加法和乘法的二进制集合{0,1},其中加法等效于按位XOR
并且乘法等效于按位AND。在表1和表2中示出二进制字段GF2上的运算规则:
表1
加法
0
1
0
0
1
1
1
0
表2
乘法
0
1
0
0
0
1
0
1
仿射变换:仿射变换等效于线性变换加上转换,并且可以通过使用矩阵运算表达
为F(x)=A*x+b,其中x是m维度列向量,A是n*m矩阵,b是n维列向量并且输出值是n维列向
量。在位长度扩张的情况下,n>m。示例性地,用于将3维列向量映射到4维列向量的仿射变换
可以表达为:
应注意,线性变换L(x)=A*x和仿射变换F(x)=A*x+b两者满足线性关系L(x)+L
(y)=L(x+y)=A*(x+y)。此专利中的仿射变换默认地包含线性变换(也就是说,当转换量b
=0时的特定仿射变换)。另外,此专利中提及的仿射变换都界定在多维二进制字段空间中。
仿射子集:仿射子集是指借助于从m维二进制字段空间到n维二进制字段空间的仿
射变换F(x)Ax+b通过将m维二进制字段空间的通用集合映射到目标n维空间中形成的m维子
集,其定义为如下:
Y={y=A·x+b|x∈(GF2)m}
白盒密码术:一般是指在标准对称密码算法中的特定实施方法,并且功能上等效
于使用特定密钥的加密或解密函数。所生成的加密和解密函数将所使用的密钥整合到计算
过程中,而不是直接显示密钥。即使攻击者检查白盒加密或解密计算过程中的任何中间值,
攻击者也无法直接看到密钥。因此,白盒密码术可以用于保护用于密码算法中的密钥。
S盒:通常用于密码算法中的基本模块和计算单元,其一般是具有固定长度输入和
固定长度输出的固定函数。例如,用于AES中的S盒是具有8位输入和8位输出的固定函数;并
且用于DES中的S盒是具有6位输入和4位输出的固定函数。
DES:国际块密码标准联邦信息处理标准(Federal Information Processing
Standards,FIPS)公开案(公开案,PUB)46-2,其中块长度是64位并且密钥是64位(仅56位是
有效的),其目前已被破解。
AES:国际块密码标准FIPS PUB 127,其支持三种长度的密钥:128位、122位和256
位,其中三个版本的所有明文和密文长度是128位(16字节)。例如,下文通过使用AES-128阐
述AES:AES-128处理16字节明文(4*4字节矩阵)并且迭代10轮,其中每一轮包含四个操作:
(1)添加轮密钥(AddRoundKey,AK):将轮密钥XOR运算到当前状态。
(2)替代字节(SubBytes,SB);以S盒替代所有当前字节。
(3)移位行(ShiftRow,SR):将第i行周期性地向左移位i字节,0<=i<=3。
(4)混合列(MixColumn,MC):将每个列的4字节乘以有限域GF256上的矩阵,其中示
例性地,矩阵可为如下:
假设在一轮迭代期间的四个操作的过程中,AK过程的输入是
并且密钥是则可以执行图2-1中所示
的AK过程以产生第一运算结果第一运算结果用作SB过程的输入
并且可以执行图2-2中所示的SB过程以产生第二运算结果第二
运算结果用作SR过程的输入并且可以执行图2-3中所示的SR过程以产生第三运算结果
并且第三运算结果用作MC过程的输入并且有限域GF256上的矩
阵设定成C(x),则可以执行图2-4中所示的MC过程以产生第四运算结果
应注意,最后一轮迭代不包含MC操作,但包含又一个AK,即,AK->SB->SR->AK。
应注意,因为SB和SR操作两者与单个字节有关,所以顺序可以改变,使得AES加密
操作为:(AK SR SB MC)(AK SR SB MC)(AK SR MC)……(AK SR SB MC);此外,因为AK将在
迭代状态下将每一轮的密钥的字节XOR运算到每个字节上,所以可以打乱密钥的字节,并且
随后AK与SR交换,使得AES等效地表达为SR(AK'SB MC)SR(AK'SB MC)SR(AK'SB MC)……SR
(AK'SB MC)。
类似地,AES的设计精密并且还可以用类似等效形式写出解密过程:
SR-1(AK'SB-1MC-1)SR-1(AK'SB-1MC-1)……SR-1(AK'SB-1MC-1),本文不再进一步对
其进行详细描述。
AES的实施方式如下:
如背景技术中所提及,可以借助于表查找实施AES的加密和解密过程,并且可以逐
列计算(AK SB MC)。然而,考虑到表大小,列(4字节输入和4字节输出)中的一者的计算过程
可以分成表查找的4次尝试。所述过程如下;
首先,布置若干符号。在预计算表的计算过程期间,每个中间状态值用对应符号表
示:
其中是第r轮的输入仿射掩码
并且Fr是第r轮的输出仿射掩码。
在拆分计算过程之前,如图3中所展示,假设根据输入列(y0,y1,y2,y3)计算此列
的第一轮的输出值(z0,z1,z2,z3),随后从图3中可以看出,yi经受输入仿射掩码的仿射
变换以产生xi,并且xi经受AK SB MC过程的变换以产生wi,并且wi经受输出仿射掩码F1i的
仿射变换以产生输出结果zi,其中0≤i≤3。在此过程中,主要表格需要从整个操作中形成
并且占据4n*24n位的空间。在表查找中,可以通过使用yi来在第i预计算表中查找而获得
zi。
在前述计算过程分成图4中所示的4个计算子过程之后,图3可以与图4比较以示出
MC分成MC0、MC1、MC2和MC3,F1i分成F1i[0]、F1i[1]、F1i[2]和F1i[3],并且zi分成zi0、zi1、zi2
和zi3。
因为MC是线性运算且MC等效于单独地将S盒的输出值的特定行乘以不同常数,并
且将乘积用作输出列向量的不同行的元素。示例性地,使用图4中所示的第一示意性子图作
为实例,假设S盒的输出值是t0并且MC运算所需的有限域GF256上的矩阵是
则
因此,图的计算结果可以细分成具有最小单元的4个预计算表。每个预计算表的输
入长度和输出长度相同,并且获得预计算表的方式的数据如下:
在拆分此列的运算之后,每个运算可以用于形成具有n*2n位大小的4个子表,其仅
占用4n*2n位,并且因此显著节省了存储空间。在表查找中,通过使用yi来在第j预计算表中
查找,可以获得zij(0≤j≤3)。下文描述前述拆分过程的合理性,使用i=0作为实例:
在不添加输入或输出仿射掩码的情况下,本领域的普通技术人员可以容易地证明
通过对当前轮(第1轮)的同一列中的w0j(0≤j≤3)执行XOR运算获得下一轮(第2轮)的现实
数据w0,即,w0=w00+w01+w02+w03,并且当前轮(第1轮)的输出w0用作下一轮的输入x0以继
续进行下一轮(第2轮)的表查找。所述过程在图5中示出。
在添加输入和输出仿射掩码之后,假设i=0,第1轮的输入仿射掩码是F00-1,第1轮
的输出掩码F10(x)=A*x+b分成4个等式:F10[j](x)=A*x+b[j](0≤j≤3),其中b=b[0]+b
[1]+b[2]+b[3]。因为z0j=F10[j](w0j),所以
z0=z00+z01+z02+z03
=F10[0](w00)+F10[1](w01)+F10[2](w02)+F10[3](w03)
=(A*w00+b[0])+(A*w01+b[1])+(A*w02+b[2])+(A*w03+b[3])
=A*(w00+w01+w02+w03)+(b[0]+b[1]+b[2]+b[3])
=A(w0)+b=F10(w0)
也就是说,计算出z0=F10(L*S(x0+k0)),其中L是MCj运算引入的乘数,并且k0是在
此轮运算中对应于x0的密钥字节。当前轮(第1轮)的输出z0用作下一轮的输入y0以继续进
行下一轮(第2轮)的表查找。在生成下一轮(第2轮)的表的过程期间,输入仿射掩码是F10-1
并且输出掩码是F10-1。因此,根据F10-1的变换,z0可以被正确地映射回现实数据x0。所述过程
如图6中所示。
z1=z10+z11+z12+z13
z2=z20+z21+z22+z23
类似地,z3=z30+z31+z32+z33。
出于前述等式的合理性,可以参考z0的描述,并且此处不再给出非详尽描述。
下文参考本发明的实施例中的附图清楚地描述本发明的实施例中的技术方案。显
然,所描述的实施例仅是本发明的实施例的一部分,而不是全部的实施例。本领域的普通技
术人员在不付出创造性劳动的前提下基于本发明的实施例获得的所有其它实施例应处于
本发明的保护范围内。
为了有助于清楚地描述本发明的实施例中的技术方案,例如“第一”和“第二”的词
语用于本发明的实施例中以区分提供基本上相同功能或目的的相同项或类似项。本领域的
普通技术人员应理解,例如“第一”和“第二”的词语并未限制数目和实施顺序。
首先,简单地描述提供于本发明的实施例中的加密和解密系统架构。如图7中所
示,加密和解密系统700包含加密函数生成装置1400、加密装置1500、解密函数生成装置
1600和解密装置1700。
在接收用户输入的随机种子和原始密钥之后,加密函数生成装置1400生成加密函
数701,并且随后将加密函数701发送到加密模块部署节点的加密装置1500。在接收用户输
入的随机种子和原始密钥之后,解密函数生成装置1600生成解密函数702,并且随后将解密
函数702发送到解密模块部署节点的解密装置1700。加密装置1500存储加密函数701。解密
装置1700存储解密函数702。加密函数701和解密函数702两者包含R轮迭代计算的预计算
表,其中R是正整数。
在接收用户输入的明文之后,加密装置1500根据存储于加密装置1500中的输入仿
射扩张掩码和输出仿射扩张掩码借助于在对应于加密函数701的轮迭代计算的预计算表中
的查找而获得对应于输入明文的密文。
在接收用户输入的密文之后,解密装置1700根据存储于解密装置1700中的输入仿
射扩张掩码和输出仿射扩张掩码借助于在对应于解密函数702的R轮迭代计算的预计算表
中的查找而获得对应于输入密文的明文。
具体来说,对于用于通过加密函数生成装置1400生成加密函数的详细方法,在加
密函数生成装置接收用户输入的随机种子和原始密钥之后,可以参考实施例1中的解决方
案;对于由加密装置1500执行的加密方法,在加密装置接收用户输入的明文之后,可以参考
实施例2中的解决方案;对于用于通过解密函数生成装置1600生成解密函数的详细方法,在
解密函数生成装置接收用户输入的随机种子和原始密钥之后,可以参考实施例3中的解决
方案;以及对于由解密装置1700执行的解密方法,在解密装置接收用户输入的密文之后,可
以参考实施例4中的解决方案,并且此处不再阐述。
应注意,预计算表是在根据所有可能输入值预计算出所有输出结果之后相应地存
储的数据表。示例性地:
为了计算例如f(x)=x'2+3x+2的函数,可以首先计算x的平方,随后可以逐步计算
3x,且最后将三项相加。
或者,可以执行例如f(0)=2,f(1)=6,…的预计算。
x,f(x)置于表格中作为记录,并且f(x)的值置于表的第x行中。
当需要计算f(x)时,仅需要查询对应于第x列的值,并且不需要根据前述详细步骤
执行逐步计算。因为在表格中执行预计算,所以表格称为预计算表。
实施例1
本发明实施例提供一种加密函数生成方法。具体来说,如图8中所示,所述方法包
括以下步骤:
801。加密函数生成装置获得随机种子和原始密钥。
具体来说,在本发明实施例中提供的加密函数生成方法中,加密函数生成装置首
先需要获得随机种子和原始密钥。
随机种子是固定长度位串,并且可以用于通过使用随机数产生器产生随机数。随
机数产生器可以被认为是函数g(x),其中输入是例如k位串的固定长度随机种子并且输出
是具有任何数目位的长度的随机数序列且用作随后使用的随机数源;以及密钥是一组信息
码并且密钥参与密码术的“运算”且对密码术的“运算”施加特定控制影响。DES支持64位长
度的密钥,并且AES支持具有三种类型的长度的密钥:128位、122位和256位。
802。加密函数生成装置根据原始密钥生成R轮迭代所需的轮密钥,其中R轮迭代计
算所需的轮密钥包含第r轮的轮密钥,R表示加密函数所需的迭代计算的轮数,R是正整数并
且1≤r≤R。
具体来说,对于其中加密函数生成装置生成R轮迭代计算所需的轮密钥的方法,在
获得原始密钥之后,可以参考AES标准并且在本发明的此实施例不描述细节。
803。加密函数生成装置通过使用随机数产生器并且根据随机种子生成R轮迭代计
算所需的仿射扩张掩码和R轮迭代计算所需的随机干扰数据。
具体来说,在本发明实施例中,仿射扩张掩码用于将m比特数据变换成n比特数据,
m和n是预设正整数,n>m,R轮迭代计算所需的仿射扩张掩码包含第r轮的仿射扩张掩码,并
且轮迭代计算所需的随机干扰数据包含第r轮的随机干扰数据。
本领域的普通技术人员可以理解,第r轮的仿射扩张掩码可以包含第r轮的输入仿
射扩张掩码和第r轮的输出仿射扩张掩码,这具体来说在本发明实施例中不受限制。
优选地,在本发明实施例中,根据F(x)=A*x+b确定仿射扩张掩码,其中x是m维列
向量,A和b是通过使用随机数产生器并且根据随机种子生成的矩阵,A是二进制字段上的具
有n*m大小的列满秩矩阵,换句话说,A是(n*m)大小的列满秩矩阵,b是n维列向量,并且可以
根据A和b确定F(x)。
应注意,在本发明实施例中,根据F(x)=A*x+b确定仿射扩张掩码,矩阵A的行数n
大于列数m,并且因此借助于仿射变换,x可以从m维列向量扩张成n维列向量。特别地,为了
防止在仿射变换之后的信息损耗,矩阵A需要是列满秩矩阵(也就是说,所有列向量是线性
独立的,秩(A)=m);对于列向量b,不强加任何要求并且其值是任意的。
本领域的普通技术人员可以理解,在生成第r轮的预计算表的过程期间,如果第r
轮的预设输入数据包含第(r-1)轮的掩码数据,即,如果第r轮的预设输入数据是0-(2n-1),
为了确保对应于彼此的串列的掩码层之间的相互抵消,第r轮的迭代计算所需的输入仿射
扩张掩码相反地为第(r-1)轮迭代计算所需的输出仿射扩张掩码的逆函数,并且1≤r≤R。
示例性地,假设r=1,第1轮迭代计算所需的输入仿射扩张掩码是并且F0是加
密过程中的输入仿射扩张掩码;假设r=3,第3轮迭代计算所需的输入仿射扩张掩码是
并且F2是第2轮迭代计算所需的输出仿射扩张掩码。
本领域的普通技术人员可以理解,根据随机种子,实际上通过使用随机数产生器
生成A和b。在确定A和b之后,可以确定F(x)=A*x+b,并且还可以确定其逆函数。因此,根据
随机种子,可以通过使用随机数产生器生成上文所列的所有仿射扩张掩码。
另外,在本发明实施例中,与现有技术相比较,进一步需要根据随机种子生成R轮
迭代计算所需的随机干扰数据,使得随机干扰数据用于随后的步骤804。
应注意,不存在执行步骤802和步骤803的特定顺序;可以在步骤803之前执行步骤
802;或可以在步骤802之前执行步骤803,这具体来说在本发明实施例中不受限制。
804。加密函数生成装置生成加密函数,其中加密函数包含R轮迭代计算的预计算
表,R轮迭代计算的预计算表中的第r轮的预计算表包括第r轮的预设输入数据与对应于输
入数据的输出数据之间的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输入掩
码数据,输出数据包含第r轮的输出掩码数据和第r轮的随机干扰数据,并且根据预设初始
值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码数据。
掩码数据是在现实数据经受仿射扩张变换之后产生的数据。
优选地,m可以预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同。
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
应注意,输入长度与输出长度相同的S盒可以是AES中的S盒,并且还可以是中国商
业加密标准4(SM标准4,SMS4)中的S盒,其具体来说不受本发明限制。
具体来说,对于用于获得掩码数据的方法,可以参考现有技术中的白盒掩码数据
获得方法,并且本文不再描述细节。
应注意,在本发明实施例中的预设初始值是所有可能表查找输入值的例举例举。
例如,预设初始值可以是0-(2n-1)的例举,或预设初始值可以是0-(2m-1)的例举,这具体来
说在本发明实施例中不受限制。
可以从实施例的描述的前言内容中获悉,每一轮迭代计算可以包含具有最小单元
的多个预计算表。在本发明实施例中,在生成具有最小单元的每个预计算表的过程期间执
行输出仿射扩张掩码的仿射变换。因此,具有最小单元的预计算表可以包含2n个记录,但是
对应于现实数据的掩码数据实际上仅占据2m个记录,使得在具有最小单元的预计算表中的
(2n-2m)个记录可用于填写随机干扰数据。
特别地,在本发明实施例中的加密函数可以具体来说是白盒AES加密函数,这具体
来说在本发明实施例中不受限制。
示例性地,对于AES中的特定轮的迭代计算中的特定S盒以及对应轮密钥字节k,随
机地选择其输入和输出仿射扩张掩码。此处,输入仿射扩张掩码用作实例:假设F0(x)=A*x
+b,其中x是8维列向量,A是(n*m)的二元域上的列满秩矩阵,这表示A是二进制字段上的列
满秩矩阵并且A是具有n×m大小的矩阵;b是n维列向量,并且每个矩阵元素的运算是二进制
字段上的运算。在选择F0(x)和F1(x)之后,假设对应于仿射变换F0(x)=A*x+b的仿射子集是
Y。Y定义为:
Y={y=A·x+b|x∈(GF2)8},
随后可以通过以下方式计算图9中所示的预计算表T,(y):
(1)如果n位输入值是子集Y中的元素,也就是说,存在使F0(x)=y的x,假设T,(y)
为F1(L*S(x+k)),其中F1(x)是输出仿射扩张掩码,L是通过MCj运算引入的乘数,并且T,(y)
是掩码数据;
(2)如果n位输入值是子集Y之外的元素,也就是说,不存在使F0(x)=y的x,T,(y)
设定成随机干扰数据,其随机性来自随机种子和随机数产生器。
参考前述加密函数生成方法,以下提供通过加密函数生成装置生成加密函数的整
个过程的实例。假设m=8、n=16、R=10以及I=16,其中I是每一轮迭代计算所需的轮密钥
的字节数,则:
首先,接收用户输入的随机种子和原始密钥K;
第二,原始密钥K扩张到10 16字节轮密钥RK[r],其中RK[r][i]表示第r轮的第i轮
密钥字节,1≤r≤10且0≤i≤15;
第三,通过使用通过随机数产生器产生的随机流,产生10轮迭代计算所需的仿射
扩张掩码和10轮迭代计算所需的随机干扰数据;其中随机流是包括多个随机数的随机数序
列或位流;以及
第四,产生加密函数:
假设预计算表Table[round][col][row_in][row_out](y)表示第round轮和第col
列的预计算表,其中输入字节在第row_in行中并且输出字节在第row_out行中,并且所述预
计算表包含216个记录。输入值y是16位,并且输出值也是16位。
(a)检查以下参数,并且随后执行后续步骤:
i.round:轮数;
ii.col:当前轮的列数;
ii.row_in:其中定位当前列的输入字节的行的行数;以及
iv.row_out:其中定位当前列的输出字节的行的行数;
清空预计算表Table[round][col][row_in][row_out](216个空位)
(b)预计算掩码数据
首先,布置若干符号。在预计算表中的掩码数据的计算过程期间,每个中间状态值
用对应符号表示:
其中是第r轮的输入仿射扩张
掩码,并且Fr是第r轮的输出仿射扩张掩码。
具体来说,假设对应于仿射变换Fr(x)=A*x+b的仿射子集为Y。Y定义为:Y={y=
A·x+b|x∈(GF2)8}。
根据y的例举值0000-FFFF,如果y的16位输入值是子集Y={y=A·x+b|x∈(GF2)8}
中的元素,也就是说,存在使Fr(x)=y的x,x可经受(AK'SB,MCj)运算以产生w,并且w经受输
出仿射扩张掩码Fr(x)的仿射变换以产生掩码数据T,(y),其中T,(y)=Fr(L*S(x+k)),并且L
是通过MCj运算引入的乘数。
示例性地,生成预计算表Table[1][1][1][1]中的掩码数据的过程如下:
对于所有例举的数据(y=0-FFFF):
如果存在使F0(x)=y的x,z=F1(MC1(SB(AK(x)))并且
预计算表Table[1][1][1][1]的第y个空位写有值z,并且因此当使用表格时,可以
通过Table[1][1][1][1](y)获得z的值。
当然,x的例举值还可以是00-FF,以便获得预计算表中的掩码数据。在计算掩码数
据的过程期间,每个中间状态值用对应符号表示:
x-->AK SB MCj-->w-->Fr-->z、x-->Fr-1-->y,其中Fr-1是第r轮的输入仿射扩张掩
码并且也是第(r-1)轮的输出仿射扩张掩码;并且Fr是第r轮的输出仿射扩张掩码并且也是
第(r+1)轮的输入仿射扩张掩码。
示例性地,生成预计算表Table[0][1][1][1]中的掩码数据的过程如下:
对于所有现实数据(x=0-FF):
y=F0(x)、z=F1(MC1(SB(AK(x)))
预计算表Table[0][1][1][1]的第y个空位写有值z,并且因此当使用表格时,可以
通过Table[0][1][1][1](y)获得z的值。
(c)写有随机干扰数据
预计算表Table[round][col][row_in][row_out]的所有其余空位(216-28)写有通
过随机数产生器生成的16位值的随机干扰数据。
以下测量本发明的安全性,并且下文分析安全性:
因为大量随机干扰数据添加在加密函数的预计算表中,所以在攻击者找到现实预
计算表之前,攻击者无法使用现有技术来以225的计算复杂性恢复包含在预计算表中的密钥
字节。因此,攻击者必须尝试所有可能的仿射子集,其中尝试的次数取决于仿射子集的数
目。
在n维二进制字段空间(GF2)n中的m维仿射子空间的数目N(n,m)是
其在下文中提供:
考虑仿射变换y=Ax+b,其中A是(n*m)的二元域上的列满秩矩阵,换句话说,A是二
进制字段上的具有n*m大小的列满秩矩阵;b是n维向量,并且n>=m。存在n*n可逆矩阵P和m*
m可逆矩阵Q,其使得:
其中
Im是具有m*m大小的单位矩阵并且代入y=Ax+b中以产生
因为Qx可以具有任何值,等式等于P2y=P2b=b,,其中P2是秩为n-m的(n-m)*n矩阵
(P2是A的对偶矩阵),并且b,是(n-m)维列向量。此外,可以看出,y属于仿射子集Y={y=A·
x+b|x∈(GF2)m}并且等于P2y=b,。因此,通过P2的值和b,,可以唯一地确定仿射子集Y。
另外,考虑到对于具有任何(n-m)*(n-m)大小的可逆矩阵R,由P2y=b,定义的仿射
子集与由(RP2)y=Rb,的仿射子集相同,并且因此,当计算仿射子集的数目时需要去除复制
计数。因此,可以获悉,n维二进制字段空间中的m维仿射子集的数目N(n,m)等于:
因为n维二进制字段空间(GF2)n中的m维仿射子空间的数目N(n,m)是
以便破解n位仿射扩张后的加密函数的生成算法,所以攻击者
必须穷尽性地尝试所有N(n,m)个不同的m维仿射子集且随后尝试恢复密钥,其中计算复杂
性是其在下文中证明:
攻击者必须逐个地尝试所有N(n,m)个可能的仿射子集。当选择仿射子集时,攻击
者可以使用以下方法来确定选定仿射子集是否正确:根据生成预计算表的过程,可以获悉
仿射子集Y中的所有元素的表查找和XOR求和的结果必须等于0。假设X是原始m维二进制字
段空间,则
对于扩张后的输入字节y,存在四个此类预计算表T,,并且因此,四个预计算表提
供4n位确定条件。通过随机值,所有四个预计算表的总和为0的可能性是2-4n。在选择仿射子
集之后,如果攻击者发现预计算表的XOR总和为非零,可以确定仿射子集肯定不正确。
当N(n,m)<24n并且当找到XOR总和是0的仿射子集时,攻击者几乎可以唯一地确定
这是正确子集,并且随后执行密钥恢复的第二步骤。
当N(n,m)>=24n并且当攻击者找到XOR总和是0的仿射子集时,子集未必正确。因
此,攻击者必须尝试密钥恢复的第二步骤,并且所需尝试的总数目是N(n,8)/24n。
因此,此攻击方法的总计算复杂性是除了尝试恢复密钥的第二步骤之外检查所有
仿射子集的复杂性,其可以表达为:
并且证明完成。
示例性地,根据前述公式,以下展示当m=8并且n在9至23的范围内时在本发明实
施例中的安全性和存储器占用,如表3中所示:
表3
因为主机计算机的极值计算能力当前适当地为260,所以可以从表3中看出,当n≥
15时,此解决方案的安全性可以满足大部分应用情形的安全需求。
另外,在揭示白盒加密函数生成方法的情况下,即使攻击者已破解预计算表,我们
也可以改变随机种子以防止攻击者破解随后产生的新预计算表。因此,在本发明实施例中,
可以通过保护随机种子进一步减小攻击范围。
因此,基于在本发明实施例中提供的前述加密函数生成方法,可以从前述分析中
获悉,本发明可以在揭示白盒加密函数生成方法时确保用于白盒加密函数中的密钥的机密
性。
实施例2
本发明实施例提供一种加密方法。具体来说,如图10中所示,所述方法包括以下步
骤:
1001.加密装置接收用户输入的明文。
1002.加密装置根据预存储的仿射扩张掩码和明文中的输入仿射扩张掩码计算输
入掩码数据。
具体来说,在本发明实施例中,仿射扩张掩码是用于将m比特数据映射到n比特数
据的仿射变换矩阵,其中m和n是预设正整数,并且n>m。
以此方式,在执行步骤1002中的仿射扩张变换之后,明文可以从m维列向量扩张到
n维列向量。示例性地,假设在本发明实施例中的明文输入是128位,则输入明文可以借助于
输入仿射扩张掩码的仿射变换从128位长度扩张到16n位长度。
1003.加密装置使用预存储的加密函数的预计算表根据输入掩码数据获得输出掩
码数据。
预存储的加密函数包含R轮迭代计算的预计算表,R轮迭代计算的预计算表中的第
r轮的预计算表包括第r轮的预设输入数据与对应于输入数据的输出数据之间的一对一映
射关系,第r轮的预设输入数据包含第r轮的预设输入掩码数据,输出数据包含第r轮的输出
掩码数据和第r轮的随机干扰数据,并且根据预设初始值、第r轮的轮密钥和第r轮的仿射扩
张掩码计算第r轮的输出掩码数据,根据接收到的随机种子通过加密函数生成装置并且通
过使用随机数产生器生成第r轮的仿射扩张掩码和第r轮的随机干扰数据,1≤r≤R,R表示
生成加密函数所需的迭代计算的轮数。
本领域的普通技术人员可以理解,第r轮的仿射扩张掩码可以包含第r轮的输入仿
射扩张掩码和第r轮的输出仿射扩张掩码,这具体来说在本发明实施例中不受限制。
优选地,在本发明实施例中,根据F(x)=A*x+b确定仿射扩张掩码,其中x是m维列
向量,A和b是通过使用随机数产生器并且根据随机种子生成的矩阵,A是(n*m)的二元域上
的列满秩矩阵,b是n维列向量,并且可以根据A和b确定F(x)。
具体来说,在本发明实施例中的加密过程中所需的预存储的加密函数是在实施例
1中生成的加密函数。对于特定生成方法,可以参考实施例1中的描述并且在本发明实施例
中不再描述细节。
1004.加密装置根据输出掩码数据和包含在预存储的仿射扩张掩码中的输出仿射
扩张掩码计算对应于明文的密文。
参考前述加密方法,以下提供其中加密装置对输入明文进行加密的实例。假设m=
8、n=16、R=10以及I=16,其中I是每一轮迭代计算所需的轮密钥的字节数,则:
首先,加密装置接收用户输入的明文。
假设给定明文是总共包含16字节的P。如图13中所示,P[i]用于表示第i字节。也就
是说,P=P[0]||P[1]||…||P[15],其中a||b是指连接二进制串a和b。
第二,假设预存储的输入仿射扩张掩码是F[0],如果F[0][i](x)表示第i字节的输
入仿射扩张掩码,F[0][i](x)=A[0][i](x)+b[0][i]。因此,加密计算根据输入仿射扩张掩
码计算对应于输入明文的输入掩码数据P,=F[0][P],其中P,[i]=F[0][i](P[i])是指借
助于仿射扩张映射将明文的第i字节P[i]改变成具有2字节(16位)长度的P[i]。因此,P,的
总长度是32字节,即256位,其为明文P的长度的两倍。
第三,加密过程(迭代表查找)
可以从实施例1中的描述获悉,加密函数包含R轮迭代计算的预计算表,R轮迭代计
算的预计算表中的第r轮的预计算表包括第r轮的预设输入数据与对应于输入数据的输出
数据之间的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输入掩码数据,并且
输出数据包含第r轮的输出掩码数据和第r轮的随机干扰数据。因此,加密装置可以使用以
下方法来使用预存储的加密函数根据输入掩码数据获得输出掩码数据:
假设预计算表Table[r][col][row_in][row_out](y)表示第r轮和第col列的预计
算表,其中输入字节在第row_in行中并且输出字节在第row_out行中,并且所述预计算表包
含216个记录。输入值y是16位,并且输出值也是16位。
a.假设初始迭代状态S[0]为P,,并且使用S[r][k]来表示第r轮迭代状态S[r]的第
k子块(每个子块具有2字节)。
b.循环迭代r个轮、从S[r]执行表查找并且计算S[r+1];
对于r=1…10(轮数)
对于col=0…3(目前计算出的输入字节的列数)
对于row_in=0…3(目前计算出的输入字节的行数)
对于row_out=0…3(目前计算出的列的哪个行中的输出字节)
也就是说,表格分成用于单独计算的4个子表格,并且最后,对结果进行XOR运算,
其中表示XOR。
示例性地,假设col=0并且row_out=3,在子块k=4*col+row_out=3经受10轮表
查找之后,对应掩码数据是
输出掩码数据是=s[10][0]||s[10][1]||......||s[10][15]。
第四,输出掩码数据的逆运算过程。
在获得输出掩码数据之后,加密装置获得状态S[10],其为256位二进制串。在这种
情况下,S[10]通过使用最后一轮的仿射扩张掩码的逆函数映射回密文C=F[10]-1(S[10])。
具体来说,每个密文字节C[i]的计算过程是C[i]=F[10][i]-1(S[10][i])。
基于在本发明实施例中提供的加密方法,因为本发明实施例使用在实施例1中生
成的加密函数来对明文进行加密,所以考虑到实施例1中的加密函数安全分析示出加密函
数可以在揭示白盒加密函数生成方法时确保用于白盒加密函数中的密钥的机密性,则在本
发明实施例中提供的加密函数也可以在揭示白盒加密函数生成方法时确保用于白盒加密
函数中的密钥的机密性。
实施例3
本发明实施例提供一种解密函数生成方法。具体来说,如图12中所示,所述方法包
括以下步骤:
1201.解密函数生成装置获得随机种子和原始密钥。
具体来说,在本发明实施例中提供的解密函数生成方法中,解密函数生成装置首
先需要获得随机种子和原始密钥。
随机种子是固定长度位串,并且可以用于通过使用随机数产生器产生随机数。随
机数产生器可以被视为函数g(x),其中输入是固定长度随机种子,例如k位串,并且输出是
具有任何数目位的长度的随机数序列并且用作随后使用的随机数源;并且密钥是一组信息
码,并且密钥参与密码术的“运算”且对密码术的“运算”施加特定控制影响。DES支持64位长
度的密钥,并且AES支持具有三种类型的长度的密钥:128位、192位和256位。
1202.解密函数生成装置根据原始密钥生成R轮迭代所需的轮密钥,其中R轮迭代
计算所需的轮密钥包含第r轮的轮密钥,R表示解密函数所需的迭代计算的轮数,R是正整数
并且1≤r≤R。
具体来说,对于用于在获得原始密钥之后通过解密函数生成装置生成R轮迭代计
算所需的轮密钥的方法,可以参考AES标准算法并且在本发明实施例中不描述细节。
1203.解密函数生成装置通过使用随机数产生器并且根据随机种子生成R轮迭代
计算所需的仿射扩张掩码和R轮迭代计算所需的随机干扰数据。
在本发明实施例中,仿射扩张掩码是用于将m比特数据仿射地变换成n比特数据的
仿射变换矩阵,m和n是预设正整数,n>m,R轮迭代计算所需的仿射扩张掩码包含第r轮的仿
射扩张掩码,并且R轮迭代计算所需的随机干扰数据包含第r轮的随机干扰数据。
本领域的普通技术人员可以理解,第r轮的仿射扩张掩码可以包含第r轮的输入仿
射扩张掩码和第r轮的输出仿射扩张掩码,这具体来说在本发明实施例中不受限制。
优选地,在本发明实施例中,根据F(x)=A*x+b确定仿射扩张掩码,其中x是m维列
向量,A和b是通过使用随机数产生器并且根据随机种子生成的矩阵,A是(n*m)的二元域上
的列满秩矩阵,b是n维列向量,并且可以根据A和b确定F(x)。
应注意,在本发明实施例中,根据F(x)=A*x+b确定仿射扩张掩码,矩阵A的行数n
大于列数m,并且因此,借助于仿射变换,x可以从m维列向量扩张成n维列向量。特别地,为了
防止在仿射变换之后的信息损耗,矩阵A需要是列满秩矩阵(也就是说,所有列向量是线性
独立的,秩(A)=m);对于列向量b,不强加任何要求并且其值是任意的。
本领域的普通技术人员可以理解,在生成第r轮的预计算表的过程期间,如果第r
轮的预设输入数据包含第(r-1)轮的掩码数据,即,如果第r轮的预设输入数据是0-(2n-1),
为了确保对应于彼此的串列的掩码层之间的相互抵消,第r轮的迭代计算所需的输入仿射
扩张掩码相反地为第(r-1)轮迭代计算所需的输出仿射扩张掩码的逆函数,并且1≤r≤R。
示例性地,假设r=1,第1轮迭代计算所需的输入仿射扩张掩码是并且F0是解
密过程中的输入仿射扩张掩码;假设r=3,第3轮迭代计算所需的输入仿射扩张掩码是
并且F2是第2轮迭代计算所需的输出仿射扩张掩码。
本领域的普通技术人员可以理解,根据随机种子,实际上通过使用随机数产生器
生成A和b。在确定A和b之后,可以确定F(x)=A*x+b,并且还可以确定其逆函数。因此,根据
随机种子,可以通过使用随机数产生器生成上文所列的所有仿射扩张掩码。
另外,在本发明实施例中,与现有技术相比较,进一步需要根据随机种子生成R轮
迭代计算所需的随机干扰数据,使得随机干扰数据用于随后的步骤1204。
应注意,不存在执行步骤1202和步骤1203的特定顺序;可以在步骤1203之前执行
步骤1202;或可以在步骤1202之前执行步骤1203,这具体来说在本发明实施例中不受限制。
1204.解密函数生成装置生成解密函数,其中解密函数包含R轮迭代计算的预计算
表,R轮迭代计算的预计算表中的第r轮的预计算表包括第r轮的预设输入数据与对应于输
入数据的输出数据之间的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输入掩
码数据,输出数据包含第r轮的输出掩码数据和第r轮的随机干扰数据,并且根据预设初始
值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码数据。
掩码数据是在现实数据经受仿射扩张变换之后产生的数据。
优选地,m可以预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同。
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
应注意,输入长度与输出长度相同的S盒可以是AES中的S盒,并且还可以是SMS4中
的S盒,这具体来说不受本发明的限制。
具体来说,对于用于获得掩码数据的方法,可以参考现有技术中的白盒掩码数据
获得方法,并且本文不再描述细节。
应注意,在本发明实施例中的预设初始值是所有可能表查找输入值的例举。例如,
预设初始值可以是0-(2n-1)的例举,或预设初始值可以是0-(2m-1)的例举,这具体来说在本
发明实施例中不受限制。
可以从实施例的描述的前言内容中获悉,每一轮迭代计算可以包含具有最小单元
的多个预计算表。在本发明实施例中,在生成具有最小单元的每个预计算表的过程期间执
行输出仿射扩张掩码的仿射变换。因此,具有最小单元的预计算表可以包含2n个记录,但是
对应于现实数据的掩码数据实际上仅占据2m个记录,使得在具有最小单元的预计算表中的
(2n-2m)个记录可用于填写随机干扰数据。
示例性地,对于AES中的特定轮的迭代计算中的特定S盒以及对应轮密钥字节k,随
机地选择其输入和输出仿射扩张掩码。此处,输入仿射扩张掩码用作实例:假设F0(x)=A*x
+b,其中x是8维列向量,A是二进制字段上具有n*8大小的列满秩矩阵,b是n维列向量,并且
每个矩阵元素的运算是二进制字段上的运算。在选择F0(x)和F1(x)之后,假设对应于仿射变
换F0(x)=A*x+b的仿射子集为Y。Y定义为:
Y={y=A·x+b|x∈(GF2)8},
随后可以通过以下方式计算图8中所示的预计算表T,(y):
(1)如果n位输入值是子集Y中的元素,也就是说,存在使F0(x)=y的x,假设T,(y)
为F1(L*S(x+k)),其中F1(x)是输出仿射扩张掩码,L是通过MCj运算引入的乘数,并且T,(y)
是掩码数据;(2)如果n位输入值是子集Y之外的元素,也就是说,不存在使F0(x)=y的x,T,
(y)设定成随机干扰数据,其随机性来自随机种子和随机数产生器。应注意,如在实施例的
描述的前言部分中所提及,由于AES的精密设计,还可以类似于SR-1(AK'SB-1MC-1)SR-1(AK'
SB-1MC-1)......SR-1(AK'SB-1MC-1)的等效形式写出解密过程。因此,对于参考前述解密函数
生成方法使用解密函数生成装置来生成解密函数的实例,可以参考使用加密函数生成装置
来生成实施例1中的加密函数的实例,并且此处本发明实施例不再提供生成解密函数的实
例。
具体来说,对于本发明的安全性分析,可以参考用于通过实施例1中的加密函数生
成装置生成加密函数的方法中的安全性分析,并且本文不再描述细节。
因此,基于在本发明实施例中提供的前述解密函数生成方法,可以从安全性分析
中获悉,本发明可以在揭示白盒解密函数生成方法的情况下保持白盒解密函数中的密钥的
安全性。
实施例4
本发明实施例提供一种解密方法。具体来说,如图13中所示,所述方法包括以下步
骤:
1301.解密装置接收用户输入的密文。
1302.解密装置根据预存储的仿射扩张掩码和密文中的输入仿射扩张掩码计算输
入掩码数据。
具体来说,在本发明实施例中,仿射扩张掩码是用于将m比特数据映射到n比特数
据的仿射变换矩阵,其中m和n是预设正整数,并且n>m。
以此方式,在执行步骤1302中的仿射扩张变换之后,密文可以从m维列向量扩张到
n维列向量。示例性地,假设在本发明实施例中的密文输入是128位,则输入密文可以借助于
输入仿射扩张掩码的仿射变换从128位长度扩张到16n位长度。
1303.解密装置使用预存储的加密函数的预计算表根据输入掩码数据获得输出掩
码数据。
预存储的解密函数包含R轮迭代计算的预计算表,R轮迭代计算的预计算表中的第
r轮的预计算表包括第r轮的预设输入数据与对应于输入数据的输出数据之间的一对一映
射关系,第r轮的预设输入数据包含第r轮的预设输入掩码数据,输出数据包含第r轮的输出
掩码数据和第r轮的随机干扰数据,并且根据预设初始值、第r轮的轮密钥和第r轮的仿射扩
张掩码计算第r轮的输出掩码数据,根据接收到的随机种子通过解密函数生成装置并且通
过使用随机数产生器生成第r轮的仿射扩张掩码和第r轮的随机干扰数据,1≤r≤R,R表示
生成解密函数所需的迭代计算的轮数。
本领域的普通技术人员可以理解,第r轮的仿射扩张掩码可以包含第r轮的输入仿
射扩张掩码和第r轮的输出仿射扩张掩码,这具体来说在本发明实施例中不受限制。
优选地,在本发明实施例中,根据F(x)=A*x+b确定仿射扩张掩码,其中x是m维列
向量,A和b是通过使用随机数产生器并且根据随机种子生成的矩阵,A是(n*m)的二元域上
的列满秩矩阵,b是n维列向量,并且可以根据A和b确定F(x)。
具体来说,在本发明实施例中的解密过程中所需的预存储的解密函数是在实施例
3中生成的解密函数。对于特定生成方法,可以参考实施例3中的描述并且在本发明实施例
中不再描述细节。
1304.解密装置根据输出掩码数据和包含在预存储的仿射扩张掩码中的输出仿射
扩张掩码计算对应于密文的明文。
具体来说,对于使用解密装置来解密密文的实例,可以参考使用加密装置来对实
施例2中的明文进行加密的实例,并且在本发明实施例中不再描述细节。
基于在本发明实施例中提供的解密方法,因为本发明实施例使用在实施例3中生
成的解密函数来对密文进行解密,所以考虑到解密函数安全性分析示出解密函数可以在揭
示白盒解密函数生成方法的情况下保持白盒解密函数中的密钥的安全性,则在本发明实施
例中提供的解密函数也可以在揭示白盒解密函数生成方法的情况下保持白盒解密函数中
的密钥的安全性。
实施例5
本发明实施例提供一种加密函数生成装置1400。具体来说,如图14中所示,装置
1400包含随机种子接收单元1401、密钥接收单元1402、密钥生成单元1403、随机数生成单元
1404和加密函数生成单元1405。
随机种子接收单元1401用于接收用户输入的随机种子。
密钥接收单元1402用于接收用户输入的原始密钥。
密钥生成单元1403用于根据原始密钥生成R轮迭代计算所需的轮密钥,其中R轮迭
代计算所需的轮密钥包含第r轮的轮密钥,R表示用于生成加密函数所需的迭代计算的轮
数,R是正整数并且1≤r≤R。
随机数生成单元1404用于通过使用随机数产生器并且根据随机种子生成R轮迭代
计算所需的仿射扩张掩码和R轮迭代计算所需的随机干扰数据,其中仿射扩张掩码是用于
将m比特数据映射到n比特数据的仿射变换矩阵,m和n是预设正整数,n>m,R轮迭代计算所需
的仿射扩张掩码包含第r轮的仿射扩张掩码,并且R轮迭代计算所需的随机干扰数据包含第
r轮的随机干扰数据。
加密函数生成单元1405用于生成加密函数,其中加密函数包含R轮迭代计算的预
计算表,R轮迭代计算的预计算表中的第r轮的预计算表包含第r轮的预设输入数据与对应
于输入数据的输出数据之间的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输
入掩码数据,输出数据包含第r轮的输出掩码数据和第r轮的随机干扰数据,并且根据预设
初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码数据。
优选地,根据F(x)=A*x+b确定仿射扩张掩码,其中x是m维列向量,A和b是通过使
用随机数产生器并且根据随机种子生成的矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n
维列向量,并且可以根据A和b确定的F(x)。
具体来说,第r轮的仿射扩张掩码可以包含第r轮的输入仿射扩张掩码和第r轮的
输出仿射扩张掩码。
特别地,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同。
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
具体来说,对于用于通过使用加密函数生成装置1400生成加密函数的方法,可以
参考实施例1中的描述,并且在本发明实施例中不再描述细节。
因为在此实施例中提供的加密函数生成装置可以用于实施前述方法,所以可以通
过参考前述方法实施例中的描述获悉从此产生的技术效果,并且本文不再描述细节。
实施例6
本发明实施例提供一种加密装置1500。具体来说,如图15中所示,加密装置1500包
含明文接收单元1501、输入掩码数据计算单元1502、搜索单元1503和密文计算单元1504。
明文接收单元1501用于接收用户输入的明文;
输入掩码数据计算单元1502用于根据包含于预存储的仿射扩张掩码和明文中的
输入仿射扩张掩码计算输入掩码数据,其中仿射扩张掩码是用于将m比特数据映射到n比特
数据的仿射变换矩阵,其中m和n是预设正整数并且n>m。
搜索单元1503用于使用预存储的加密函数的预计算表根据输入掩码数据获得输
出掩码数据,其中所述预存储的加密函数包含R轮迭代计算的预计算表,R轮迭代计算的预
计算表中的第r轮的预计算表包括第r轮的预设输入数据与对应于输入数据的输出数据之
间的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输入掩码数据,输出数据包
含第r轮的输出掩码数据和第r轮的随机干扰数据,并且根据预设初始值、第r轮的轮密钥和
第r轮的仿射扩张掩码计算第r轮的输出掩码数据,根据接收到的随机种子通过加密函数生
成装置1500并且通过使用随机数产生器生成第r轮的仿射扩张掩码和第r轮的随机干扰数
据,1≤r≤R,并且R表示生成加密函数所需的迭代计算的轮数。
密文计算单元1504用于根据输出掩码数据和包含在预存储的仿射扩张掩码中的
输出仿射扩张掩码计算对应于明文的密文。
优选地,根据F(x)=A*x+b确定仿射扩张掩码,其中x是m维列向量,A和b是通过使
用随机数产生器并且根据随机种子生成的矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n
维列向量,并且可以根据A和b确定F(x)。
特别地,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同。
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
具体来说,对于用于通过使用加密装置1500对明文进行加密的方法,可以参考实
施例2中的描述并且在本发明实施例中不再描述细节。
因为在此实施例中提供的加密装置可以用于实施前述方法,所以可以通过参考前
述方法实施例中的描述获悉从此产生的技术效果并且本文不再描述细节。
实施例7
本发明实施例提供一种解密函数生成装置1600。具体来说,如图16中所示,装置
1600包含随机种子接收单元1601、密钥接收单元1602、密钥生成单元1603、随机数生成单元
1604和解密函数生成单元1605。
随机种子接收单元1601用于接收用户输入的随机种子。
密钥接收单元1602用于接收用户输入的原始密钥。
密钥生成单元1603用于根据原始密钥生成R轮迭代计算所需的轮密钥,其中R轮迭
代计算所需的轮密钥包含第r轮的轮密钥,R表示生成解密函数所需的迭代计算的轮数,R是
正整数并且1≤r≤R。
随机数生成单元1604用于通过使用随机数产生器并且根据随机种子生成R轮迭代
计算所需的仿射扩张掩码和R轮迭代计算所需的随机干扰数据,其中仿射扩张掩码是用于
将m比特数据映射到n比特数据的仿射变换矩阵,m和n是预设正整数,n>m,R轮迭代计算所需
的仿射扩张掩码包含第r轮的仿射扩张掩码,并且R轮迭代计算所需的随机干扰数据包含第
r轮的随机干扰数据。
解密函数生成单元1605用于生成解密函数,其中解密函数包含R轮迭代计算的预
计算表,R轮迭代计算的预计算表中的第r轮的预计算表包含第r轮的预设输入数据与对应
于输入数据的输出数据之间的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输
入掩码数据,输出数据包含第r轮的输出掩码数据和第r轮的随机干扰数据,并且根据预设
初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码数据。
优选地,根据F(x)=A*x+b确定仿射扩张掩码,其中x是m维列向量,A和b是通过使
用随机数产生器并且根据随机种子生成的矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n
维列向量,并且可以根据A和b确定F(x)。
具体来说,第r轮的仿射扩张掩码可以包含第r轮的输入仿射扩张掩码和第r轮的
输出仿射扩张掩码。
特别地,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同。
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
具体来说,对于用于通过使用解密函数生成装置1600生成解密函数的方法,可以
参考实施例3中的描述,并且在本发明实施例中不再描述细节。
因为在此实施例中提供的解密函数生成装置可以用于实施前述方法,所以可以通
过参考前述方法实施例中的描述获悉从此产生的技术效果,并且本文不再描述细节。
实施例8
本发明实施例提供一种解密装置1700。具体来说,如图17中所示,解密装置1700包
含密文接收单元1701、输入掩码数据计算单元1702、搜索单元1703和明文计算单元1704。
密文接收单元1701用于接收用户输入的密文。
输入掩码数据计算单元1702用于根据包含在预存储的仿射扩张掩码和密文中的
输入仿射扩张掩码计算输入掩码数据,其中仿射扩张掩码是用于将m比特数据映射到n比特
数据的仿射变换矩阵,其中m和n是预设正整数并且n>m。
搜索单元1703用于使用预存储的加密函数的预计算表根据输入掩码数据获得输
出掩码数据,其中预存储的解密函数包含R轮迭代计算的预计算表,R轮迭代计算的预计算
表中的第r轮的预计算表包括第r轮的预设输入数据与对应于输入数据的输出数据之间的
一对一映射关系,第r轮的预设输入数据包含第r轮的预设输入掩码数据,输出数据包含第r
轮的输出掩码数据和第r轮的随机干扰数据,并且根据预设初始值、第r轮的轮密钥和第r轮
的仿射扩张掩码计算第r轮的输出掩码数据,根据接收到的随机种子通过解密函数生成装
置1700并且通过使用随机数产生器生成第r轮的仿射扩张掩码和第r轮的随机干扰数据,1
≤r≤R,并且R表示生成解密函数所需的迭代计算的轮数。
明文计算单元1704用于根据输出掩码数据和包含在预存储的仿射扩张掩码中的
输出仿射扩张掩码计算对应于密文的明文。
优选地,根据F(x)=A*x+b确定仿射扩张掩码,其中x是m维列向量,A和b是通过使
用随机数产生器并且根据随机种子生成的矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n
维列向量,并且可以根据A和b确定F(x)。
特别地,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同。
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
具体来说,对于用于通过使用解密装置1700对密文进行解密的方法,可以参考实
施例4这噢乖的描述,并且在本发明实施例中不再描述细节。
因为在此实施例中提供的解密装置可以用于实施前述方法,所以可以通过参考前
述方法实施例中的描述获悉从此处产生的技术效果,并且本文不再描述细节。
实施例9
本发明实施例提供一种加密函数生成装置1800。具体来说,如图18中所示,装置
1800包含:接收器1801、处理器1802和随机数产生器1803。
接收器1801用于接收用户输入的随机种子。
接收器1801进一步用于接收用户输入的原始密钥。
处理器1802用于根据原始密钥生成R轮迭代计算所需的轮密钥,其中R轮迭代计算
所需的轮密钥包含第r轮的轮密钥,R表示生成加密函数所需的迭代计算的轮数,R是正整数
并且1≤r≤R。
随机数产生器1803用于根据随机种子生成R轮迭代计算所需的仿射扩张掩码和R
轮迭代计算所需的随机干扰数据,其中仿射扩张掩码是用于将m比特数据映射到n比特数据
的仿射变换矩阵,m和n是预设正整数,n>m,R轮迭代计算所需的仿射扩张掩码包含第r轮的
仿射扩张掩码,并且R轮迭代计算所需的随机干扰数据包含第r轮的随机干扰数据。
处理器1802用于生成加密函数,其中所述加密函数包含R轮迭代计算的预计算表,
R轮迭代计算的预计算表中的第r轮的预计算表包括第r轮的预设输入数据与对应于输入数
据的输出数据之间的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输入掩码数
据,输出数据包含第r轮的输出掩码数据和第r轮的随机干扰数据,根据预设初始值、第r轮
的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码数据。
优选地,根据F(x)=A*x+b确定仿射扩张掩码,其中x是m维列向量,A和b是通过使
用随机数产生器并且根据随机种子生成的矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n
维列向量,并且可以根据A和b确定F(x)。
具体来说,第r轮的仿射扩张掩码可以包含第r轮的输入仿射扩张掩码和第r轮的
输出仿射扩张掩码。
特别地,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同。
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
具体来说,对于用于通过使用加密函数生成装置1800生成加密函数的方法,可以
参考实施例1中的描述,并且在本发明实施例中不再描述细节。
因为在此实施例中提供的加密函数生成装置可以用于实施前述方法,所以可以通
过参考前述方法实施例中的描述获悉从此产生的技术效果,并且本文不再描述细节。
实施例10
本发明实施例提供一种加密装置1900。具体来说,如图19中所示,加密装置1900包
含接收器1901和处理器1902。
接收器1901用于接收用户输入的明文。
处理器1902用于根据包含在预存储的仿射扩张掩码和明文中的输入仿射扩张掩
码计算输入掩码数据,其中仿射扩张掩码是用于将m比特数据映射到n比特数据的仿射变换
矩阵,其中m和n是预设正整数并且n>m。
处理器1902进一步用于使用预存储的加密函数的预计算表根据输入掩码数据获
得输出掩码数据,其中所述预存储的加密函数包含R轮迭代计算的预计算表,R轮迭代计算
的预计算表中的第r轮的预计算表包括第r轮的预设输入数据与对应于输入数据的输出数
据之间的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输入掩码数据,输出数
据包含第r轮的输出掩码数据和第r轮的随机干扰数据,并且根据预设初始值、第r轮的轮密
钥和第r轮的仿射扩张掩码计算第r轮的输出掩码数据,根据接收到的随机种子通过加密函
数生成装置并且通过使用随机数产生器生成第r轮的仿射扩张掩码和第r轮的随机干扰数
据,1≤r R,并且R表示生成加密函数所需的迭代计算的轮数。
处理器1902进一步用于根据输出掩码数据和包含在预存储的仿射扩张掩码中的
输出仿射扩张掩码计算对应于明文的密文。
优选地,根据F(x)=A*x+b确定仿射扩张掩码,其中x是m维列向量,A和b是通过使
用随机数产生器并且根据随机种子生成的矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n
维列向量,并且可以根据A和b确定F(x)。
优选地,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同。
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
具体来说,对于用于通过使用加密装置1900对明文进行加密的方法,可以参考实
施例2中的描述并且在本发明实施例中不再描述细节。
因为在此实施例中提供的加密装置可以用于实施前述方法,所以可以通过参考前
述方法实施例中的描述获悉从此产生的技术效果,并且本文不再描述细节。
实施例11
本发明实施例提供一种解密函数生成装置。具体来说,如图20中所示,装置2000包
含:接收器2001、处理器2002和随机数产生器2003。
接收器2001用于接收用户输入的随机种子。
接收器2001进一步用于接收用户输入的原始密钥。
处理器2002用于根据原始密钥生成R轮迭代计算所需的轮密钥,其中R轮迭代计算
所需的轮密钥包含第r轮的轮密钥,R表示生成解密函数所需的迭代计算的轮数,R是正整数
并且1≤r≤R。
随机数产生器2003用于根据随机种子生成R轮迭代计算所需的仿射扩张掩码和R
轮迭代计算所需的随机干扰数据,其中仿射扩张掩码是用于将m比特数据映射到n比特数据
的仿射变换矩阵,m和n是预设正整数,n>m,R轮迭代计算所需的仿射扩张掩码包含第r轮的
仿射扩张掩码,并且R轮迭代计算所需的随机干扰数据包含第r轮的随机干扰数据。
处理器2002用于生成解密函数,其中解密函数包含R轮迭代计算的预计算表,R轮
迭代计算的预计算表中的第r轮的预计算表包括第r轮的预设输入数据与对应于输入数据
的输出数据之间的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输入掩码数
据,输出数据包含第r轮的输出掩码数据和第r轮的随机干扰数据,并且根据预设初始值、第
r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码数据。
优选地,根据F(x)=A*x+b确定仿射扩张掩码,其中x是m维列向量,A和b是通过使
用随机数产生器并且根据随机种子生成的矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n
维列向量,并且可以根据A和b确定F(x)。
具体来说,第r轮的仿射扩张掩码可以包含第r轮的输入仿射扩张掩码和第r轮的
输出仿射扩张掩码。
特别地,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同。
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
具体来说,对于用于通过使用解密函数生成装置2000生成解密函数的方法,可以
参考实施例3中的描述,并且在本发明实施例中不再描述细节。
因为在此实施例中提供的解密函数生成装置可以用于实施前述方法,所以可以通
过参考前述方法实施例中的描述获悉从此产生的技术效果并且本文不再描述细节。
实施例12
本发明实施例提供一种解密装置2100。具体来说,如图21中所示,解密装置2100包
含接收器2101和处理器2102。
接收器2101用于接收用户输入的密文。
处理器2102用于根据包含在预存储的仿射扩张掩码和密文中的输入仿射扩张掩
码计算输入掩码数据,其中仿射扩张掩码是用于将m比特数据映射到n比特数据的仿射变换
矩阵,其中m和n是预设正整数并且n>m。
处理器2102进一步用于使用预存储的加密函数的预计算表根据输入掩码数据获
得输出掩码数据,其中所述预存储的解密函数包含R轮迭代计算的预计算表,R轮迭代计算
的预计算表中的第r轮的预计算表包括第r轮的预设输入数据与对应于输入数据的输出数
据之间的一对一映射关系,第r轮的预设输入数据包含第r轮的预设输入掩码数据,输出数
据包含第r轮的输出掩码数据和第r轮的随机干扰数据,并且根据预设初始值、第r轮的轮密
钥和第r轮的仿射扩张掩码计算第r轮的输出掩码数据,根据接收到的随机种子通过解密函
数生成装置并且通过使用随机数产生器生成第r轮的仿射扩张掩码和第r轮的随机干扰数
据,1≤r R,并且R表示生成解密函数所需的迭代计算的轮数。
处理器2102进一步用于根据输出掩码数据和包含在预存储的仿射扩张掩码中的
输出仿射扩张掩码计算对应于密文的明文。
优选地,根据F(x)=A*x+b确定仿射扩张掩码,其中x是m维列向量,A和b是通过使
用随机数产生器并且根据随机种子生成的矩阵,A是(n*m)的二元域上的列满秩矩阵,b是n
维列向量,并且可以根据A和b确定F(x)。
优选地,m预设为S盒的输入/输出长度,所述S盒的输入长度与输出长度相同。
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码计算第r轮的输出掩码
数据包含:
根据预设初始值、第r轮的轮密钥和第r轮的仿射扩张掩码参考S盒计算第r轮的输
出掩码数据。
具体来说,对于用于通过使用解密装置2100对密文进行解密的方法,可以参考实
施例4中的描述,并且在本发明实施例中不再描述细节。
因为在此实施例中提供的解密装置可以用于实施前述方法,所以可以通过参考前
述方法实施例中的描述获悉从此产生的技术效果并且本文不再描述细节。
本领域的普通技术人员可以清楚地理解,出于描述的简易性和简洁性,在前述装
置中,前述功能模块的划分用作说明的实例。在实际应用中,前述功能可以分配到不同模块
并且根据需求实施,也就是说,装置的内部结构分成不同功能模块以实施全部或部分上述
功能。对于前述系统、装置和单元的详细工作过程,可以参考前述方法实施例中的对应过程
并且本文不再描述细节。
在本申请案中提供若干实施例中,应理解,所揭示的系统、装置和方法可以通过其
它方式实现。例如,所描述的装置实施例仅仅是示例性的。例如,模块或单元划分仅仅是逻
辑功能划分并且可以是实际实施方案中的其它划分。例如,可以将多个单元或组件组合或
整合到另一系统中,或可以忽略或不执行一些特征。另外,所显示或所论述的相互耦合或直
接耦合或通信连接可以通过某一接口实施。装置或单元之间的间接耦合或通信连接可以通
过电气、机械或其它形式实施。
作为单独部分描述的单元可以或可以不物理分离,并且作为单元显示的部分可以
为或可以不为物理单元、可以位于一个位置或可以在多个网络单元上分布。可以根据实际
需要选择部分或全部单元以实现实施例的解决方案的目的。
另外,本发明的实施例中的功能单元可以集成到一个处理单元中,或每个单元可
以物理上单独存在,或两个或更多单元集成到一个单元中。集成单元可以硬件的形式实施,
或可以软件功能单元的形式实施。
当集成单元以软件功能单元的形式实施以及作为单独产品销售或使用时,所述集
成单元可以存储在计算机可读存储媒体中。基于此理解,本实质上发明的技术方案,或促进
现有技术的部分,或全部或部分技术方案可以软件产品的形式实施。软件产品存储于存储
媒体中并且包含用于指示计算机装置(可以是个人计算机、服务器或网络装置)或处理器执
行本发明的实施例中所描述的方法步骤的全部或部分的若干指令。前述存储媒体包含:可
以存储程序代码的任何媒体,例如USB闪存盘、可拆卸硬盘、只读存储器(Read-Only
Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁盘或光学光盘。
上述描述仅是本发明的具体实施方式但并非旨在限制本发明的保护范围。本领域
的普通技术人员容易想到的在本发明所揭示的技术范围内的任何变化或替代应处于本发
明的保护范围内。因此,本发明的保护范围应受制于权利要求书的保护范围。