[发明专利]基于大型仿射编码的白盒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张查找表。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201910043431.9/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top