基于arx白盒分组密码的数字内容加解密方法
技术领域
1.本发明属于网络信息安全技术领域,更进一步涉及信息安全技术领域中的一种基于模加、循环移位、异或arx(addition,rotation,xor)白盒分组密码的数字内容加解密方法。本发明可用于对数字内容加解密,达到版权保护的目的。
背景技术:
2.随着电子时代的来临,视听内容的载体由物理设备逐渐转为数字形态。尽管数字内容更易于生产、分发,以及存储,保护数字内容的任务却愈发艰巨。数字版权管理即是采用访问控制技术来保护数字内容的版权,具体地,限制数字资产的使用、修改和分发。经典的数字版权管理系统,如微软的windows媒体数字版权管理系统和苹果fairplay系统,均采用密码算法来控制客户对于数字内容的使用权限。数字内容提供商通过加密算法加密数字内容,并将加密后的内容发布至公开网络,付费客户通过许可证颁发商获取嵌入了解密密钥的解密设备,并运行解密算法,从而获得数字内容。由于客户拥有解密设备的使用权限,这为版权管理带来潜在威胁,即,客户可以从解密设备中提取解密密钥,并完全拥有数字内容的解密权,而白盒分组密码算法可以有效解决这一威胁。这一技术在保障加解密正确性的前提下,能够保证加密算法不泄露加密密钥,且解密算法不泄露解密密钥。
3.andrey bogdanov和takanori isobe在其发表的论文“white
‑
box cryptography revisited:space
‑
hard ciphers”(in proceedings of 22nd acm sigsac conference on computer and communications security,usa,2015,pp.1058
‑
1069.)中公开了一种基于白盒分组密码的数字内容加解密方法space
‑
32。该方法利用feistel网络的结构来进行加解密。加密方法和解密方法的轮函数均迭代128轮。具体地,加密方法的每一轮需要首先进行截断的高级加密标准aes(advanced encryption standard)的操作,随后再进行异或操作和调换操作,解密方法需要查询一个32比特输入、96比特输出的查找表。但是,该方法存在的不足之处是,其加密方法和解密方法均需执行128轮复杂轮函数,因此该方法的运行效率不高。该方法存在的第二点不足之处是,其解密方法需要预存储一个大小为51.5gb的查找表,因此该方法的解密方法的存储空间成本太高。
4.andrey bogdanov,takanori isobe,and elmar tischhauser在其发表的论文“towards practical whitebox cryptography:optimizing efficiency and space hardness”(in proceedings of 22nd international conference on the theory and application of cryptology andinformation security,vietnam,2016,pp.126
‑
158.)中公开了一种基于白盒分组密码的数字内容加解密方法spnbox
‑
32。该方法利用替换置换网络的结构来进行加解密。加密方法和解密方法的轮函数均迭代10轮。具体地,加密方法执行16轮的小尺寸aes,解密方法需要查询一个32比特输入、32比特输出的查找表。但是,该方法存在的不足之处是,其加密方法总共需要执行160轮aes的轮函数组件操作,因此该方法的加密方法的运行效率不高。
5.pierre
‑
alain,fouque pierre karpman,paul kirchner,and brice minaud在其
发表的论文“efficient and provable white
‑
box primitives”(in proceedings of 22nd international conference on the theory and application of cryptology and information security,vietnam,2016,pp.159
‑
188.)中公开了一种数字内容加解密方法hound 32。该方法利用feistel网络的结构来进行加解密。加密方法和解密方法的轮函数均迭代34轮。具体地,加密方法的每一轮需要首先执行aes,随后再进行两个并行的截断aes的操作与异或操作,解密方法需要查询两个32比特输入、64比特输出的查找表。但是,该方法存在的不足之处是,其加密方法和解密方法均需要执行34轮的轮函数操作,因此运行效率不高。该方法存在的第二点不足之处是,其解密方法需要预存储一个大小为64gb的查找表,因此该方法的解密方法的存储空间成本非常高。
技术实现要素:
6.本发明目的在于针对上述现有技术的不足,提出一种基于arx白盒分组密码的数字内容加解密方法,以解决加密方法和解密方法运行效率不高和解密方法存储空间成本太高的问题。
7.为实现上述目的,本发明的思路是:加密方法执行24轮arx的循环操作以及aes
‑
128的轮函数操作,解密方法执行aes
‑
128的逆轮函数操作以及对一个32比特输入、32比特输出的查找表的查表操作。由于arx的操作具备快速的算术实现指令,aes
‑
128的轮函数具备aes
‑
ni的快速实现指令,解决了加密方法和解密方法运行效率不高的问题。由于解密方法仅仅查询一个32比特输入、32比特输出的查找表,其占用的存储空间大小为16gb,解决了解密方法存储空间成本太高的问题。
8.本发明的技术方案包括如下:
9.步骤1,生成加密密钥:
10.利用密钥导出函数kdf,将一个128位的主密钥变换为25个32位的轮密钥k0,k1,...,k
i
,...,k
24
,作为数字内容的加密密钥;
11.步骤2,利用arx循环操作生成解密密钥:
12.(2a)将2
32
个32位比特串0,1,10,
…
,11111111111111111111111111111111分别与初始轮密钥k0异或,得到异或后的2
32
个32位比特串;
13.(2b)对每个32位比特串中的高16位循环右移7位后,再与低16位进行模数为65536的相加操作,得到该比特串的高16位,将每个32位比特串中的低16位复制,得到该比特串的低16位;
14.(2c)对每个32位比特串中的低16位循环左移2位后,再与高16位进行异或操作,得到该比特串的低16位,将每个32位比特串中的高16位复制,得到该比特串的高16位;
15.(2d)对每个32位比特串与轮密钥k
i
进行异或操作,得到异或后的32位比特串,其中i表示循环轮次;
16.(2e)遍历步骤(2b)、(2c)、(2d)24次,得到2
32
个32位比特串;
17.(2f)将2
32
个32位比特串排列在一张查找表中,作为数字内容的解密密钥;
18.步骤3,对数字内容进行预处理:
19.将数字内容编码为比特串,将比特串切分为128位的明文分组,对于不足128位的分组填充比特
‘0’
;
20.步骤4,利用初始轮密钥异或操作更新明文分组:
21.将每个128位的明文分组切分为4个32比特的小块,将每个小块与初始轮密钥k0异或,得到该小块异或后的小块;
22.步骤5,利用arx循环操作更新明文分组:
23.(5a)采用与步骤(2b)、(2c)、(2d)、(2e)的相同方法,对每个明文分组的每个小块进行arx循环操作,得到每个明文分组的4个更新后的小块;
24.(5b)对每个明文分组的4个更新后的小块,按照其更新前的顺序从高位到低位进行级联操作,得到128位比特串,作为每个明文分组的更新后的明文分组;
25.步骤6,利用aes
‑
128的轮函数操作更新明文分组:
26.(6a)利用aes
‑
128的密钥编排操作,将一个随机的128位比特串变换为与轮次相同数量的128位的比特串,作为aes
‑
128的轮密钥;
27.(6b)对每个明文分组和aes
‑
128的轮密钥进行aes
‑
128的轮函数操作,得到明文分组更新后的明文分组;
28.步骤7,对明文分组进行后处理:
29.将所有更新后的明文分组按照其更新前的顺序从高位到低位进行级联操作,得到密文比特串,将密文比特串编码为密文形式的数字内容;
30.步骤8,对密文形式的数字内容进行预处理:
31.将密文形式的数字内容解码为比特串,将比特串切分为128位的密文分组;
32.步骤9,利用查表操作更新密文分组:
33.(9a)将每个密文分组切分为4个32比特的小块,对每个小块对应的32比特索引,查找其在步骤(2f)生成的查找表中对应的32位比特串,作为该小块更新后的小块;
34.(9b)采用与步骤(5b)的相同方法,对每个密文分组进行级联操作,得到128位比特串,作为每个密文分组的更新后的密文分组;
35.步骤10,利用aes
‑
128的逆轮函数操作更新密文分组:
36.对每个密文分组和aes
‑
128的轮密钥进行aes
‑
128的逆轮函数操作,得到密文分组更新后的密文分组;
37.步骤11,对密文分组进行后处理:
38.将所有更新后的密文分组按照其更新前的顺序从高位到低位进行级联操作,得到明文比特串,将明文比特串解码为明文形式的数字内容。
39.本发明与现有技术相比,具有如下优点:
40.第一,本发明由于采用了arx的循环操作来更新明文分组,以及采用了aes
‑
128的逆轮函数操作来更新密文分组,与现有技术相比,解决了加密方法和解密方法运行效率不高的问题,使得本发明具有了加解密运行速度快的优点。
41.第二,本发明由于采用了一个32比特输入、32比特输出的查找表,与现有技术相比,解决了解密方法存储空间成本太高的问题,使得本发明具有了解密存储空间成本低的优点。
附图说明
42.图1为本发明的实现流程图;
43.图2为本发明的仿真实验中加密方法耗费的每字节时钟周期数结果图;
44.图3为本发明的仿真实验中解密方法耗费的每字节时钟周期数结果图;
45.图4为本发明的仿真实验中解密方法需要的存储空间大小结果图。
具体实施方式
46.下面结合附图和具体实施例,对本发明作进一步的详细说明。
47.参照图1,对本发明的实现步骤做进一步的描述。
48.步骤1,生成加密密钥。
49.利用密钥导出函数kdf,将一个128位的主密钥变换为25个32位的轮密钥k0,k1,...,k
i
,...,k
24
,作为数字内容的加密密钥。
50.所述的密钥导出函数kdf是指安全哈希算法族里的输出可扩展函数shake128、shake256中的任意一种。
51.步骤2,利用arx循环操作生成解密密钥。
52.s1:将2
32
个32位比特串0,1,10,
…
,11111111111111111111111111111111分别与初始轮密钥k0异或,得到异或后的2
32
个32位比特串。
53.s2:对每个32位比特串中的高16位循环右移7位后,再与低16位进行模数为65536的相加操作,得到该比特串的高16位,将每个32位比特串中的低16位复制,得到该比特串的低16位。
54.s3:对每个32位比特串中的低16位循环左移2位后,再与高16位进行异或操作,得到该比特串的低16位,将每个32位比特串中的高16位复制,得到该比特串的高16位。
55.s4:对每个32位比特串与轮密钥k
i
进行异或操作,得到异或后的32位比特串,其中i表示循环轮次。
56.s5:遍历步骤s2、s3、s4共24次,得到2
32
个32位比特串。
57.s6:将2
32
个32位比特串排列在一张查找表中,作为数字内容的解密密钥。
58.步骤3,对数字内容进行预处理。
59.将数字内容编码为比特串,将比特串切分为128位的明文分组,对于不足128位的分组填充比特
‘0’
。
60.步骤4,利用初始轮密钥异或操作更新明文分组。
61.将每个128位的明文分组切分为4个32比特的小块,将每个小块与初始轮密钥k0异或,得到该小块异或后的小块。
62.步骤5,利用arx循环操作更新明文分组。
63.s1:采用与步骤2中s2、s3、s4、s5的相同方法,对每个明文分组的每个小块进行arx循环操作,得到每个明文分组的4个更新后的小块。
64.s2:对每个明文分组的4个更新后的小块,按照其更新前的顺序从高位到低位进行级联操作,得到128位比特串,作为每个明文分组的更新后的明文分组。
65.步骤6,利用aes
‑
128的轮函数操作更新明文分组。
66.s1:利用aes
‑
128的密钥编排操作,将一个随机的128位比特串变换为6个128位的比特串,作为aes
‑
128的轮密钥。
67.s2预白化密钥:将每个明文分组与aes
‑
128的第1个轮密钥进行异或操作,得到更
新后的明文分组。
68.s3字节代换:将每个更新后的明文分组切分为16个8比特的小块,将16个小块按照从左到右、从上到下的顺序排列在一个4行4列的矩阵中,对每个小块对应的8比特索引,查找其在aes
‑
128的字节代换查找表中对应的8位比特串,作为该小块更新后的小块,得到更新后的矩阵。
69.s4行移位:对于每个明文分组,将更新后的矩阵中的第1行内的4个小块保持不变,第2行内的4个小块循环左移1个位置,第3行内的4个小块循环左移2个位置,第4行内的4个小块循环左移3个位置,得到更新后的矩阵。
70.s5列混淆:对于每个明文分组,对更新后的矩阵的每一列左乘aes
‑
128的列混淆矩阵,得到更新后的矩阵,将矩阵中的16个小块按照从左到右、从上到下的顺序排列成128位的比特串,作为更新后的明文分组。
71.s6轮密钥加:将每个更新后的明文分组与第j个aes
‑
128的轮密钥进行异或操作,得到更新后的明文分组,其中j表示循环轮次。
72.s7:遍历步骤s3、s4、s5、s6共5次,得到更新后的明文分组。
73.步骤7,对每个明文分组,遍历步骤5、步骤6共12次,得到更新后的明文分组。
74.步骤8,对每个明文分组,采用与步骤5相同的方法,得到更新后的明文分组。
75.步骤9,对明文分组进行后处理。
76.将所有更新后的明文分组按照其更新前的顺序从高位到低位进行级联操作,得到密文比特串,将密文比特串编码为密文形式的数字内容。
77.步骤10,对密文形式的数字内容进行预处理。
78.将密文形式的数字内容解码为比特串,将比特串切分为128位的密文分组。
79.步骤11,利用查表操作更新密文分组。
80.将每个密文分组切分为4个32比特的小块,对每个小块对应的32比特索引,查找其在步骤(2f)生成的查找表中对应的32位比特串,作为该小块更新后的小块。
81.采用与步骤5中s2的相同方法,对每个密文分组进行级联操作,得到128位比特串,作为每个密文分组的更新后的密文分组。
82.步骤12,利用aes
‑
128的逆轮函数操作更新密文分组。
83.s1预白化密钥:将每个密文分组与aes
‑
128的第6个轮密钥进行异或操作,得到更新后的密文分组。
84.s2逆列混淆:将每个更新后的密文分组切分为16个8比特的小块,将16个小块按照从左到右、从上到下的顺序排列在一个4行4列的矩阵中,对矩阵的每一列左乘aes
‑
128的逆列混淆矩阵,得到更新后的矩阵。
85.s3逆行移位:对于每个密文分组,将更新后的矩阵中的第1行内的4个小块保持不变,第2行内的4个小块循环右移1个位置,第3行内的4个小块循环右移2个位置,第4行内的4个小块循环右移3个位置,得到更新后的矩阵。
86.s4逆字节代换:对于每个密文分组,对更新后的矩阵中的每个小块对应的8比特索引,查找其在aes
‑
128的逆字节代换查找表中对应的8位比特串,作为该小块更新后的小块,得到更新后的矩阵,将更新后的矩阵中的16个小块按照从左到右、从上到下的顺序排列成128位的比特串,作为更新后的密文分组。
87.s5轮密钥加:将每个更新后的密文分组与第6
‑
k个aes
‑
128的轮密钥进行异或操作,得到更新后的密文分组,其中k表示循环轮次。
88.s6:遍历步骤s2、s3、s4、s5共5次,得到更新后的密文分组。
89.步骤13,对每个密文分组,遍历步骤11、步骤12共12次,得到更新后的密文分组。
90.步骤14,对每个密文分组,采用与步骤11相同的方法,得到更新后的密文分组。
91.步骤15,对密文分组进行后处理。
92.将所有更新后的密文分组按照其更新前的顺序从高位到低位进行级联操作,得到明文比特串,将明文比特串解码为明文形式的数字内容。
93.下面结合仿真实验对本发明的效果做进一步的说明:
94.1.仿真实验条件。
95.本发明的仿真实验的硬件平台为:处理器为intel xeon(r)silver 4110 cpu,主频为2.10ghz,内存为16gb。
96.本发明的仿真实验的软件平台为:windows 10操作系统和python 3.6。
97.2.仿真内容及其结果分析。
98.本发明仿真实验是采用本发明和三个现有技术(白盒分组密码space
‑
32加解密方法、白盒分组密码spnbox
‑
32加解密方法、白盒分组密码hound 32加解密方法)分别对2048位的比特串进行加解密,获得加解密运行时间和解密查找表存储空间的结果。其中,图2为本发明的加密方法和三个现有技术的加密方法运行时需要耗费的每字节时钟周期数结果图,图3为本发明的解密方法和三个现有技术的解密方法运行时需要耗费的每字节时钟周期数结果图,图4为本发明的解密方法和三个现有技术的解密方法需要的存储空间大小结果图。
99.在仿真实验中,采用的三个现有技术是指:
100.白盒分组密码space
‑
32加解密方法是指,andrey bogdanov和takanori isobe在其发表的论文“white
‑
box cryptography revisited:space
‑
hard ciphers”(in proceedings of 22nd acm sigsac conference on computer and communications security,usa,2015,pp.1058
‑
1069.)中公开的一种基于白盒分组密码的数字内容加解密方法space
‑
32,简称白盒分组密码space
‑
32加解密方法。
101.白盒分组密码spnbox
‑
32加解密方法是指,andrey bogdanov,takanori isobe,and elmar tischhauser在其发表的论文“towards practical whitebox cryptography:optimizing efficiency and space hardness”(in proceedings of 22nd international conference on the theory and application of cryptology and information security,vietnam,2016,pp.126
‑
158.)中公开的一种基于白盒分组密码的数字内容加解密方法spnbox
‑
32,简称白盒分组密码spnbox
‑
32加解密方法。
102.白盒分组密码hound 32加解密方法是指,pierre
‑
alain,fouque pierre karpman,paul kirchner,and brice minaud在其发表的论文“efficient and provable white
‑
box primitives”(in proceedings of 22nd international conference on the theory and application of cryptology and information security,vietnam,2016,pp.159
‑
188.)中公开的一种数字内容加解密方法hound32,简称白盒分组密码hound 32加解密方法。
103.下面结合图2、图3、图4的仿真图对本发明的效果做进一步的描述。
104.随机选择一个2048位的比特串作为明文,分别采用本发明的加密方法与现有技术的加密方法对其进行加密,得到2048位的比特串作为密文,测试运行需要消耗的时钟周期数,随后计算出每字节时钟周期数,得到图2。由图2可以看出,本发明的加密方法与现有技术的白盒分组密码space
‑
32加解密方法的加密方法相比,需要耗费的每字节时钟周期数较低,证明本发明加密方法的运行时间效率优于白盒分组密码space
‑
32加解密方法。
105.随机选择一个2048位的比特串作为密文,分别采用本发明的解密方法与现有技术的解密方法对其进行解密,得到2048位的比特串作为明文,测试运行需要消耗的时钟周期数,随后计算出每字节时钟周期数,得到图3。由图3可以看出,本发明的解密方法与现有技术的白盒分组密码space
‑
32加解密方法、白盒分组密码hound 32加解密方法的解密方法相比,需要耗费的每字节时钟周期数较低,证明本发明解密方法的运行时间效率优于白盒分组密码space
‑
32加解密方法和白盒分组密码hound 32加解密方法。
106.随机选择一个2048位的比特串作为密文,分别采用本发明的解密方法与现有技术的解密方法对其进行解密,测试解密方法所采用的查找表在内存中占用的空间大小,得到图4。由图4可以看出,本发明解密方法所采用的查找表,相比于三个现有技术解密方法所采用的查找表,其占用的空间更小,证明本发明解密方法的存储空间成本优于前三种现有技术解密方法的存储空间成本。
107.以上描述仅是本发明的一个具体实例,并未构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修改和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。
再多了解一些
本文用于企业家、创业者技术爱好者查询,结果仅供参考。