[发明专利]基于大型仿射编码的白盒AES加密方法有效
申请号: | 201910043431.9 | 申请日: | 2019-01-17 |
公开(公告)号: | CN109714152B | 公开(公告)日: | 2020-04-07 |
发明(设计)人: | 张慧;陈杰;姚思;徐东;童鹏 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | H04L9/06 | 分类号: | H04L9/06;H04L9/08 |
代理公司: | 陕西电子工业专利中心 61205 | 代理人: | 田文英;王品华 |
地址: | 710071 陕*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 大型 编码 aes 加密 方法 | ||
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)用第一个仿射变换函数对步骤(3c)解码后的128-bit的向量进行仿射编码,得到一个128-bit的向量;
(3f)用第二个仿射变换函数对步骤(3c)解码后的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对角矩阵,构建第二个仿射变换函数;
(5c)将随机生成的32×32的可逆矩阵,作为第三个仿射变换函数的线性部分,将随机生成一个的32-bit的向量作为第三个仿射变换函数的常量部分;
(6)生成用于进行加密钥、字节变换和列混淆操作的加密表MSK:
(6a)从所选的一列状态向量中随机选取一个未被选过的状态向量;
(6b)构建一个长度为65536的数组,数组的每个元素初始化为一个16bit向量;
(6c)对输入向量进行输入解码操作:
从长度为65536的数组中随机选取一个16-bit向量,将其作为输入向量,用16-bit的仿射变换函数对16-bit输入向量进行解码操作,得到解码后的一个16-bit向量,将16-bit的向量均分成2个8-bit向量,将2个8-bit向量进行异或操作,得到一个8-bit向量;
(6d)对步骤(6c)得到的8-bit向量进行加密钥、字节变换和列混淆操作:
将步骤(6c)得到的8-bit向量与8-bit轮密钥进行异或操作,得到一个8-bit的向量,将其进行字节变换操作,得到一个8-bit的向量,对其进行列混淆操作,得到一个32-bit的向量,用第三个仿射变换函数对32-bit向量进行混淆编码,得到一个32-bit的向量;
(6e)判断状态向量在状态矩阵列的行号是否小于2,若是,则执行步骤(6f),否则,执行步骤(6g);
(6f)用步骤(5a)构建的第一个仿射变换函数对32-bit的输出向量进行仿射编码,得到一个32-bit的向量;
(6g)用步骤(5b)构建的第二个仿射变换函数对32-bit的输出向量进行仿射编码,得到一个32-bit的向量;
(6h)判断是否选完长度为65536的数组中的所有16-bit向量,若是,则执行步骤(6i),否则,执行步骤(6c);
(6i)判断是否选完所选的一列状态向量中所有的状态向量,若是,则执行步骤(7),否则,执行步骤(6a);
(7)判断是否选完高级加密标准AES的状态矩阵中所有的列向量,若是,则执行步骤(8),否则,执行步骤(4);
(8)构建一个用于混淆编码的仿射变换函数:
随机生成一个128×128的可逆矩阵L,将其作为仿射变换函数的线性部分,随机生成一个128-bit的零向量B,将其作为仿射变换函数的常量部分;
(9)生成用于进行行移位操作移位表SR:
(9a)随机选取高级加密标准AES状态矩阵中的一个状态向量;
(9b)构建一个长度为65536的数组,数组的每个元素初始化一个16-bit向量;
(9c)对输入向量进行输入解码操作:
从长度为65535的数组中随机选取一个16-bit向量,将其作为输入向量,对16-bit输入向量进行解码操作,得到解码后的一个16-bit向量,将16-bit的向量均分成2个8-bit向量,将2个8-bit向量进行异或操作,得到一个8-bit向量;
(9d)对8-bit向量进行行移位操作:
对8-bit向量进行混淆解码,得到一个32-bit的向量,用一个128×32的矩阵左乘32-bit的向量,得到一个128-bit的向量;
(9e)用仿射变换函数对128-bit的向量进行混淆编码操作,得到一个128-bit的向量,将其写入长度为65536的数组中;
(9f)判断是否选完长度为65536的数组中的所有16-bit向量,若是,则执行步骤(9g),否则,执行步骤(9c);
(9g)判断是否选完状态矩阵中所有的状态向量,若是,则执行步骤(10),否则,执行步骤(9a);
(10)得到用来于在白盒环境下执行高级加密标准AES一轮加密所需的48张查找表。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910043431.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:基于AES-GCM的芯片数据处理方法及系统
- 下一篇:一种高效的聚合签名方法