[发明专利]基于大型仿射编码的白盒AES加密方法有效

专利信息
申请号: 201910043431.9 申请日: 2019-01-17
公开(公告)号: CN109714152B 公开(公告)日: 2020-04-07
发明(设计)人: 张慧;陈杰;姚思;徐东;童鹏 申请(专利权)人: 西安电子科技大学
主分类号: H04L9/06 分类号: H04L9/06;H04L9/08
代理公司: 陕西电子工业专利中心 61205 代理人: 田文英;王品华
地址: 710071 陕*** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种基于大型仿射编码的白盒AES加密方法,其步骤包括:1.构造外部输入编码;2.构建两个仿射变换函数;3.生成解码表De;4.从高级加密标准AES的状态矩阵中随机选取未选过的一列状态向量;5.构建三个仿射变换函数;6.生成加密表MSK;7.判断是否选完高级加密标准AES的状态矩阵中所有的列向量;8.构建一个仿射变换函数;9.生成移位表SR;10.生成了用来在白盒环境下执行高级加密标准AES一轮加密所需的48张查找表。本发明采用大型仿射编码保护查找表,通过查表进行数据加密,不会泄露中间值,使得本发明在数据加密时具有安全性高,加密效率快的优点。
搜索关键词: 基于 大型 编码 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)用第一个仿射变换函数对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对角矩阵,构建第二个仿射变换函数;(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)对8‑bit向量进行加密钥、字节变换和列混淆操作:将8‑bit向量与8‑bit轮密钥进行异或操作,得到一个8‑bit的向量,将其进行字节变换操作,得到一个8‑bit的向量,对其进行列混淆操作,得到一个32‑bit的向量,用第三个仿射变换函数对32‑bit向量进行混淆编码,得到一个32‑bit的向量;(6e)判断状态向量在状态矩阵列的行号是否小于2,若是,则执行步骤(6f),否则,执行步骤(6g);(6f)用第一个仿射变换对32‑bit的输出向量进行仿射编码,得到一个32‑bit的向量;(6g)用第二个仿射变换对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/patent/201910043431.9/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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