基于白盒分组密码的加解密方法技术

技术编号:27006557 阅读:25 留言:0更新日期:2021-01-08 17:10
本发明专利技术公开一种基于白盒分组密码的加解密方法,主要解决现有技术加解密效率低的问题。该方法包括密钥生成、分组加密及分组解密。所述密钥生成,是将主密钥变换为轮密钥,并由轮密钥生成一个查找表,此外,由随机数生成一个随机矩阵;所述分组加密,是用轮密钥和随机矩阵处理明文分组,循环7轮,得到的输出为密文分组;所述分组解密,是用查找表和随机矩阵处理密文分组,循环7轮,得到的输出为解密后的明文分组。本发明专利技术保证加解密方法不会泄露密钥,且运行效率高于现有方法,可用于视音频数字内容的版权保护以及移动支付场景。

【技术实现步骤摘要】
基于白盒分组密码的加解密方法
本专利技术属于网络与信息安全
,特别涉及一种基于白盒分组密码的加解密方法,可用于视音频数字内容的版权保护以及移动支付场景。
技术介绍
在网络与信息安全领域,加密算法是保证信息机密性的核心技术。一般而言,加密算法公开,但其中使用的密钥需要保密,因此,密钥的安全就显得尤为重要。传统的加密算法在设计之初,假设敌手只能获得算法运行时的输入输出,即,被加密的消息以及加密之后的消息,而不知其中间状态。由此,若敌手无法恢复出密钥,则称该加密算法安全。这种敌手模型被称为黑盒模型。然而,随着互联网和物联网的普及,执行密码算法的终端平台经常位于潜在的恶意环境中。这种情况下,敌手可以观测或是改动算法运行时的中间状态,从而帮助自己提取出密钥。这种敌手模型被称为白盒模型,而白盒密码研究的正是如何在白盒模型下保护密码算法的安全性。目前,白盒密码方案的设计包括两大类,分别是设计已有分组密码算法的白盒实现和设计新的白盒分组密码算法。其中,白盒实现主要针对高级加密标准AES,数据加密标准DES,以及国家商用密码标准SM4等分组密码标准算法,但是,许多白盒实现面临各种各样的攻击。截至目前,对于AES,DES以及SM4这三种分组密码标准算法还没有公认安全的白盒实现。新的白盒分组密码算法则采用了不同的思路,即在设计之初就考虑白盒模型。近几年,一些白盒分组密码算法被相继提出,其中最有竞争力的两个白盒分组密码加解密方法是SPNbox和WEM,分别出自AndreyBogdanov等人于2016年在ASIACRYPT上发表的题为“TowardsPracticalWhiteboxCryptography:OptimizingEfficiencyandSpaceHardness”的文章,以及JihoonCho等人于2017年在CT-RSA上发表的题为“WEM:ANewFamilyofWhite-BoxBlockCiphersBasedontheEven-MansourConstruction”的文章。SPNbox的加密方法是利用小尺寸AES组件,解密方法是利用查找表;WEM的加密方法和解密方法均采用查找表。尽管SPNbox和WEM是可证明安全的,但这两个方法的实用效率有限。比如,SPNbox的加密方法需要利用320轮小尺寸AES组件并执行10轮最大距离可分MDS矩阵乘法运算;WEM的解密方法需要利用12轮AES组件。这种较高的轮数以及对AES组件的利用限制了这两个加解密方法的运行效率。
技术实现思路
本专利技术的目的在于克服上述现有技术的不足,提出一种基于白盒分组密码的加解密方法,以提高在白盒模型下加密和解密消息的效率。为实现上述目的,本专利技术的技术方案如下:(1)密钥生成:(1a)服务器将一个128位的主密钥看作输入,通过密钥导出函数KDF变换,输出25个16位的轮密钥,即用主密钥生成轮密钥;(1b)服务器将65536个16位比特串0,1,10,…,11111111111111111看作输入,应用25个轮密钥对每个输入的比特串依次执行初始轮密钥加操作和24轮群加密与轮密钥加的循环操作,输出一个包含65536个16位比特串的查找表,即用轮密钥生成查找表;(1c)服务器将由8个随机数构成的一个8*8对角矩阵看作输入,并用输入左乘系统预选的矩阵,输出一个8*8的随机矩阵;(2)分组加密:(2a)服务器将128位的明文分组看作输入,并将其分成小块,对每个小块依次执行初始轮密钥加操作和24轮群加密与轮密钥加的循环操作,然后对小块进行级联;(2b)应用随机矩阵对级联后的小块进行线性置换,再与一个由加密循环轮次决定的比特串进行异或操作,将异或结果作为本轮加密操作的输出和下轮加密操作的输入;(2c)循环执行(2a)到(2b)共7次,以最后一轮加密操作的输出作为最终输出的128位的密文分组;(3)分组解密:(3a)用户设备将128位的密文分组看作输入,并将该输入与一个由解密循环轮次决定的比特串进行异或操作,再应用随机矩阵对异或结果进行线性置换,并将线性置换的结果分成多个小分组;(3b)将(3a)所分的每一个小分组视为索引,在查找表中查找该索引对应的内容,并对内容进行级联,再将级联后的内容作为本轮解密操作的输出和下轮解密操作的输入;(3c)循环执行(3a)到(3b)共7次,以最后一轮解密操作的输出作为最终输出的解密后的128位的明文分组。本专利技术与现有技术相比,具有如下优点:1)本专利技术由于在加密中应用生成的轮密钥与随机矩阵,并采用了模加、循环移位及异或的不同操作,与现有技术相比,有效提高了加密消息的效率;2)本专利技术由于在解密中应用了生成的查找表与随机矩阵,采用了比现有技术更低的轮数,有效提高了解密消息的效率。附图说明图1为本专利技术的实现流程图;图2为本专利技术中的密钥生成子流程图;图3为本专利技术中的分组加密子流程图;图4为本专利技术中的分组解密子流程图。具体实施方式下面结合附图和具体实施例,对本专利技术作进一步的详细说明。参照图1,本实例的实现步骤如下:步骤1:密钥生成。参照图2,本步骤具体实现如下:(1.1)用主密钥生成轮密钥:服务器将一个128位的主密钥看作输入,通过密钥导出函数KDF变换,即采用安全哈希算法族里的输出可扩展函数SHAKE128对128位的主密钥进行变换,输出25个16位的轮密钥;(1.2)用轮密钥生成查找表:本步骤是由服务器将65536个16位比特串0,1,10,…,11111111111111111看作输入,应用25个轮密钥对每个输入的比特串依次执行初始轮密钥加操作和24轮群加密与轮密钥加的循环操作,输出一个包含65536个16位比特串的查找表,具体实现如下:(1.2.1)初始轮密钥加:服务器将其第x个输入比特串与第1个轮密钥进行异或操作,其中x为生成查找表的循环轮次,得到一个16位中间比特串;(1.2.2)群加密:服务器将(1.2.1)所得的16位中间比特串看作输入,并将其输入的低8位保持不变,将高8位循环右移7位后,再与低8位进行模数为256的加法运算,并将加法运算结果作为新的16位中间值的高8位,低8位不变;服务器将新的16位中间比特串的高8位保持不变,将低8位循环左移2位后再与高8位进行异或操作,并将异或结果作为最终群加密的输出低8位,高8位不变;(1.2.3)轮密钥加:服务器将(1.2.2)的输出看作输入,并将其输入与第i+1个轮密钥进行异或操作,其中i为群加密与轮密钥加循环操作的轮次,再将异或结果作为本轮循环操作的输出以及下轮循环操作的输入;(1.2.4)循环执行(1.2.2)到(1.2.3)共24次,输出1个16位比特串;(1.2.5)循环执行(1.2.1)到(1.2.4)共65536次,最终输出一个包含65536个16位比特串的查找表;本文档来自技高网
...

【技术保护点】
1.一种基于白盒分组密码的加解密方法,其特征在于,包括如下:/n(1)密钥生成:/n(1a)服务器将一个128位的主密钥看作输入,通过密钥导出函数KDF变换,输出25个16位的轮密钥,即用主密钥生成轮密钥;/n(1b)服务器将65536个16位比特串0,1,10,…,11111111111111111看作输入,应用25个轮密钥对每个输入的比特串依次执行初始轮密钥加操作和24轮群加密与轮密钥加的循环操作,输出一个包含65536个16位比特串的查找表,即用轮密钥生成查找表;/n(1c)服务器将由8个随机数构成的一个8*8对角矩阵看作输入,并用输入左乘系统预选的矩阵,输出一个8*8的随机矩阵;/n(2)分组加密:/n(2a)服务器将128位的明文分组看作输入,并将其分成小块,对每个小块依次执行初始轮密钥加操作和24轮群加密与轮密钥加的循环操作,然后对小块进行级联;/n(2b)应用随机矩阵对级联后的小块进行线性置换,再与一个由加密循环轮次决定的比特串进行异或操作,将异或结果作为本轮加密操作的输出和下轮加密操作的输入;/n(2c)循环执行(2a)到(2b)共7次,以最后一轮加密操作的输出作为最终输出的128位的密文分组;/n(3)分组解密:/n(3a)用户设备将128位的密文分组看作输入,并将该输入与一个由解密循环轮次决定的比特串进行异或操作,再应用随机矩阵对异或结果进行线性置换,并将线性置换的结果分成多个小分组;/n(3b)将(3a)所分的每一个小分组视为索引,在查找表中查找该索引对应的内容,并对内容进行级联,再将级联后的内容作为本轮解密操作的输出和下轮解密操作的输入;/n(3c)循环执行(3a)到(3b)共7次,以最后一轮解密操作的输出作为最终输出的解密后的128位的明文分组。/n...

【技术特征摘要】
1.一种基于白盒分组密码的加解密方法,其特征在于,包括如下:
(1)密钥生成:
(1a)服务器将一个128位的主密钥看作输入,通过密钥导出函数KDF变换,输出25个16位的轮密钥,即用主密钥生成轮密钥;
(1b)服务器将65536个16位比特串0,1,10,…,11111111111111111看作输入,应用25个轮密钥对每个输入的比特串依次执行初始轮密钥加操作和24轮群加密与轮密钥加的循环操作,输出一个包含65536个16位比特串的查找表,即用轮密钥生成查找表;
(1c)服务器将由8个随机数构成的一个8*8对角矩阵看作输入,并用输入左乘系统预选的矩阵,输出一个8*8的随机矩阵;
(2)分组加密:
(2a)服务器将128位的明文分组看作输入,并将其分成小块,对每个小块依次执行初始轮密钥加操作和24轮群加密与轮密钥加的循环操作,然后对小块进行级联;
(2b)应用随机矩阵对级联后的小块进行线性置换,再与一个由加密循环轮次决定的比特串进行异或操作,将异或结果作为本轮加密操作的输出和下轮加密操作的输入;
(2c)循环执行(2a)到(2b)共7次,以最后一轮加密操作的输出作为最终输出的128位的密文分组;
(3)分组解密:
(3a)用户设备将128位的密文分组看作输入,并将该输入与一个由解密循环轮次决定的比特串进行异或操作,再应用随机矩阵对异或结果进行线性置换,并将线性置换的结果分成多个小分组;
(3b)将(3a)所分的每一个小分组视为索引,在查找表中查找该索引对应的内容,并对内容进行级联,再将级联后的内容作为本轮解密操作的输出和下轮解密操作的输入;
(3c)循环执行(3a)到(3b)共7次,以最后一轮解密操作的输出作为最终输出的解密后的128位的明文分组。


2.根据权利要求1所述的方法,其中(1a)中通过密钥导出函数KDF变换,输出25个16位的轮密钥,是采用安全哈希算法族里的输出可扩展函数SHAKE128对128位的主密钥进行变换,输出25个16位的轮密钥。


3.根据权利要求1所述的方法,其中(1b)中应用由主密钥生成的25个轮密钥,对每个输入的比特串依次执行初始轮密钥加操作和24轮群加密与轮密钥加的循环操作,实现如下:
(1b1)初始轮密钥加...

【专利技术属性】
技术研发人员:刘君陈杰原梓清
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1