预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共20页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN109714152A(43)申请公布日2019.05.03(21)申请号201910043431.9(22)申请日2019.01.17(71)申请人西安电子科技大学地址710071陕西省西安市雁塔区太白南路2号(72)发明人张慧陈杰姚思徐东童鹏(74)专利代理机构陕西电子工业专利中心61205代理人田文英王品华(51)Int.Cl.H04L9/06(2006.01)H04L9/08(2006.01)权利要求书4页说明书9页附图6页(54)发明名称基于大型仿射编码的白盒AES加密方法(57)摘要本发明公开了一种基于大型仿射编码的白盒AES加密方法,其步骤包括:1.构造外部输入编码;2.构建两个仿射变换函数;3.生成解码表De;4.从高级加密标准AES的状态矩阵中随机选取未选过的一列状态向量;5.构建三个仿射变换函数;6.生成加密表MSK;7.判断是否选完高级加密标准AES的状态矩阵中所有的列向量;8.构建一个仿射变换函数;9.生成移位表SR;10.生成了用来在白盒环境下执行高级加密标准AES一轮加密所需的48张查找表。本发明采用大型仿射编码保护查找表,通过查表进行数据加密,不会泄露中间值,使得本发明在数据加密时具有安全性高,加密效率快的优点。CN109714152ACN109714152A权利要求书1/4页1.一种基于大型仿射编码的白盒AES加密方法,其特征在于,将高级加密标准AES每轮的操作封装在加密表MSK和移位表SR中,为每张加密表MSK和移位表SR设置输入编码和输出编码,输出编码和输入编码均采用大型仿射变换,构造解码表De对行移位操作的混淆编码解码和仿射编码,该方法的步骤包括如下:(1)构造外部输入编码:(1a)将输入的128-bit数据,按每8bits数据为一组,分成16组,依次将每4组数据排成一行,对每行数据进行行移位操作,得到4个32-bit向量,将4个32-bit向量按照行序级联成一个128-bit的向量;(1b)按照下式,对128-bit的向量进行混淆编码,得到一个128-bit的向量:其中,Y表示混淆编码后的128-bit的向量,表示异或加操作,B表示随机产生的一个128-bit的向量,表示复合操作,L表示随机选择的128×128的可逆矩阵;(2)构建两个用于输出编码仿射变换函数:(2a)用随机生成的16个8×8的可逆矩阵组成的128×128对角矩阵,构建第一个仿射变换函数;(2b)用随机生成的16个8×8的可逆矩阵组成的128×128对角矩阵,构建第二个仿射变换函数;(3)生成对行移位操作的混淆编码解码和仿射编码的解码表De:(3a)随机选取高级加密标准AES的状态矩阵中未选过的状态向量;(3b)构建一个长度为256的数组,将该数组中的每个元素初始化为一个8-bit向量;(3c)对行移位操作的混淆编码进行解码操作:从长度为256的数组中的随机选取一个未被选过的8-bit向量,将其作为输入向量,对8-bit输入向量进行解码操作,得到解码后的一个128-bit向量;(3d)判断状态向量在状态矩阵中的行号是否小于2,若是,则执行步骤(3e),否则,执行步骤(3f);(3e)用第一个仿射变换函数对128-bit的向量进行仿射编码,得到一个128-bit的向量;(3f)用第二个仿射变换函数对128-bit的向量进行仿射编码,得到一个128-bit的向量;(3g)判断是否选完长度为256的数组中的所有8-bit向量,若是,则执行步骤(3h),否则,执行步骤(3c);(3h)判断是否选完高级加密标准AES的状态矩阵中的每个状态向量,若是,执行步骤(4),否则,执行步骤(3a);(4)从高级加密标准AES的状态矩阵中,随机选取未选过的一列状态向量;(5)构建三个用于混淆编码和输出编码的仿射变换函数:(5a)用随机生成的4个8×8的可逆矩阵组成的32×32对角矩阵,构建第一个仿射变换函数;(5b)用随机生成的4个8×8的可逆矩阵组成的32×32对角矩阵,构建第二个仿射变换函数;2CN109714152A权利要求书2/4页(5c)将随机生成的32×32的可逆矩阵,作为第三个仿射变换函数的线性部分,将随机生成一个的32-bit的向量作为第三个仿射变换函数的常量部分;(6)生成用于进行加密钥、字节变换和列混淆操作的加密表MSK:(6a)从所选的一列状态向量中随机选取一个未被选过的状态向量;(6b)构建一个长度为65536的数组,数组的每个元素初始化为一个16bit向量;(6c)对输入向量进行输入解码操作:从长度为65536的数组中的随机选取一个16-bit向量,将其作为输入向量,用16-bit的仿射变换函数对16-bit输入向量进行解码操作,得到解码后的