[发明专利]基于大型仿射编码的白盒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/,转载请声明来源钻瓜专利网。
- 上一篇:基于AES-GCM的芯片数据处理方法及系统
- 下一篇:一种高效的聚合签名方法