CN113343276B - 基于广义二维猫映射的轻量级分组密码算法gcm的加密方法 - Google Patents

基于广义二维猫映射的轻量级分组密码算法gcm的加密方法 Download PDF

Info

Publication number
CN113343276B
CN113343276B CN202110746280.0A CN202110746280A CN113343276B CN 113343276 B CN113343276 B CN 113343276B CN 202110746280 A CN202110746280 A CN 202110746280A CN 113343276 B CN113343276 B CN 113343276B
Authority
CN
China
Prior art keywords
round
key
data
bit
replacement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110746280.0A
Other languages
English (en)
Other versions
CN113343276A (zh
Inventor
李浪
陈文�
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hengyang Normal University
Original Assignee
Hengyang Normal University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hengyang Normal University filed Critical Hengyang Normal University
Priority to CN202110746280.0A priority Critical patent/CN113343276B/zh
Publication of CN113343276A publication Critical patent/CN113343276A/zh
Application granted granted Critical
Publication of CN113343276B publication Critical patent/CN113343276B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于广义二维猫映射的轻量级分组密码算法GCM实现方法,该方法包括获取待加密数据,并依次进行轮函数、异或运算、密钥更新、轮密钥加、P1置换。奇偶轮采用两个不同的轮函数F0和F1,F0和F1的区别在于其非线性组件不同,轮函数F1采用与非运算,而轮函数F0采用与运算,在电路中用更小的与非逻辑门替代与逻辑门可以减少硬件实现资源。此外,本发明基于广义二维猫映射设计一种动态密钥相关置换层P1,能够有效提升算法的混淆性以及扩散性。

Description

基于广义二维猫映射的轻量级分组密码算法GCM的加密方法
技术领域
本发明涉及计算机加密领域,尤其涉及一种基于广义二维猫映射的轻量级分组密码算法GCM的加密方法、装置及存储介质。
背景技术
近年来,随着物联网的快速发展,一些资源占用量少、耗电量低的小型嵌入式设备(如无线传感器、智能卡、射频标签等)作为物联网中的节点得到广泛使用,同时引发人们对于节点数据传输过程中机密性、隐私性的广泛关注。由于物联网节点通常在面积、功率、硬件方面的能耗等方面具有强大的成本限制,传统的AES、DES密码不适用于这种极端受限环境,因此面向于资源约束环境的轻量级分组密码成为了研究热点。
目前,轻量级分组密码仍存在如下问题:
(1)传统的Feistel结构轻量级分组密码在一轮加密操作中只有一半数据发生了变化,其混淆性、扩散性相对于SPN结构而言较低;
(2)SPN结构轻量级分组密码虽然能一轮改变全部数据,有着较好的混淆性、扩散性,但大部分的该结构密码加解密不一致,需要额外增加较多的硬件资源;
(3)轻量级分组密码中,P置换结构简单,一般是静态组件以单一的一种置换方式进行置换操作,相比于动态置换组件而言,其安全性低;
(4)目前轻量级分组密码非线性组件在硬件实现上,仍存在可优化的空间。
发明内容
本发明提供了一种基于广义二维猫映射的轻量级分组密码算法GCM的加密方法、装置及介质,其目的在于:首先,克服大部分广义Feistel结构一轮只能混淆和扩散一半分组的不足之处;其次,在电路中用更小的与非逻辑门替代与逻辑门作为算法的非线性组件能有效减少硬件实现资源;最后,通过构造一种8选1的动态密钥相关置换层克服传统P置换结构简单、扩散效果差,进一步提升算法安全性。
本发明提供了如下技术方案:
一方面,一种基于广义二维猫映射的轻量级分组密码算法GCM的加密方法,包括如下步骤:
步骤1:将待加密的数据分成4个16位的加密分组数据X0||X1||X2||X3
步骤2:将加密分组数据X0进行第一次轮运算获得X′0,将X′0与加密分组数据X1进行异或操作;
步骤3:将经过轮运算后的运算结果与加密分组数据X3进行异或运算;
步骤4:将步骤3获得的运算结果进行第二次轮运算;
步骤5:获取更新后的轮密钥;
密钥更新,并将更新后的密钥的中间32位等分成2个16位左轮密钥
Figure GDA0003606340310000021
右轮密钥
Figure GDA0003606340310000022
1≤i≤R,R表示迭代轮次,取值为27;
步骤6:将步骤2中的运算结果与左轮密钥
Figure GDA0003606340310000023
进行轮密钥加运算;
步骤7:将步骤1中分组数据X2与右轮密钥
Figure GDA0003606340310000024
进行轮密钥加运算;
步骤8:将步骤1中的分组数据X0、步骤4获得的运算结果分别与步骤7中获得的运算结果进行异或运算;
步骤9:将步骤3、步骤6以及步骤8获得的运算结果进行P1置换;
步骤10:将步骤9获得结果重复执行步骤1至步骤9,继续迭代R-1轮,第R轮迭代时,重复执行步骤1至步骤8后,输出密文。
进一步地,奇数轮时,轮运算使用F1函数;偶数轮时,轮运算使用F0函数;
所述F0函数和F1函数均包含:并列的向左循环移0位运算(<<<0)、向左循环移3位运算(<<<3)、向左循环移1位(<<<1)运算,向左循环移0位运算的结果和向左循环移3位运算的结果进行组合运算后的结果再与向左循环移1位运算的结果进行异或运算
Figure GDA0003606340310000025
其中,F0函数和F1函数中的组合运算分别为与运算和与非运算。
向左循环移位运算符号为“<<<”;
向右循环移位运算符号为“>>>”;
进一步地,所述密钥更新过程如下:
步骤A:若当前迭代次数不为1,则对上一次更新后的密钥进行向左循环移32位操作,进入下一步骤,否则,直接进入下一步骤;
下一轮密钥的生成受上一轮密钥的影响;
步骤B:取当前密钥的第61-65位进行轮常量加操作,将获得的结果与当前密钥的第1-60位进行合并;
所述轮常量加操作是指与轮常量进行异或运算;
步骤C:对步骤B得到的结果的前64位调用轮函数F进行更新操作,再与当前密钥的后32位密钥拼接成新的96位密钥。
进一步地,所述密钥更新中使用的轮常量是将加密轮数作为5位的轮常量。
比如轮数为1时,轮常量为00001;
进一步地,所述P1置换操作过程如下:
将待进行P1置换的64位数据按照8×8矩阵进行排列,将每一位数据在矩阵中的位置坐标作为自主构造的广义二维猫映射的输入值,经过自主构造的广义二维猫映射得到新位置坐标,再进行如下操作:
第一步,将矩阵中所有原位置坐标所存的数据赋值到新位置坐标处,得到置换后的64位数据;
第二步,对置换后的64位数据进行向左循环移3位的操作;
对上述两步操作迭代M-1次,在第M次迭代时,将执行完第一步操作后,以所有新位置坐标上所存数据对应在待进行P1置换的64位数据中的位数作为置换值,得到置换表,完成P1置换;
所述自主构造的广义二维猫映射的公式如下:
Figure GDA0003606340310000031
其中,g为广义二维猫映射控制参数,取值为每轮密钥的首3位,N为输入数据的位数,取值为8;(x0,y0)为数据在8×8矩阵中的原位置坐标,(x1,y1)为经广义二维猫映射置乱后的8×8矩阵中位置坐标,8×8矩阵的坐标范围为(0,0)到(7,7)。
矩阵形式如下:
Figure GDA0003606340310000032
其中,0≤x0≤7,0≤y0≤7,且
Figure GDA0003606340310000033
进一步地,所述M取值为16。
迭代次数过多,可能会导致数据大部分会置换回来,且耗时过多,效率低;迭代次数过低,其置乱效果可能会不好。
进一步地,对密文进行解密时,解密过程包括如下步骤:
步骤A1:将待解密数据以16位为单位依次划分为4组,得到C0||C1||C2||C3,再进行rP1置换,替换成C3||C2||C1||C0作为解密分组数据;
步骤A2:先对解密分组数据C3进行第一次轮运算获得C′3,将C′3'与解密分组数据C2进行异或操作;
在解密过程中如传统Feistel结构一样,可以复用加密结构进行算法解密;
步骤A3:将经过轮运算后的运算结果与解密分组数据C0进行异或运算;
步骤A4:将步骤A3获得的运算结果进行第二次轮运算;
步骤A5:获取解密时更新的轮密钥;
按照加密时第R轮至第1轮轮密钥的顺序调用轮密钥;
步骤A6:将步骤A2中的运算结果与右轮密钥
Figure GDA0003606340310000041
进行轮密钥加运算;
步骤A7:将步骤A1中解密分组数据C1与左轮密钥
Figure GDA0003606340310000042
进行轮密钥加运算;
步骤A8:将步骤A1中的解密分组数据C3、步骤A4获得的运算结果分别与步骤A7中获得的运算结果进行异或运算;
步骤A9:将步骤A3、步骤A6以及步骤A8获得的运算结果先进行一次rP1置换,再进行P1逆置换,最后进行一次rP1置换作为下一轮解密操作的输入值;
步骤A10:将步骤A9获得结果重复执行步骤A1至步骤A9,继续迭代R-1轮,第R轮迭代时,重复执行步骤A1至步骤A8后,即可得到解密结果X′,将解密结果以16位为单位依次划分为4组,表示为X′=X3||X2||X1||X0,最后经过一次rP1置换,置换成X=X0||X1||X2||X3输出结果;
所述P1逆置换与P1置换互为逆运算;
所述rP1置换是指将待进行rP1置换的数据以16位为单位依次划分为4组,表示为T=T0||T1||T2||T3,则rP1置换结果T′表示为:T′=T3||T2||T1||T0
rP1置换为线性置换,起到将4个16位的数据块进行逆序排序的作用,逆序排列不是从末位至首位排列,而是将4个T0||T1||T2||T3的分组按T3||T2||T1||T0的组合顺序重新组合。
所述P1逆置换的迭代操作中前M-1次需进行向右循环移3位操作,且利用的是广义二维猫映射的逆映射公式获得置换表,进而根据该置换表完成P1逆置换操作;
另一方面,一种基于广义二维猫映射的轻量级分组密码算法GCM实现装置,包括:
初始化单元:用于获取64位待加/解密数据,进行加/解密运算;
轮密钥生成单元:用于将所述初始密钥进行R轮密钥扩展运算,得到轮密钥加操作中的2个轮密钥;
加解密单元:采用上述的一种基于广义二维猫映射的轻量级分组密码算法GCM实现方法进行加解密运算;
用于加密运算时,利用轮密钥、待加密数据、轮函数运算以及P1置换先迭代R-1轮,再进行轮函数运算和轮密钥加运算得到密文;
用于解密运算时,利用轮密钥、待解密数据、rP1置换、轮函数运算以及P1逆置换先迭代R-1轮,再进行轮函数运算、轮密钥加运算和rP1置换得到明文。
再一方面,一种计算机可读存储介质,所述存储介质包括存储的程序,所述程序适于处理器加载并执行上述的一种基于广义二维猫映射的轻量级分组密码算法GCM的加密方法。
有益效果
本发明提供了一种基于广义二维猫映射的轻量级分组密码算法GCM的加密方法、装置及存储介质,该算法实现方法由加密结构、非线性层和线性层组成。
首先,本发明设计了一种结合传统广义Feistel结构加解密一致优势和SPN结构混淆扩散速度快优势的加密结构。优化了传统广义Feistel结构一轮只混淆和扩散一半分组的不足之处,在解密过程中如传统Feistel结构一样,可以高度复用加密结构进行算法解密。
其次非线性层方面,本发明使用了两个轮函数,其不同点在于F0轮函数采用与门作为非线性组件,F1轮函数采用与非门作为非线性组件,奇数轮时加密过程调用F1轮函数,偶数轮时加密过程调用F0轮函数。一方面,使用两个轮函数的算法与采用单一的轮函数算法相比较而言,其安全性更高。另一方面,在F1轮函数中,用资源面积小的与非门替代与门进行非线性组件的设计,能有效减少硬件实现资源。
最后线性层方面,本发明基于自主构造的广义二维猫映射设计了动态密钥相关P1置换层。将每轮密钥的首3位值作为广义二维猫映射的控制参数g值,生成了8个不同置乱效果的置换表,在加密过程中根据每轮密钥首3位的值选择其中一个表进行置换操作,从而实现线性层动态密钥相关置换效果,进一步提升算法的安全性。
附图说明
图1为本发明实施方式提供的一种基于广义二维猫映射的轻量级分组密码算法GCM的加密方法的加密过程示意图;
图2为本发明实施方式提供的一种基于广义二维猫映射的轻量级分组密码算法GCM的加密方法的解密过程示意图。
具体实施
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
本发明实施例提供了一种基于广义二维猫映射的轻量级分组密码算法GCM的加密方法,加密过程如图1所示,包括如下步骤:
步骤1:将待加密的数据分成4个16位的加密分组数据X0||X1||X2||X3
步骤2:将加密分组数据X0进行第一次轮运算获得X′0,将X′0与加密分组数据X1进行异或操作;
步骤3:将经过轮运算后的运算结果与加密分组数据X3进行异或运算;
步骤4:将步骤3获得的运算结果进行第二次轮运算;
步骤5:获取更新后的轮密钥;
密钥更新,并将更新后的密钥的中间32位等分成2个16位轮密钥
Figure GDA0003606340310000061
1≤i≤R;
步骤6:将步骤2中的运算结果与左轮密钥
Figure GDA0003606340310000062
进行轮密钥加运算;
步骤7:将步骤1中分组数据X2与右轮密钥
Figure GDA0003606340310000063
进行轮密钥加运算;
步骤8:将步骤1中的分组数据X0、步骤4获得的运算结果分别与步骤7中获得的运算结果进行异或运算;
步骤9:将步骤3、步骤6以及步骤8获得的运算结果进行P1置换;
步骤10:将步骤9获得结果重复执行步骤1至步骤9,继续迭代R-1轮,第R轮迭代时,重复执行步骤1至步骤8后,输出密文。
步骤2、步骤4中,所述F1函数依次包含向左循环移0位(<<<0)、向左循环移3位(<<<3)、向左循环移1位(<<<1)、与非运算(!&)以及异或运算
Figure GDA0003606340310000064
所述F0函数依次包含向左循环移0位(<<<0)、向左循环移3位(<<<3)、向左循环移1位(<<<1)、与运算(&)以及异或运算
Figure GDA0003606340310000065
在具体实施中用标志位v来判断轮函数的调用,在奇数轮时v=0,加密过程调用F1轮函数,密钥更新过程调用F0轮函数;在偶数轮时v=1,加密过程调用F0轮函数,密钥更新过程调用F1轮函数。
所述F0函数、F1函数具体的运算过程如下:
奇数轮时,加密过程调用F1函数,将函数输入数据X′分别向左循环移动0位、3位、1位,得到X′<<<0、X′<<<3、X′<<<1,将X′<<<0与X′<<<3进行与非运算(!&),再将获得的结果与X′<<<0进行异或运算。可用以下公式表示为:
Figure GDA0003606340310000066
偶数轮时,加密过程调用F0函数,将函数输入数据X′分别向左循环移动0位、3位、1位,得到X′<<<0、X′<<<3、X′<<<1,将X′<<<0与X′<<<3进行与运算(&),再将获得的结果与X′<<<0进行异或运算。可用如下公式表示为:
Figure GDA0003606340310000071
所述每一轮参与轮密钥加运算的2个16位左轮密钥
Figure GDA0003606340310000072
右轮密钥
Figure GDA0003606340310000073
取自每一轮更新后左循环移位前的96位密钥中间32位;
所述步骤5中密钥更新操作包括如下步骤:
将96位的初始密钥或每一轮更新后的密钥Key表示为Key=K0||K1||…K94||K95
将加密轮数作为5位的轮常量(counter)与Key中第61位至第65位K60||K61||K62||K63||K64进行异或运算;
取Key经与轮常量异或操作后的前64位K0||K1||…K62||K63,从左边最高有效位开始以16位为单位依次划分为四组,记为KL0、KL1、KR0和KR1
偶数轮时,密钥更新过程调用F1函数,奇数轮时,密钥更新过程调用F0函数。具体操作为将待更新的分组密钥数据KL0、KL1分别向左循环移动0位、3位、1位,得到
Figure GDA0003606340310000074
当调用F1函数时,将
Figure GDA0003606340310000075
Figure GDA0003606340310000076
Figure GDA0003606340310000077
进行与非运算(!&),当调用F0函数时,将
Figure GDA0003606340310000078
Figure GDA0003606340310000079
Figure GDA00036063403100000710
进行与运算(&),最后再将运算结果分别与
Figure GDA00036063403100000711
进行异或运算,将运算结果分别设为e1、e2则具体运算过程可由如下公式表示:
Figure GDA00036063403100000712
Figure GDA00036063403100000713
将运算结果e1、e2分别与待更新的分组密钥数据KR0、KR1进行异或运算,将结果记为
Figure GDA00036063403100000714
(1≤i≤R),在这里R为迭代轮次,取值为27;
将KL0、KL1
Figure GDA00036063403100000715
以及剩余的32位K64||K65||…K94||K95按顺序组合成一个新的96位密钥,向左循环移37位,该轮密钥更新完成,循环移动后的值作为下一轮密钥更新的输入值,其中
Figure GDA00036063403100000716
即为参与该轮密钥加运算的两个轮密钥;下一轮密钥更新的输入值可用公式表示为:
Figure GDA00036063403100000717
所述步骤6、步骤7中的轮密钥加运算具体为:
获取此轮轮密钥加运算中的2个16位待加密数据,分别将待加密数据与左轮密钥
Figure GDA0003606340310000081
和右轮密钥
Figure GDA0003606340310000082
进行按位异或运算;
所述步骤9中的P1置换操作过程如下:
将待进行P1置换的64位数据按照8×8矩阵进行排列,将每一位数据在矩阵中的位置坐标作为广义二维猫映射的输入值,经过广义二维猫映射的输出值作为新位置坐标,再进行如下操作:
第一步,将矩阵中所有原位置坐标所存的数据赋值到新位置坐标处,得到置换后的64位数据;
第二步,对置换后的64位数据进行向左循环移3位的操作;
对上述两步操作迭代M-1次,第M次时则只进行第一步操作,不进行向左循环移位操作,以第M次的新位置坐标所存数据对应在待进行P1置换的64位数据中的位数作为置换值,得到最终的置换表,在这M取16。
所述自主构造的广义二维猫映射的公式如下:
Figure GDA0003606340310000083
其中,g为广义二维猫映射控制参数,取值为每轮密钥的首3位,N为输入数据的位数,取值为8;(x0,y0)为数据在8×8矩阵中的原位置坐标,(x1,y1)为经广义二维猫映射置乱后的8×8矩阵中位置坐标,8×8矩阵的坐标范围为(0,0)到(7,7)。
矩阵形式如下:
Figure GDA0003606340310000084
算式中0≤x0≤7,0≤y0≤7,且
Figure GDA0003606340310000085
(1)当密钥的首3位为“0”时,即将广义二维猫映射的控制参数g赋“0”值,即执行下列公式:
Figure GDA0003606340310000086
重复执行上述公式M次,除最后一次不用进行向左循环移位运算,其余每次重复执行公式时均需进行一次向左循环移3位(<<<3)的操作,该动态P1置换即最终置乱后得到的表,具体元素值如表1所示:
表1 g=0时的P1置换表
Figure GDA0003606340310000091
(2)当密钥的首3位为“1”时,将广义二维猫映射的控制参数g赋“1”值,执行下列公式:
Figure GDA0003606340310000092
重复执行上述公式M次,除最后一次不用进行向左循环移位运算,其余每次重复执行公式时均需进行一次向左循环移3位(<<<3)的操作,该动态P1置换即最终置乱后得到的表,具体元素值如表2所示:
表2 g=1时的P1置换表
Figure GDA0003606340310000093
(3)当密钥的首3位为“2”时,将广义二维猫映射的控制参数g赋“2”值,执行下列公式:
Figure GDA0003606340310000094
重复执行上述公式M次,除最后一次不用进行向左循环移位运算,其余每次重复执行公式时均需进行一次向左循环移3位(<<<3)的操作,该动态P1置换即最终置乱后得到的表,具体元素值如表3所示:
表3 g=2时的P1置换表
Figure GDA0003606340310000095
(4)当密钥的首3位为“3”时,将广义二维猫映射的控制参数g赋“3”值,执行下列公式:
Figure GDA0003606340310000101
重复执行上述公式M次,除最后一次不用进行向左循环移位运算,其余每次重复执行公式时均需进行一次向左循环移3位(<<<3)的操作,该动态P1置换即最终置乱后得到的表,具体元素值如表4所示:
表4 g=3时的P1置换表
Figure GDA0003606340310000102
(5)当密钥的首3位为“4”时,将广义二维猫映射的控制参数g赋“4”值,执行下列公式:
Figure GDA0003606340310000103
重复执行上述公式M次,除最后一次不用进行向左循环移位运算,其余每次重复执行公式时均需进行一次向左循环移3位(<<<3)的操作,该动态P1置换即最终置乱后得到的表,具体元素值如表5所示:
表5 g=4时的P1置换表
Figure GDA0003606340310000104
(6)当密钥的首3位为“5”时,将广义二维猫映射的控制参数g赋“5”值,执行下列公式:
Figure GDA0003606340310000105
重复执行上述公式M次,除最后一次不用进行向左循环移位运算,其余每次重复执行公式时均需进行一次向左循环移3位(<<<3)的操作,该动态P1置换即最终置乱后得到的表,具体元素值如表6所示:
表6 g=5时的P1置换表
Figure GDA0003606340310000111
(7)当密钥的首3位为“6”时,将广义二维猫映射的控制参数g赋“6”值,执行下列公式:
Figure GDA0003606340310000112
重复执行上述公式M次,除最后一次不用进行向左循环移位运算,其余每次重复执行公式时均需进行一次向左循环移3位(<<<3)的操作,该动态P1置换即最终置乱后得到的表,具体元素值如表7所示:
表7 g=6时的P1置换表
Figure GDA0003606340310000113
(8)当密钥的首3位为“7”时,将广义二维猫映射的控制参数g赋“7”值,执行下列公式:
Figure GDA0003606340310000114
重复执行上述公式M次,除最后一次不用进行向左循环移位运算,其余每次重复执行公式时均需进行一次向左循环移3位(<<<3)的操作,该动态P1置换即最终置乱后得到的表,具体元素值如表8所示:
表8 g=7时的P1置换表
Figure GDA0003606340310000115
进一步地,对密文进行解密时,解密过程包括如下步骤:
步骤A1:将待解密数据以16位为单位依次划分为4组,得到C0||C1||C2||C3,再进行rP1置换,替换成C3||C2||C1||C0作为解密分组数据;
步骤A2:先对解密分组数据C3进行第一次轮运算获得C′3,将C′3'与解密分组数据C2进行异或操作;
在解密过程中如传统Feistel结构一样,可以高度复用加密结构进行算法解密;
步骤A3:将经过轮运算后的运算结果与解密分组数据C0进行异或运算;
步骤A4:将步骤A3获得的运算结果进行第二次轮运算;
步骤A5:获取解密时更新的轮密钥;
按照加密时第R轮至第1轮轮密钥的顺序调用轮密钥;
步骤A6:将步骤A2中的运算结果与右轮密钥
Figure GDA0003606340310000121
进行轮密钥加运算;
步骤A7:将步骤A1中解密分组数据C1与左轮密钥
Figure GDA0003606340310000122
进行轮密钥加运算;
步骤A8:将步骤A1中的解密分组数据C3、步骤A4获得的运算结果分别与步骤A7中获得的运算结果进行异或运算;
步骤A9:将步骤A3、步骤A6以及步骤A8获得的运算结果先进行一次rP1置换,再进行P1逆置换,最后进行一次rP1置换作为下一轮解密操作的输入值;
步骤A10:将步骤A9获得结果重复执行步骤A1至步骤A9,继续迭代R-1轮,第R轮迭代时,重复执行步骤A1至步骤A8后,即可得到解密结果X′,将解密结果以16位为单位依次划分为4组,表示为X′=X3||X2||X1||X0,最后经过一次rP1置换,置换成X=X0||X1||X2||X3输出结果;
所述P1逆置换与P1置换互为逆运算;
所述rP1置换是指将待进行rP1置换的数据以16位为单位依次划分为4组,表示为T=T0||T1||T2||T3,则rP1置换结果T′表示为:T′=T3||T2||T1||T0
rP1置换为线性置换,起到将4个16位的数据块进行逆序排序的作用,逆序排列不是从末位至首位排列,而是将4个T0||T1||T2||T3的分组按T3||T2||T1||T0的组合顺序重新组合。
所述P1逆置换的迭代操作中前M-1次需进行向右循环移3位操作,且利用的是广义二维猫映射的逆映射公式获得置换表;
所述步骤A3中的P1逆置换具体操作如下:
P1逆置换需按照加密时广义二维猫映射的逆映射进行置换,将每轮密钥的首3位的值作为其逆映射控制参数g值进行置换,广义二维猫映射的逆映射公式如下所示:
Figure GDA0003606340310000123
公式中,g为逆映射的控制参数,N为输入数据的位数,在该算法中N取值为8。这里与P1置换类似故不作过多描述,将待P1逆置换的数据仍按8×8矩阵排列,其中(x1,y1)为数据的原位置坐标作为逆映射的输入值,(x0,y0)为经逆映射置乱后的位置坐标,当计算x0、y0出现负数时,需将计算为负数的坐标值加上N值,再进行如下操作:
第一步,将矩阵中所有原位置坐标所存的数据赋值到新位置坐标处,得到置换后的64位数据;
第二步,对置换后的64位数据进行向右循环移3位的操作;
对上述两步操作迭代M-1次,第M次时则只进行第一步操作,不进行向右循环移位操作,以第M次的新位置坐标所存数据对应在待进行P1置换的64位数据中的位数作为置换值,得到最终的置换表,在这M取16。
(1)当密钥的首3位为“0”时,将二维猫逆映射的控制参数g赋“0”值,执行下列公式:
Figure GDA0003606340310000131
重复执行上述公式M次,除最后一次不用进行向右循环移位运算,其余每次重复执行公式时均需进行一次向右循环移3位(>>>3)的操作,该动态P1逆置换即最终置乱后得到的表,具体元素值如表9所示:
表9 g=0时的P1逆置换表
Figure GDA0003606340310000132
(2)当密钥的首3位为“1”时,将二维猫逆映射的控制参数g赋“1”值,执行下列公式:
Figure GDA0003606340310000133
重复执行上述公式M次,除最后一次不用进行向右循环移位运算,其余每次重复执行公式时均需进行一次向右循环移3位(>>>3)的操作,该动态P1逆置换即最终置乱后得到的表,具体元素值如表10所示:
表10 g=1时的P1逆置换表
Figure GDA0003606340310000141
(3)当密钥的首3位为“2”时,将二维猫逆映射的控制参数g赋“2”值,执行下列公式:
Figure GDA0003606340310000142
重复执行上述公式M次,除最后一次不用进行向右循环移位运算,其余每次重复执行公式时均需进行一次向右循环移3位(>>>3)的操作,该动态P1逆置换即最终置乱后得到的表,具体元素值如表11所示:
表11 g=2时的P1逆置换表
Figure GDA0003606340310000143
(4)当密钥的首3位为“3”时,将二维猫逆映射的控制参数g赋“3”值,执行下列公式:
Figure GDA0003606340310000144
重复执行上述公式M次,除最后一次不用进行向右循环移位运算,其余每次重复执行公式时均需进行一次向右循环移3位(>>>3)的操作,该动态P1逆置换即最终置乱后得到的表,具体元素值如表12所示:
表12 g=3时的P1逆置换表
Figure GDA0003606340310000145
(5)当密钥的首3位为“4”时,将二维猫逆映射的控制参数g赋“4”值,执行下列公式:
Figure GDA0003606340310000151
重复执行上述公式M次,除最后一次不用进行向右循环移位运算,其余每次重复执行公式时均需进行一次向右循环移3位(>>>3)的操作,该动态P1逆置换即最终置乱后得到的表,具体元素值如表13所示:
表13 g=4时的P1逆置换表
Figure GDA0003606340310000152
(6)当密钥的首3位为“5”时,即将二维猫逆映射的控制参数g赋“5”值,即执行下列公式:
Figure GDA0003606340310000153
重复执行上述公式M次,除最后一次不用进行向右循环移位运算,其余每次重复执行公式时均需进行一次向右循环移3位(>>>3)的操作,该动态P1逆置换即最终置乱后得到的表,具体元素值如表14所示:
表14 g=5时的P1逆置换表
Figure GDA0003606340310000154
(7)当密钥的首3位为“6”时,将二维猫逆映射的控制参数g赋“6”值,执行下列公式:
Figure GDA0003606340310000155
重复执行上述公式M次,除最后一次不用进行向右循环移位运算,其余每次重复执行公式时均需进行一次向右循环移3位(>>>3)的操作,该动态P1逆置换即最终置乱后得到的表,具体元素值如表15所示:
表15 g=6时的P1逆置换表
Figure GDA0003606340310000161
(8)当密钥的首3位为“7”时,将二维猫逆映射的控制参数g赋“7”值,执行下列公式:
Figure GDA0003606340310000162
重复执行上述公式M次,除最后一次不用进行向右循环移位运算,其余每次重复执行公式时均需进行一次向右循环移3位(>>>3)的操作,该动态P1逆置换即最终置乱后得到的表,具体元素值如表16所示:
表16 g=7时的P1逆置换表
Figure GDA0003606340310000163
本发明实施例还提供了一种基于广义二维猫映射的轻量级分组密码算法GCM实现装置,包括:
初始化单元:用于获取64位待加/解密数据,进行加/解密运算;
轮密钥生成单元:用于将所述初始密钥进行R轮密钥扩展运算,得到轮密钥加操作中的2个轮密钥;
加解密单元:采用上述的一种基于广义二维猫映射的轻量级分组密码算法GCM实现方法进行加解密运算;
用于加密运算时,利用轮密钥、待加密数据、轮函数运算以及P1置换先迭代R-1轮,再进行轮函数运算和轮密钥加运算得到密文;
用于解密运算时,利用轮密钥、待解密数据、rP1置换、轮函数运算以及P1逆置换先迭代R-1轮,再进行轮函数运算、轮密钥加运算和rP1置换得到明文。
本发明实施例还提供了一种计算机可读存储介质,所述存储介质包括存储的程序,所述程序适于处理器加载并执行上述的轻量级密码算法GCM实现方法。
使用本发明实施例提供的方法进行测试,算法GCM测试向量如表17所示:
表17 GCM测试数据
Figure GDA0003606340310000171
本发明所述的GCM密码在Synopsys Design Compiler Version B-2008.09上进行仿真,其中综合工艺库为SMIC0.18μm CMOS,在综合实验中,面积资源单位为GE。GCM轻量级分组密码硬件资源报告分析,加密模块算法中各个组件占用资源具体描述如下:64位明文保存在寄存器中需要344GE;96位密钥保存在寄存器中需要516GE;在轮密钥加模块中,轮密钥异或单元需要85.44GE;轮函数模块中,6个异或单元、2个与非模块、2个与模块一共需要330.88GE;5位的轮常数加需要13.35GE,密钥扩展模块中的4个异或单元需要170.88GE;控制逻辑单元共需要30GE。GCM密码硬件实现资源列表如表18所示。
表18各轻量级密码算法资源面积(GE)对比
Figure GDA0003606340310000172
本发明提供的一种基于广义二维猫映射的轻量级分组密码算法GCM实现方法,本发明使用了两个轮函数,其不同点在于F0轮函数采用与门作为非线性组件,F1轮函数采用与非门作为非线性组件,奇数轮时加密过程调用F1轮函数,偶数轮时加密过程调用F0轮函数。一方面,使用两个轮函数的算法与采用单一的轮函数算法相比较而言,其安全性更高。另一方面,在F1轮函数中,用资源面积小的与非门替代与门进行非线性组件的设计,能有效减少硬件实现资源。其次,本发明基于自主构造的广义二维猫映射设计了动态密钥相关P1置换层。将每轮密钥的首3位值作为广义二维猫映射的控制参数g值,生成了8个不同置乱效果的置换表,在加密过程中根据每轮密钥首3位的值选择其中一个表进行置换操作,从而实现线性层动态密钥相关置换效果,进一步提升算法的安全性。最后,通过与几种经典轻量级分组密码算法的硬件资源、频率以及吞吐率对比可知,如表19所示,GCM算法实现面积适中,频率以及吞吐率具有较高的性能。
表19各轻量级密码算法FPGA实现
Figure GDA0003606340310000181
应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

Claims (7)

1.一种基于广义二维猫映射的轻量级分组密码算法GCM的加密方法,其特征在于,包括如下步骤:
步骤1:将待加密的数据分成4个16位的加密分组数据X0||X1||X2||X3
步骤2:将加密分组数据X0进行第一次轮运算获得X′0,将X′0与加密分组数据X1进行异或操作作为运算结果;
步骤3:将步骤2的运算结果与加密分组数据X3进行异或运算;
步骤4:将步骤3获得的运算结果进行第二次轮运算;
步骤5:获取更新后的轮密钥;
密钥更新,并将更新后的密钥的中间32位等分成2个16位左轮密钥
Figure FDA0003609957680000011
右轮密钥
Figure FDA0003609957680000012
1≤i≤R,R表示迭代轮次,取值为27;
步骤6:将步骤2中的运算结果与左轮密钥
Figure FDA0003609957680000013
进行轮密钥加运算;
步骤7:将步骤1中分组数据X2与右轮密钥
Figure FDA0003609957680000014
进行轮密钥加运算;
步骤8:将步骤1中的分组数据X0、步骤4获得的运算结果分别与步骤7中获得的运算结果进行异或运算;
步骤9:将步骤3、步骤6以及步骤8获得的运算结果进行P1置换;
步骤10:将步骤9获得结果重复执行步骤1至步骤9,继续迭代R-1轮,第R轮迭代时,重复执行步骤1至步骤8后,输出密文;
所述密钥更新过程如下:
步骤A:若当前迭代次数不为1,则对上一次更新后的密钥进行向左循环移32位操作,进入下一步骤,否则,设置96位的初始密钥,直接进入下一步骤;
步骤B:取当前密钥的第61-65位进行轮常量加操作,将获得的结果与当前密钥的第1-60位进行合并;
步骤C:对步骤B得到的结果的前64位调用轮函数F进行更新操作,再与当前密钥的后32位密钥拼接成新的96位密钥;
所述P1置换操作过程如下:
将待进行P1置换的64位数据按照8×8矩阵进行排列,将每一位数据在矩阵中的位置坐标作为自主构造的广义二维猫映射的输入值,经过自主构造的广义二维猫映射得到新位置坐标,再进行如下操作:
第一步,将矩阵中所有原位置坐标所存的数据赋值到新位置坐标处,得到置换后的64位数据;
第二步,对置换后的64位数据进行向左循环移3位的操作;
对上述两步操作迭代M-1次,在第M次迭代时,只执行第一步操作,所得的结果即P1置换的结果;
所述自主构造的广义二维猫映射的公式如下:
Figure FDA0003609957680000021
其中,g为广义二维猫映射控制参数,取值为每轮密钥的首3位,N为输入数据的位数,取值为8;(x0,y0)为数据在8×8矩阵中的原位置坐标,(x1,y1)为经广义二维猫映射置乱后的8×8矩阵中位置坐标,8×8矩阵的坐标范围为(0,0)到(7,7)。
2.根据权利要求1所述的方法,其特征在于,奇数轮时,轮运算使用F1函数;偶数轮时,轮运算使用F0函数;
所述F0函数和F1函数均包含:并列的向左循环移0位运算、向左循环移3位运算、向左循环移1位运算,左移0位运算的结果和向左循环移3位运算的结果进行组合运算后的结果再与向左循环移1位运算的结果进行异或运算;其中,F0函数和F1函数中的组合运算分别为与运算和与非运算。
3.根据权利要求1所述的方法,其特征在于,所述密钥更新中使用的轮常量是将加密轮数作为5位的轮常量。
4.根据权利要求1所述的方法,其特征在于,所述M取值为16。
5.根据权利要求1所述的轻量级分组密码算法GCM 的加密方法,其特征在于,对密文进行解密时,解密过程包括如下步骤:
步骤A1:将待解密数据以16位为单位依次划分为4组,得到C0||C1||C2||C3,再进行rP1置换,替换成C3||C2||C1||C0作为解密分组数据;
步骤A2:先对解密分组数据C3进行第一次轮运算获得C′3,将C′3与解密分组数据C2进行异或操作作为运算结果;
步骤A3:将步骤A2的运算结果与解密分组数据C0进行异或运算;
步骤A4:将步骤A3获得的运算结果进行第二次轮运算;
步骤A5:获取解密时更新的轮密钥;
按照加密时第R轮至第1轮轮密钥的顺序调用轮密钥;
步骤A6:将步骤A2中的运算结果与右轮密钥
Figure FDA0003609957680000022
进行轮密钥加运算;
步骤A7:将步骤A1中解密分组数据C1与左轮密钥
Figure FDA0003609957680000023
进行轮密钥加运算;
步骤A8:将步骤A1中的解密分组数据C3、步骤A4获得的运算结果分别与步骤A7中获得的运算结果进行异或运算;
步骤A9:将步骤A3、步骤A6以及步骤A8获得的运算结果先进行一次rP1置换,再进行P1逆置换,最后进行一次rP1置换作为下一轮解密操作的输入值;
步骤A10:将步骤A9获得结果重复执行步骤A1至步骤A9,继续迭代R-1轮,第R轮迭代时,重复执行步骤A1至步骤A8后,即可得到解密结果X′,将解密结果以16位为单位依次划分为4组,表示为X′=X3||X2||X1||X0,最后经过一次rP1置换,置换成X=X0||X1||X2||X3输出结果;
所述P1逆置换与P1置换互为逆运算;
所述rP1置换是指将待进行rP1置换的数据以16位为单位依次划分为4组,表示为T=T0||T1||T2||T3,则rP1置换结果T′表示为:T′=T3||T2||T1||T0
6.一种基于广义二维猫映射的轻量级分组密码算法GCM加密装置,其特征在于,包括:
初始化单元:用于获取64位待加/解密数据,进行加/解密运算;
轮密钥生成单元:用于将初始密钥进行R轮密钥扩展运算,得到轮密钥加操作中的2个轮密钥;
加解密单元:采用权利要求1-5任一项所述的方法进行加解密运算;
用于加密运算时,利用轮密钥、待加密数据、轮函数运算以及P1置换先迭代R-1轮,再进行轮函数运算和轮密钥加运算得到密文;
用于解密运算时,利用轮密钥、待解密数据、rP1置换、轮函数运算以及P1逆置换先迭代R-1轮,再进行轮函数运算、轮密钥加运算和rP1置换得到明文。
7.一种计算机可读存储介质,其特征在于,所述存储介质包括存储的程序,所述程序适于处理器加载并执行权利要求1至5任一项所述的一种基于广义二维猫映射的轻量级分组密码算法GCM的加密方法。
CN202110746280.0A 2021-07-01 2021-07-01 基于广义二维猫映射的轻量级分组密码算法gcm的加密方法 Active CN113343276B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110746280.0A CN113343276B (zh) 2021-07-01 2021-07-01 基于广义二维猫映射的轻量级分组密码算法gcm的加密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110746280.0A CN113343276B (zh) 2021-07-01 2021-07-01 基于广义二维猫映射的轻量级分组密码算法gcm的加密方法

Publications (2)

Publication Number Publication Date
CN113343276A CN113343276A (zh) 2021-09-03
CN113343276B true CN113343276B (zh) 2022-06-14

Family

ID=77482095

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110746280.0A Active CN113343276B (zh) 2021-07-01 2021-07-01 基于广义二维猫映射的轻量级分组密码算法gcm的加密方法

Country Status (1)

Country Link
CN (1) CN113343276B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9828538D0 (en) * 1998-12-23 1999-02-17 Motorola Ltd Method for encrypting data
CN104333446A (zh) * 2014-11-10 2015-02-04 衡阳师范学院 一种新型超轻量级qtl分组密码实现方法
CN110572255A (zh) * 2019-09-26 2019-12-13 衡阳师范学院 轻量级分组密码算法Shadow实现方法、装置及计算机可读介质
CN111431697A (zh) * 2020-03-31 2020-07-17 衡阳师范学院 一种新型轻量级分组密码corl的实现方法
CN112287333A (zh) * 2020-11-19 2021-01-29 衡阳师范学院 一种轻量级可调分组密码实现方法、系统、电子设备以及可读存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5055993B2 (ja) * 2006-12-11 2012-10-24 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
CN106788974B (zh) * 2016-12-22 2020-04-28 深圳国微技术有限公司 掩码s盒、分组密钥计算单元、装置及对应的构造方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9828538D0 (en) * 1998-12-23 1999-02-17 Motorola Ltd Method for encrypting data
CN104333446A (zh) * 2014-11-10 2015-02-04 衡阳师范学院 一种新型超轻量级qtl分组密码实现方法
CN110572255A (zh) * 2019-09-26 2019-12-13 衡阳师范学院 轻量级分组密码算法Shadow实现方法、装置及计算机可读介质
CN111431697A (zh) * 2020-03-31 2020-07-17 衡阳师范学院 一种新型轻量级分组密码corl的实现方法
CN112287333A (zh) * 2020-11-19 2021-01-29 衡阳师范学院 一种轻量级可调分组密码实现方法、系统、电子设备以及可读存储介质

Also Published As

Publication number Publication date
CN113343276A (zh) 2021-09-03

Similar Documents

Publication Publication Date Title
US9031228B2 (en) Systems and methods for implementing block cipher algorithms on attacker-controlled systems
KR100917073B1 (ko) 암호 작성 프로세싱의 스피드를 증가시키는 방법 및 장치
US8855298B2 (en) Table lookup operation on masked data
US6879689B2 (en) Stream-cipher method and apparatus
US6314186B1 (en) Block cipher algorithm having a robust security against differential cryptanalysis, linear cryptanalysis and higher-order differential cryptanalysis
EP3468147B1 (en) Method for constructing secure hash functions from bit-mixers
KR101143041B1 (ko) 리볼빙 버퍼들을 이용한 스트림 암호 설계 방법
US20080260145A1 (en) Selection of a lookup table with data masked with a combination of an additive and multiplicative mask
CN110572255B (zh) 基于轻量级分组密码算法Shadow的加密方法、装置及计算机可读介质
US7796752B2 (en) Cipher implementation
JPWO2009075337A1 (ja) 暗号化方法及び復号化方法、装置並びにプログラム
CN110784307B (zh) 轻量级密码算法scenery实现方法、装置及存储介质
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
CN113645615B (zh) 轻量级分组密码加密及解密方法
Bouslehi et al. Innovative image encryption scheme based on a new rapid hyperchaotic system and random iterative permutation
US20020101985A1 (en) Single-cycle hardware implementation of crypto-function for high throughput crypto-processing
CN113343276B (zh) 基于广义二维猫映射的轻量级分组密码算法gcm的加密方法
US7103180B1 (en) Method of implementing the data encryption standard with reduced computation
US20240097880A1 (en) High-speed circuit combining aes and sm4 encryption and decryption
CN112134691B (zh) 一种部件可重复的nlcs分组密码实现方法、装置及介质
Abdulwahed Chaos-Based Advanced Encryption Standard
Shakiba et al. Non-isomorphic biclique cryptanalysis of full-round Crypton
Wali et al. Modified MASK algorithm for image encryption
JPH10153954A (ja) 暗号装置
TWI776474B (zh) 單回合高階加密標準電路模組

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant