CN116722967A - 一种轻量级联合编码的密码实现方法及系统 - Google Patents
一种轻量级联合编码的密码实现方法及系统 Download PDFInfo
- Publication number
- CN116722967A CN116722967A CN202310272929.9A CN202310272929A CN116722967A CN 116722967 A CN116722967 A CN 116722967A CN 202310272929 A CN202310272929 A CN 202310272929A CN 116722967 A CN116722967 A CN 116722967A
- Authority
- CN
- China
- Prior art keywords
- round
- data
- key
- bit
- result
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 61
- 230000005540 biological transmission Effects 0.000 claims abstract description 25
- 239000011159 matrix material Substances 0.000 claims description 92
- 230000008569 process Effects 0.000 claims description 24
- 239000013598 vector Substances 0.000 claims description 24
- 238000012937 correction Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 11
- 238000010276 construction Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 claims description 5
- 238000006467 substitution reaction Methods 0.000 claims description 5
- 238000009792 diffusion process Methods 0.000 abstract description 6
- 125000004122 cyclic group Chemical group 0.000 description 8
- 238000013461 design Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000007547 defect Effects 0.000 description 4
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 3
- 150000001875 compounds Chemical class 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 102100033806 Alpha-protein kinase 3 Human genes 0.000 description 2
- 101710082399 Alpha-protein kinase 3 Proteins 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Abstract
本发明公开了适用于资源受限设备的一种轻量级联合编码的密码实现方法及系统,其中,用于加密时,包括以下步骤:获取长度为L的待加密数据,并设置迭代次数为R+1轮;利用ARX型轻量级分组算法对所述待加密数据执行R轮轮运算得到初始密文,并在前R‑1轮的每轮轮运算中均扩展更新子密钥;将所述初始密文作为第R+1轮运算的输入,再对所述初始密文依次执行LDPC码编码以及密钥加运算后得到最终密文;前R轮中每一轮轮运算是依次执行轮密钥加运算、对合非线性运算、对合列混淆运算。本发明利用一种运算简单、扩散速度快的ARX型轻量级分组算法与LDPC码编码结合,有效保障资源受限设备数据传输过程中的安全性与可靠性。
Description
技术领域
本发明属于计算机加密领域,特别涉及适用于资源受限设备的一种轻量级联合编码的密码实现方法及系统。
背景技术
随着物联网(IoT)技术的发展,应用于智慧城市、智慧交通、智能家居等领域的物联网设备数量呈爆发式增长。然而,这种快速增长的连接设备和网络中无处不在的通信也对数据和隐私的安全构成了潜在的威胁。例如,可穿戴设备不分时间和地点地收集用户生理隐私数据,技术缺陷有时会导致其数据流链路缺乏控制,进而引发生理隐私数据泄露。缺乏安全和隐私保护措施将对物联网技术的可持续发展产生重大影响。因此,如何提高物联网中隐私敏感数据的传输、处理和存储的安全性,已成为亟待解决的问题。
密码技术是提高安全性的极好方法,然而物联网中边端设备计算能力、存储资源、功率消耗等极度受限,难以运行传统的密码算法,因此,给物联网的网络安全带来了极大的挑战,故本发明,致力于克服资源受限设备的影响,提供适用于物联网中资源受限设备的轻量级加解密算法,其需要在保障信息传输的安全性、可靠性的同时,还应当满足运算速度快、延迟低以及操作简单的特性。
发明内容
本发明的目的是解决资源受限设备(物联网中边端设备)信息传输的安全性和可靠性的问题,提高物联网中隐私敏感数据的传输、处理和存储的安全性,提供一种轻量级联合编码的密码实现方法及系统,其中,ARX型轻量级分组算法具备操作简单、运算速度快且延迟低的特点,将ARX型轻量级分组算法与性能优异、复杂度低的LDPC码结合,在保障资源受限设备数据传输安全性的同时提供了可靠性。
一方面,本发明提供的一种轻量级联合编码的密码实现方法,其应用于加密时,包括以下步骤:
步骤1:获取长度为L的待加密数据,并设置迭代次数为R+1轮;
步骤2:利用ARX型轻量级分组算法对所述待加密数据执行R轮轮运算得到初始密文,并在前R-1轮的每轮轮运算中均扩展更新子密钥;
其中,上一轮的轮运算结果作为下一轮轮运算中的待加密数据,且上一轮轮运算中扩展更新后的子密钥作为下一轮轮运算中参与轮密钥加运算的子密钥;
步骤3:将所述初始密文作为第R+1轮运算的输入,再对所述初始密文依次执行LDPC码编码以及密钥加运算后得到最终密文,其中,所述密钥加运算是将LDPC码编码后的结果与给定的长度为2L的密钥key2执行异或运算。
本发明技术方案提供的密码实现方法是由ARX型轻量级分组加密算法、LDPC码编码级联而成,充分利用了ARX型轻量级分组算法具备的操作简单、运算速度快的优势,同时结合一种运算量低、硬件实现容易的LDPC码编码方法,有效保障资源受限设备数据传输过程中的安全性与可靠性。即在加密过程,对得到的初始密文进行LDPC码编码操作,在保障信息传输的安全性和可靠性的同时,降低轻量级联合编码加密算法的复杂度和时延。即对应在解密过程,LDPC码译码用于纠正数据传输过程中发生的错误,具有能够逼近香农极限的优良特性,其描述简单,具有较大的灵活性和较低的差错误码特性,译码复杂度低,适合硬件实现。
进一步可选地,第R+1轮运算中所述LDPC码编码过程如下:
按照从最高有效位到最低有效位的顺序将所述初始密文划分成个数据单元;
然后,从左到右依次将所述个数据单元与8×16的生成矩阵G相乘得到的/>个1×16矩阵,所述/>个1×16矩阵是通过所述LDPC码编码得到的码字;
其中,按照如下方式计算所述生成矩阵G:先以编码率1/2为前提,初始化一个8×16的校验矩阵H;再根据公式HGT=0计算生成矩阵G;
所述校验矩阵H的左半部分是通过准循环构造法构造一个行重、列重均为2的矩阵HL,右半部分的矩阵HR则是由2个4×4的单位矩阵E与2个4×4的零矩阵组成。
应当理解,本发明技术方案不限制所述待加密数据的分组长度,其中,不同分组长度对应划分的数据单元个数不同。譬如若是分组长度L为64位,则在LDPC码编码译码过程中,以8-bit为单位划分成8个数据单元,若是L为128位,则在LDPC码编码译码过程中,以8-bit为单位划分成16个数据单元。而不论分组长度的取值,对应的生成矩阵的大小固定是8×16的,即该生成矩阵适用于不同分组长度的待加密数据。
其中,所述准循环构造法(QC-LDPC)构造一个行重、列重均为2的8×8矩阵HL包括如下步骤:
B1:给定8×8矩阵HL初始值为其中,E为矩阵HL的子单位矩阵,大小为4×4;
B2:在{0,1,2,3}元素域上随机可重复选择四个元素构造2×2矩阵
B3:矩阵HL的左上4×4单位矩阵则循环向右移动a00位,左下4×4单位矩阵则循环向右移动a10位,右上4×4单位矩阵则循环向右移动a01位,右下4×4单位矩阵则循环向右移动a11位;
B4:判断经过上一步骤运算后的矩阵HL是否存在4环,若存在,则返回步骤B2重新执行,若不存在,则该矩阵便可作为校验矩阵H的左半部分;
所述8×8矩阵HR为其中,E为矩阵HR的子单位矩阵,大小为4×4。
本发明技术方案利用准循环构造法构造了一类复杂度低、译码性能优异的校验矩阵来实现LDPC码编码译码,将ARX型轻量级分组加密算法与LDPC码编码结合,有效保障资源受限设备数据传输过程中的安全性与可靠性。
进一步可选地,步骤2中利用ARX型轻量级分组算法对所述待加密数据执行R轮轮运算时,每一轮轮运算是对待加密数据依次执行轮密钥加运算、对合非线性运算以及对合列混淆运算。
现有的ARX型轻量级分组算法,由于其非线性组件不存在逆运算,因此一般采用Feistel结构以及广义Feistel结构,否则无法完成解密工作。然而,受Feistel结构制约,现有的ARX型轻量级分组算法通常存在弱密钥,且多数ARX型轻量级分组算法初始明文和密钥注入全0/F后存在扩散缓慢的问题。本发明技术方案优选对ARX型轻量级分组算法进行优化,总体架构采用SPN结构,克服了局限于Feistel结构以及广义Feistel结构的缺陷;此外,SPN结构内部均采用对合组件(对合非线性运算、对合列混淆运算),在提高ARX型轻量级分组算法扩散效果的同时,解密时也不需要消耗过多的额外资源,逆序使用加密模块即可。
从上述可知,前R轮轮运算与第R+1轮运算的数据处理过程是不同的。
进一步可选地,所述对合非线性运算的过程如下:
将当前一轮的轮密钥加运算结果按照从最高有效位到最低有效位的顺序划分为8个分支,并表示为L0||L1||L2||L3||L4||L5||L6||L7;
将分支L0、L1、L2、L3分别与分支L6、L7、L4、L5执行异或运算得到
所述分别执行循环向左移动α位与循环向左移动β位得到
将与/>与/>分别执行按位与运算得到/>以及/>与与/>分别执行按位与非运算得到/>
再将分别与分支L1、L5执行异或运算得到δ1、δ5;以及将/>分别与分支L2、L6执行异或运算得到δ2、δ6;
将执行对合P1置换运算,其结果表示为M0||M1||M2||M3||M4||M5||M6||M7;
然后,对M0、M3、M4、M7分别执行循环向左移动α位与循环向左移动β位得到
再将与/>与/>分别执行按位与运算得到/>将/>与与/>分别执行按位与非运算得到为/>
然后将分别与M1,M5执行异或运算得到ε1、ε5;以及将/>分别与M2,M6执行异或运算得到ε2、ε6;
最后将M0、ε1、ε2、M3分别与ε6、M7、M4、ε5执行异或运算,其结果表示为
其中,为对合非线性运算结果。
本发明技术方案设计了基于按位与(&)、按位与非(~&)等ARX操作构造对合非线性层,避免了基于S盒设计相关的查找表和弱密钥,增加了对侧信道攻击的弹性。
进一步可选地,所述对合列混淆运算的过程如下:
按照从最高有效位到最低有效位的顺序,将经过对合非线性运算的数据划分成16个数据单元
将所述16个数据单元按顺序组合为4阶矩阵,再将对合列混淆矩阵与所述4阶矩阵在有限域上进行复合仿射运算,运算公式如下:
其中,Si为复合仿射运算结果,即所述对合列混淆运算的结果。譬如采用Midori算法中使用的对合列混淆矩阵。
进一步可选地,参与第一轮轮运算的子密钥是通过选取初始密钥前L位;参与第二轮至第R轮轮运算的子密钥均是各自上一轮轮运算中扩展更新得到的子密钥;
其中,给定长度为2L的初始密钥key1,且表示为k0||k1…k2L-1||k2L-1;
其中,扩展更新过程如下:
将n-bit轮常量count与当前轮轮运算的初始密钥中高n-bit k0||k1…kn-4||kn-3||kn-2||kn-1进行轮常数加运算,进而利用所述轮常数加运算的结果更新k0||k1…kn-4||kn-3||kn-2||kn-1,其中0<n<8,n∈N;
然后依据更新的k0||k1…kn-4||kn-3||kn-2||kn-1,动态从当前轮轮运算的初始密钥中选取数据得以生成长度为的x、y;其中,根据kn-4||kn-3值动态从所述初始密钥中选取数据得以生成x,根据kn-2||kn-1值动态从所述初始密钥中选取数据得以生成y;
对x||y执行F函数运算得到x||y',将y'的值替换初始密钥中y的值;其中,x||y'即为当前一轮轮运算中扩展更新的子密钥。
将替换后的初始密钥执行P2置换,运算得到的结果即为下一轮进行扩展更新运算的初始密钥。
本发明技术方案在密钥扩展环节是根据轮常量与密钥的异或情况,动态地从初始密钥中选择长度为L的数据执行轮密钥加运算,降低了连续两轮子密钥之间的关联性,增加了攻击难度系数。
其中,所述F函数运算的过程为:
对x分别执行循环向左移动α位与循环向左移动β位,进而结果表示为x<<<α、x<<<β;再对x<<<α与x<<<β执行按位与非运算,结果表示为将/>与y执行异或运算,结果表示为y';
其中,x||y'为当前一轮轮运算中扩展更新的子密钥。
譬如,若是待加密数据的长度为64-bit,设定n=5,则根据k1||k2值动态从所述初始密钥中选取数据得以生成x,根据k3||k4值动态从所述初始密钥中选取数据得以生成y时,对应的具体规则为:
当k1||k2或k3||k4为00时,选择k0||k1||…||k30||k31,当k1||k2或k3||k4为01时,选择k32||k33||…||k62||k63,当k1||k2或k3||k4为10时,选择k64||k65||…||k94||k95,当k1||k2或k3||k4为11时,选择k96||k97||…||k126||k127。
上述过程中所述P2置换运算过程如下:
先将待进行P2置换运算的初始密钥按照从最高有效位到最低有效位的顺序划分为16个单元,表示成b0||b1||b2||…||b13||b14||b15,并以4阶矩阵γ表示为:
然后,将矩阵γ的每一行都循环向左移动一个单位,得到矩阵γ':
再将矩阵γ'的转置矩阵即为最终P2置换运算结果;
第二方面,本发明提供的一种轻量级联合编码的密码实现方法,其应用于解密时,包括以下步骤:
步骤S1:将最终密文与给定的长度为2L的密钥key2执行异或运算;
步骤S2:将所述异或运算的结果划分为组,并根据公式s=HcT依次判断每一组在信道传输时是否受噪声干扰而出错,H为校验矩阵,cT表示将所述异或运算结果分组后的每一组数据的转置;
其中,当s等于零向量时,表示对应一组数据在信道传输时没有出错,进入下一步骤,当s不等于零向量时,对所述一组数据进行纠错,纠错完成后则进入下一步骤;
步骤S3:在步骤S2的运算结果中依次选取第c16i位至第c16i+7位的数据,其中,i分别取
步骤S4:基于ARX型轻量级分组算法,对步骤S3选取的长度为L的数据执行R轮解密运算得到明文;
其中,上一轮的解密运算结果作为下一轮解密运算的待解密数据。
第三方面,本发明提供的一种基于所述密码实现方法的系统,其应用于加密时,包括:
初始化设置模块,用于获取长度为L的待加密数据,并设置迭代次数为R+1轮;
轮运算模块,用于利用ARX型轻量级分组算法对所述待加密数据执行R轮轮运算得到初始密文;
密钥扩展模块,用于在前R-1轮的每轮轮运算中扩展更新子密钥;
其中,上一轮的轮运算结果作为下一轮轮运算中的待加密数据,且上一轮轮运算中扩展更新后的子密钥作为下一轮轮运算中的子密钥;
LDPC码编码模块,用于对所述初始密文依次执行LDPC码编码;
密钥加模块,用于将LDPC码编码后的结果与给定的长度为2L的密钥key2执行密钥加运算得到最终密文。
第四方面,本发明提供的一种基于所述密码实现方法的系统,其应用于解密时,包括:
密钥加模块,用于将密文与给定的长度为2L的密钥key2执行异或运算;
LDPC码译码模块,用于将所述异或运算的结果划分为组,并根据公式s=HcT依次判断每一组在信道传输时是否受噪声干扰出错,并进行纠错以及在纠错后的运算结果中依次选取第c16i位至第c16i+7位的数据,其中,i分别取/>
其中,当s等于零向量时,表示该组数据在信道传输时没有出错,进入下一步骤,当s不等于零向量时,对该组数据进行纠错,纠错完成后则进入下一步骤;
轮运算模块,用于基于ARX型轻量级分组算法,对LDPC码译码模块选取的长度为L的数据执行R轮解密运算得到明文;
其中,上一轮的解密运算结果作为下一轮解密运算的待解密数据。
第五方面,本发明提供的一种计算机可读存储介质,存储了计算机程序,所述计算机程序被处理器调用以实现:
所述一种轻量级联合编码的密码实现方法的步骤。
第六方面,本发明提供的一种电子终端,其包括:一个或多个处理器以及存储了一个或多个计算机程序的存储器;
其中,所述处理器调用所述计算机程序以实现:
所述一种轻量级联合编码的密码实现方法的步骤。
有益效果
1.本发明技术方案提供的轻量级联合编码的密码实现方法,是由ARX型轻量级分组算法和LDPC码编码级联而成,充分发挥了ARX型轻量级分组算法具备操作简单、运算速度快且延迟低的优势以及LDPC码编码的运算量低、硬件实现容易的优势,将ARX型轻量级分组算法与LDPC码结合,在保障资源受限设备数据传输安全性的同时提供了可靠性。
2.本发明优选采用准循环构造法构造了一类复杂度低、译码性能优异的校验矩阵来实现LDPC编码译码,此外,LDPC码译码用于纠正数据传输过程中发生的错误,具有能够逼近香农极限的优良特性,其描述简单,具有较大的灵活性和较低的差错误码特性,译码复杂度低,适合硬件实现。
3.本发明技术方案优选对ARX型轻量级分组算法进行优化,其总体架构是采用SPN结构,克服了ARX型轻量级分组算法设计局限于Feistel结构与广义Feistel结构的不足之处。且SPN结构内部均采用对合组件(对合非线性运算、对合列混淆运算),在提高ARX型轻量级分组算法扩散效果的同时,解密时也不需要消耗过多的额外资源,逆序使用加密模块即可。尤其是基于按位与(&)、按位与非(~&)等ARX操作构造对合非线性层时,更是可以避免了基于S盒设计相关的查找表和弱密钥,增加了对侧信道攻击的弹性。
4.本发明技术方案在密钥扩展中环节根据轮常量与密钥的异或情况,动态地从初始密钥上选取数据生成子密钥,降低了连续两轮子密钥之间的关联性,增加了攻击难度系数,提升了密码算法的安全性。
附图说明
图1是本发明所述密码实现方法的流程示意图。
具体实施方式
下面将结合实施例对本发明做进一步的说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
实施例1:
本实施例以待加密数据的长度L为64-bit为例进行说明,但其他可行的实施例中,选择其他长度的待加密数据进行加密也是能适用于本发明技术思路的。因此,本实施例提供一种轻量级联合编码的密码实现方法,包括以下步骤:
a1:获取64-bit待加密数据,确定迭代次数为R+1轮,轮数控制信号的初始值设为1。
a2:利用ARX型轻量级分组算法对所述待加密数据执行R轮轮运算得到初始密文,并在前R-1轮的每轮轮运算中均扩展更新子密钥。即判断当前轮数控制信号count是否等于轮数R,若不等于,令count=count+1,执行下一轮的轮运算;否则,进入a3步骤。
本实施例中利用ARX型轻量级分组算法对所述待加密数据执行R轮轮运算时,每一轮运算是对待加密数据依次执行轮密钥加运算、对合非线性运算、对合列混淆运算,其中,上一轮运算中对合列混淆运算后得到的结果作为下一轮运算的待加密数据,上一轮运算中扩展更新后的子密钥作为下一轮轮运算中参与轮密钥加运算的子密钥。即本实施例对ARX型轻量级分组算法进行优化,其总体架构是采用SPN结构,且SPN结构内部均采用对合组件(对合非线性运算、对合列混淆运算)。
a3:将第R轮轮运算结果作为第R+1轮运算的输入,依次执行LDPC码编码、密钥加运算后输出最终密文。其中,密钥加运算是指将LDPC码编码结果与给定的128-bit密钥key2执行异或运算,所得结果即为最终密文。
关于子密钥参与轮密钥加运算:
第1轮轮运算中的轮密钥加运算为:按照高位到低位的顺序将128-bit初始密钥key1的前64-bit与待加密数据进行第1轮的轮密钥加运算。
第2轮至第R轮轮运算中的轮密钥加运算均为:将上一轮扩展更新后的64-bit子密钥与当前一轮对应的待加密数据进行轮密钥加运算。即参与第2轮至第R轮轮运算中的子密钥是上一轮轮运算中基于密钥扩展运算规则动态获得的64-bit子密钥。其中,所述基于密钥扩展运算规则动态获得64-bit子密钥的过程为:
b1.将5-bit轮常量count与当前轮轮运算中的初始密钥中的高5-bit k0||k1||k2||k3||k4进行轮常数加运算,进而将所述轮常数加运算后的结果去更新k0||k1||k2||k3||k4。
b2.根据k1||k2值从128-bit初始密钥中动态选择32-bit得到x以及根据k3||k4值从128-bit初始密钥中动态选择32-bit得到y;
b3.对x分别执行循环向左移动α位(<<<α)与循环向左移动β位(<<<β),将结果表示为x<<<α、x<<<β;
b4.x<<<α与x<<<β执行按位与非运算,将结果表示为再将/>与y执行异或运算,结果表示为y′。将y′的值替换密钥中y的值;其中,x||y′即为当前一轮轮运算中扩展更新的子密钥;
本实施例中优选当k1||k2或k3||k4为00时,选择k0||k1||…||k30||k31,当k1||k2或k3||k4为01时,选择k32||k33||…||k62||k63,当k1||k2或k3||k4为10时,选择k64||k65||…||k94||k95,当k1||k2或k3||k4为11时,选择k96||k97||…||k126||k127。
假设执行过轮常数加运算后的k1||k2||k3||k4这4位值为0010,则k1||k2=00,k3||k4=10;根据k1||k2=00,先选择k0||k1||…||k29||k31等32-bit密钥为x,然后根据k3||k4=10,选择k64||k65||…||k94||k95等32-bit数据为y,将前后两次获得的密钥x||y参与F函数运算,具体运算流程如下:
k0||k1||…||k29||k31分别循环向左移动1位与循环向左移动3位得到k1||k2||…||k31||k0、k3||k4||…||k0||k1||k2;
将k1||k2||…||k31||k0与k3||k4||…||k0||k1||k2执行按位与非运算;
将上一步运算结果与k64||k65||…||k94||k95执行异或运算;
则k0||k1||…||k29||k31与上一步异或结果即为x||y′。
在前R轮的轮运算中,利用上述方法获取到每一轮轮运算的子密钥,进而与当前一轮的待加密数据执行轮密钥加运算,运算公式表示为:其中,statei表示待加密数据。
还需要说明的是,上述b1-b4的流程中,每一轮轮运算对应的初始密钥优选是将执行过b4步骤后的密钥再执行P2置换,运算得到的结果即为下一轮进行扩展更新运算的初始密钥。
其中,P2置换运算过程如下:
将待进行P2置换运算的128-bit密钥按照从最高有效位到最低有效位的顺序划分为16个单元,表示成b0||b1||b2||…||b13||b14||b15,并以4阶矩阵γ表示为:
将矩阵γ的每一行都循环向左移动一个字节,得到矩阵γ':
γ'矩阵的转置矩阵即为最终P2置换运算结果;
关于本实施例的对合非线性运算,其过程如下:
c1:将轮密钥加运算结果以8-bit为单位从最高有效位到最低有效位的顺序划分为8个分支,并表示为L0||L1||L2||L3||L4||L5||L6||L7。
c2:将分支L0、L1、L2、L3分别与分支L6、L7、L4、L5执行异或运算得到
c3:所述分别执行循环向左移动α位(<<<α)与循环向左移动β位(<<<β)得到/>本实施例中将α位、β位分别设置为1、3;其他可行的实施例中,根据实际需求以及效果进行调整。
c4:将与/>与/>分别执行按位与运算得到/>以及/>与/> 与/>分别执行按位与非运算得到/>
c5:将分别与分支L1、L5执行异或运算得到δ1、δ5;以及将/>分别与分支L2、L6执行异或运算得到δ2、δ6。
c6:将执行对合P1置换运算,其结果表示为M0||M1||M2||M3||M4||M5||M6||M7。
c7:M0、M3、M4、M7分别执行循环向左移动α位(<<<α)与循环向左移动β位(<<<β)得到
c8:将与/>与/>分别执行按位与运算得到/>以及将/>与/> 与/>分别执行按位与非运算得到为/>
c9:将分别与M1,M5执行异或运算得到ε1、ε5;以及将/>分别与M2,M6执行异或运算得到ε2、ε6。
c10:M0、ε1、ε2、M3分别与ε6、M7、M4、ε5执行异或运算,其结果表示为 其中,/>为对合非线性运算结果。
关于c6中的对合P1置换运算是指将第i(0≤i≤7)个分支数据移动至第P1(i)个分支:即将十进制表示的i用3位二进制b2||b1||b0表示,则中间位b1不变,b0与b2分别取反,获得将二进制/>转化成十进制的P1(i),即第i个分支数据移动至第P1(i)个分支。
如下表1所示为对合P1置换表。
表1 对合P1置换表
关于对合列混淆运算,本实施例设置的所述对合列混淆运算的过程如下:
将经过对合非线性运算的64-bit数据从最高有效位到最低有效位以半字节为单位划分成16个数据单元其中1≤i≤R;然后,将所述16个数据单元按顺序组合为4阶矩阵,再将对合列混淆矩阵/>与所述4阶矩阵在有限域上进行复合仿射运算,运算公式如下:
本实施例中采用Midori密码中硬件资源少且延迟低的对合几乎MDS矩阵M,作为对合列混淆矩阵;
关于执行LDPC码编码:本实施例设置的LDPC码编码具体是:将经过对合列混淆变换的64-bit数据从最高有效位到最低有效位以8-bit为单位划分成8个数据单元,从左到右依次将该8个数据单元与8×16的生成矩阵相乘,则得到的8个1×16矩阵就是通过LDPC码编码得到的码字。
即所述LDPC码编码是在不改变原数据单元的基础上,添加若干比特的校验位,即通过LDPC码编码得到的码字是由数据单元与生成矩阵相乘所得。其中,LDPC码编码8×16的生成矩阵构造包括如下步骤:
以编码率1/2为前提,初始化一个8×16的校验矩阵H;其中,通过准循环构造法(QC-LDPC)构造一个行重、列重均为2的8×8矩阵HL作为矩阵H的左半部分;矩阵H的右半部分则是由一个8×8矩阵HR构成(本实施例中8×8矩阵HR为其中E为HR的子单位矩阵,大小为4×4);最后根据公式HGT=0可求得生成矩阵G,其中求得的生成矩阵G并不唯一,但是数据单元与各个生成矩阵G的乘积结果是一致的,随机选取其中一个G即可。
其中,准循环构造法(QC-LDPC)构造一个行重、列重均为2的8×8矩阵HL包括如下步骤:
d1:给定8×8矩阵HL初始值为其中E为HL的子单位矩阵,大小为4×4;
d2:在{0,1,2,3}元素域上随机可重复选择四个元素构造2×2矩阵
d3:矩阵HL的左上4×4单位矩阵则循环向右移动a00位,左下4×4单位矩阵则循环向右移动a10位,右上4×4单位矩阵则循环向右移动a01位,右下4×4单位矩阵则循环向右移动a11位;其中,本实施例将a00位、a10位、a01位、a11位分别设置为0、0、1、0。
d4:判断经过上一步骤运算后的矩阵HL是否存在4环,若存在,则返回步骤d2重新执行,若不存在,则该矩阵便可作为校验矩阵H的左半部分;
上述8×8矩阵HR为其中E为HR的子单位矩阵,大小为4×4。
本实施例中选取的8×16校验矩阵H为:
本实施例中选取的8×16生成矩阵G为:
应当理解,密码算法包括加密过程和解密过程,本实施例提供的一种轻量级联合编码的密码实现方法,其应用于解密时,包括以下步骤:
步骤S1:将最终密文与给定的128-bit密钥key2执行异或运算。
步骤S2:将步骤S1中异或运算的结果以16-bit为单位划分成8组,根据公式s=HcT,依次判断每一组在信道传输时是否受噪声干扰出错,当s等于零向量时,表示该组在传输时没有出错,进入下一步骤,当s不等于零向量时,则需要对该组进行纠错,纠错完成后则进入下一步骤。
步骤S3:在步骤S2的运算结果中选取第c16i位至第c16i+7位,其中i分别取
步骤S4:基于ARX型轻量级分组算法,对步骤S3选取的长度为64-bit的数据执行R轮解密运算得到明文。即对获得的64-bit数据依次执行对合列混淆运算、对合非线性运算以及轮密钥加运算,同时加密过程的子密钥逆序用于解密过程的轮密钥加运算,对合列混淆运算,对合非线性运算的逆过程就是其本身。
其中,判断当前轮数控制信号count是否等于轮数1,若不等于,令count=count-1,以轮密钥加运算后得到的结果作为下一轮运算的待解密数据,返回S4步骤,否则,输出明文。
所述纠错方法包括如下步骤:
计算sT乘以校验矩阵H,得到一组包含16个元素的向量,该16个元素对应于信道传输的码字比特;
在上一步骤得到的向量中统计元素大于等于2的位置,并在对应的码字比特中进行反转;
计算s=HcT是否等于零向量,若是,则译码成功,若不等于零向量则重复上述步骤,直至译码成功;
若执行上述操作次数达到最大迭代次数后,则认定译码失败;
具体实施纠错时,假设正确的码字为16-bit(1,0,1,0,0,0,1,1,1,1,0,0,1,0,0,1),传输时受到干扰,使得接收到的码字变为(0,1,1,0,0,0,1,1,1,1,0,0,1,0,0,1);
计算s=HcT=(1,1,0,0,1,1,0,0),不等于零向量,需要对该组码字进行纠错;
计算sT乘以校验矩阵H,得到一组包含16个元素的向量(2,2,0,0,1,2,1,0,1,1,0,0,1,1,0,0),该16个元素对应于信道传输的码字比特;
在上一步骤得到的向量中统计元素大于等于2的位置为第1位、第2位,第6位,并在对应的码字(0,1,1,0,0,0,1,1,1,1,0,0,1,0,0,1)中将第1位、第2位、第6位进行翻转得到(1,0,1,0,0,1,1,1,1,1,0,0,1,0,0,1);
计算s=HcT=(1,0,0,0,0,1,0,0),不等于零向量,需要对该组码字进行纠错;
计算sT乘以校验矩阵H,得到一组包含16个元素的向量(1,1,0,0,0,2,0,0,1,0,0,0,0,1,0,0),该16个元素对应于信道传输的码字比特;
在上一步骤得到的向量中统计元素大于等于2的位置为第6位,并在对应的码字(1,0,1,0,0,1,1,1,1,1,0,0,1,0,0,1)中将第6位进行翻转得到(1,0,1,0,0,0,1,1,1,1,0,0,1,0,0,1);
计算s=HcT=(0,0,0,0,0,0,0,0),等于零向量,纠错成功。
需要说明的是,本发明提供的所述密码实现方法是基于操作简单、运算速度快且延迟低的ARX型轻量级分组算法先对信息明文加密,再对得到的初始密文进行LDPC码编码操作,在保障信息传输的安全性和可靠性的同时,降低轻量级联合编码加密算法的复杂度和时延。
实施例2:
本实施例提供的所述密码实现方法的系统,应用于加密时,包括:
初始化设置模块,用于获取长度为L的待加密数据,并设置迭代次数为R+1轮;
轮运算模块,用于利用ARX型轻量级分组算法对所述待加密数据执行R轮轮运算得到初始密文;
密钥扩展模块,用于在前R-1轮的每轮轮运算中扩展更新子密钥;
LDPC码编码模块,用于对所述初始密文依次执行LDPC码编码;
密钥加模块,用于将LDPC码编码后的结果与给定的长度为2L的密钥key2执行密钥加运算得到最终密文。
其他可行的方式中,应用于解密时,包括:密钥加模块,用于将密文与给定的长度为2L的密钥key2执行异或运算;
LDPC码译码模块,用于将异或运算的结果划分为组,并根据公式s=HcT依次判断每一组在信道传输时是否受噪声干扰出错,并进行纠错以及在纠错后的运算结果中依次选取第c16i位至第c16i+7位的数据,其中i分别取/>
其中,当s等于零向量时,表示对应一组在信道传输时没有出错,进入下一步骤,当s不等于零向量时,对所述一组数据进行纠错,纠错完成后则进入下一步骤;
轮运算模块,用于基于ARX型轻量级分组算法,对LDPC码译码模块选取的长度为L的数据执行R轮解密运算得到明文;
其中,上一轮的解密运算结果作为下一轮解密运算的待解密数据。
应当理解,各个模块的实现过程可以参照前述方法的内容陈述,上述功能模块的划分仅仅是一种逻辑功能的划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。同时,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
实施例3:
本实施例提供一种电子终端,其包括:
一个或多个处理器;
存储了一个或多个计算机程序的存储器;
其中,所述处理器调用所述计算机程序以实现:一种轻量级联合编码的密码实现方法的步骤。
具体的,用于对明文进行加密时,执行:
步骤1:获取长度为L的待加密数据,并设置迭代次数为R+1轮;
步骤2:利用ARX型轻量级分组算法对所述待加密数据执行R轮轮运算得到初始密文,并在前R-1轮的每轮轮运算中均扩展更新子密钥;
其中,上一轮的轮运算结果作为下一轮轮运算中的待加密数据,且上一轮轮运算中扩展更新后的子密钥作为下一轮轮运算中参与轮密钥加运算的子密钥;
步骤3:将所述初始密文作为第R+1轮运算的输入,再对所述初始密文依次执行LDPC码编码以及密钥加运算后得到最终密文,其中,所述密钥加运算是将LDPC码编码后的结果与给定的长度为2L的密钥key2执行异或运算。
用于对密文进行解密时,执行:
步骤S1:将密文与给定的长度为2L的密钥key2执行异或运算;
步骤S2:将异或运算的结果划分为组,并根据公式s=HcT依次判断每一组在信道传输时是否受噪声干扰而出错,H为校验矩阵,cT表示将所述异或运算的结果分组后的每一组数据的转置;
其中,当s等于零向量时,表示对应一组在信道传输时没有出错,进入下一步骤,当s不等于零向量时,对所述一组数据进行纠错,纠错完成后则进入下一步骤;
步骤S3:从步骤S2的运算结果中依次选取第c16i位至第c16i+7位的数据,其中i分别取
步骤S4:基于ARX型轻量级分组算法,对步骤S3选取的长度为L的数据执行R轮解密运算得到明文。
各个步骤的具体实现过程请参照前述方法的阐述。
其中,存储器可能包含高速RAM存储器,也可能还包括非易失性除颤器,例如至少一个磁盘存储器。
如果存储器、处理器独立实现,则存储器、处理器和通信接口可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构总线,外部设备互联总线或扩展工业标准体系结构总线等。所述总线可以分为地址总线、数据总线、控制总线等。
可选的,在具体实现上,如果存储器、处理器集成在一块芯片上,则存储器、处理器可以通过内部接口完成相互之间的通信。
应当理解,在本发明实施例中,所称处理器可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
实施例4:
本实施例提供一种计算机可读存储介质,其存储了计算机程序,所述计算机程序被处理器调用以实现:一种轻量级联合编码的密码实现方法的步骤。
具体的,用于对明文进行加密时,执行:
步骤1:获取长度为L的待加密数据,并设置迭代次数为R+1轮;
步骤2:利用ARX型轻量级分组算法对所述待加密数据执行R轮轮运算得到初始密文,并在前R-1轮的每轮轮运算中均扩展更新子密钥;
其中,上一轮的轮运算结果作为下一轮轮运算中的待加密数据,且上一轮轮运算中扩展更新后的子密钥作为下一轮轮运算中参与轮密钥加运算的子密钥;
步骤3:将所述初始密文作为第R+1轮运算的输入,再对所述初始密文依次执行LDPC码编码以及密钥加运算后得到最终密文,其中,所述密钥加运算是将LDPC码编码后的结果与给定的长度为2L的密钥key2执行异或运算。
用于对密文进行解密时,执行:
步骤S1:将密文与给定的长度为2L的密钥key2执行异或运算;
步骤S2:将异或运算的结果划分为组,并根据公式s=HcT依次判断每一组在信道传输时是否受噪声干扰而出错,H为校验矩阵,cT表示将所述异或运算结果分组后的每一组数据的转置;
其中,当s等于零向量时,表示对应一组在信道传输时没有出错,进入下一步骤,当s不等于零向量时,对所述一组数据进行纠错,纠错完成后则进入下一步骤;
步骤S3:从步骤S2的运算结果中依次选取第c16i位至第c16i+7位的数据,其中,i分别取
步骤S4:基于ARX型轻量级分组算法,对步骤S3选取的长度为L的数据执行R轮解密运算得到明文。
各个步骤的具体实现过程请参照前述方法的阐述。
所述可读存储介质为计算机可读存储介质,其可以是前述任一实施例所述的控制器的内部存储单元,例如控制器的硬盘或内存。所述可读存储介质也可以是所述控制器的外部存储设备,例如所述控制器上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述可读存储介质还可以既包括所述控制器的内部存储单元也包括外部存储设备。所述可读存储介质用于存储所述计算机程序以及所述控制器所需的其他程序和数据。所述可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的可读存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明提供了一种适用于资源受限设备的轻量级联合编码加密实现方法,该加密过程是由ARX型轻量级分组加密、LDPC码编码级联而成。
首先,ARX型轻量级分组加密总体架构采用SPN结构,克服了ARX型轻量级分组算法设计局限于Feistel结构与广义Feistel结构的不足之处。另一方面,ARX型轻量级分组加密过程采用对合的非线性层与线性层,在提高ARX型轻量级分组算法扩散效果的同时,解密时也不需要消耗过多的额外资源,逆序使用加密模块即可。此外,基于按位与(&)、按位与非(~&)等ARX操作构造对合非线性层,避免了基于S盒设计相关的查找表和弱密钥,增加了对侧信道攻击的弹性。密钥扩展环节根据轮常量与密钥的异或情况,动态地从128-bit密钥中选择其中64-bit执行轮密钥加运算,降低了连续两轮子密钥之间的关联性,增加了攻击难度系数。
其次,基于8×16准循环稀疏矩阵构造了一种运算量低、硬件实现容易的LDPC码编码方法。LDPC码译码用于纠正数据传输过程中发生的错误,具有能够逼近香农极限的优良特性,其描述简单,具有较大的灵活性和较低的差错误码特性,译码复杂度低,适合硬件实现。
最后,将ARX型轻量级分组加密算法与LDPC码编码结合,有效保障资源受限设备数据传输过程中的安全性与可靠性。
使用本发明实施例提供的方法进行测试,算法测试向量如表2所示:
表2 本发明所述算法测试向量
本发明所述的加密算法在ModelSim SE 6.1fEvaluation上进行逻辑验证,同时在Synopsys Design Compiler Version B-2008.09进行仿真,其中综合工艺库为SMIC0.13μmCMOS,在综合实验中,面积资源单位为1380GE。
本发明所述算法硬件资源报告分析,加密模块算法中各个组件占用资源具体描述如下:64-bit明文保存在寄存器中需要344GE;在轮密钥加模块中,轮密钥异或单元需要128GE;对合非线性运算单元需要328GE;对合列混淆运算单元需要48GE;LDPC码编码单元需要128GE;最后一轮密钥异或单元需要256GE;密钥扩展更新单元需要106GE;逻辑控制资源需要42GE;
本发明所述算法与现有一些基于SPN结构的轻量级分组密码算法进行实现面积对比分析,如表3所示。
表3轻量级分组密码算法实现面积比较
本发明基于SPN结构与Feistel结构设计了一种运算简单、扩散速度快的ARX型轻量级分组算法,同时,利用准循环矩阵构造了一种性能优异、复杂度低的LDPC码编码方法,最后将ARX型轻量级分组加密算法与LDPC码编码结合,有效保障资源受限设备数据传输过程中的安全性与可靠性。此外,最后通过与几种经典密码算法硬件资源对比可知,本发明所述算法实现面积具有一定的优势。
需要强调的是,本发明所述的实例是说明性的,而不是限定性的,因此本发明不限于具体实施方式中所述的实例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,不脱离本发明宗旨和范围的,不论是修改还是替换,同样属于本发明的保护范围。
Claims (10)
1.一种轻量级联合编码的密码实现方法,其特征在于:应用于加密时,包括以下步骤:
步骤1:获取长度为L的待加密数据,并设置迭代次数为R+1轮;
步骤2:利用ARX型轻量级分组算法对所述待加密数据执行R轮轮运算得到初始密文,并在前R-1轮的每轮轮运算中均扩展更新子密钥;
其中,上一轮的轮运算结果作为下一轮轮运算中的待加密数据,且上一轮轮运算中扩展更新后的子密钥作为下一轮轮运算中参与轮密钥加运算的子密钥;
步骤3:将所述初始密文作为第R+1轮运算的输入,再对所述初始密文依次执行LDPC码编码以及密钥加运算后得到最终密文,其中,所述密钥加运算是将LDPC码编码后的结果与给定的长度为2L的密钥key2执行异或运算。
2.根据权利要求1所述的密码实现方法,其特征在于:第R+1轮运算中所述LDPC码编码过程如下:
按照从最高有效位到最低有效位的顺序将所述初始密文划分成个数据单元;
然后,从左到右依次将所述个数据单元与8×16的生成矩阵G相乘得到的/>个1×16矩阵,所述/>个1×16矩阵是通过所述LDPC码编码得到的码字;
其中,按照如下方式计算所述生成矩阵G:先以编码率1/2为前提,初始化一个8×16的校验矩阵H;再根据公式HGT=0计算生成矩阵G;
所述校验矩阵H的左半部分是通过准循环构造法构造一个行重、列重均为2的矩阵HL,右半部分的矩阵HR则是由2个4×4的单位矩阵E与2个4×4的零矩阵组成。
3.根据权利要求1所述的密码实现方法,其特征在于:步骤2中利用ARX型轻量级分组算法对所述待加密数据执行R轮轮运算时,每一轮轮运算是对待加密数据依次执行轮密钥加运算、对合非线性运算以及对合列混淆运算。
4.根据权利要求3所述的密码实现方法,其特征在于:所述对合非线性运算的过程如下:
将当前一轮的轮密钥加运算结果按照有效位从高至低的顺序划分为8个分支,并表示为L0||L1||L2||L3||L4||L5||L6||L7;
将分支L0、L1、L2、L3分别与分支L6、L7、L4、L5执行异或运算得到
所述分别执行循环向左移动α位与循环向左移动β位得到/>
将与/>与/>分别执行按位与运算得到/>以及/>与与/>分别执行按位与非运算得到/>
再将分别与分支L1、L5执行异或运算得到δ1、δ5;以及将/>分别与分支L2、L6执行异或运算得到δ2、δ6;
将执行对合P1置换运算,其结果表示为M0||M1||M2||M3||M4||M5||M6||M7;
然后,对M0、M3、M4、M7分别执行循环向左移动α位与循环向左移动β位得到
再将与/>与/>分别执行按位与运算得到/>将/>与与/>分别执行按位与非运算得到为/>
然后将分别与M1,M5执行异或运算得到ε1、ε5;以及将/>分别与M2,M6执行异或运算得到ε2、ε6;
最后将M0、ε1、ε2、M3分别与ε6、M7、M4、ε5执行异或运算,其结果表示为
其中,为对合非线性运算结果。
5.根据权利要求1所述的密码实现方法,其特征在于:参与第一轮轮运算的子密钥是通过选取第一轮轮运算的初始密钥上前L位;参与第二轮至第R轮轮运算的子密钥均是各自上一轮轮运算中扩展更新得到的子密钥;
其中,给定长度为2L的初始密钥key1,且表示为k0||k1…k2L-1||k2L-1;
其中,扩展更新过程如下:
将n-bit轮常量count与当前轮轮运算的初始密钥中高n-bit k0||k1…kn-4||kn-3||kn-2||kn-1进行轮常数加运算,进而利用所述轮常数加运算的结果更新k0||k1…kn-4||kn-3||kn-2||kn-1,其中0<n<8,n∈Ν;
然后依据更新的k0||k1…kn-4||kn-3||kn-2||kn-1,动态从当前轮轮运算的初始密钥中选取数据得以生成长度为的x、y;其中,根据kn-4||kn-3值动态从所述初始密钥中选取数据得以生成x,根据kn-2||kn-1值动态从所述初始密钥中选取数据得以生成y;
对x||y执行F函数运算得到x||y′,将y′的值替换初始密钥中y的值;其中,x||y′即为当前轮轮运算中扩展更新的子密钥;
将替换后的初始密钥执行P2置换,运算得到的结果即为下一轮进行扩展更新运算的初始密钥。
6.一种轻量级联合编码的密码实现方法,其特征在于:应用于解密时,包括以下步骤:
步骤S1:将最终密文与给定长度为2L的密钥key2执行异或运算;
步骤S2:将异或运算的结果划分为组,并根据公式s=HcT依次判断每一组在信道传输时是否受噪声干扰而出错,H为校验矩阵,cT表示将所述异或运算结果分组后的每一组数据的转置;
其中,当s等于零向量时,表示对应一组数据在信道传输时没有出错,进入下一步骤,当s不等于零向量时,对所述一组数据进行纠错,纠错完成后则进入下一步骤;
步骤S3:从步骤S2的运算结果中依次选取第c16i位至第c16i+7位的数据,其中,i分别取
步骤S4:基于ARX型轻量级分组算法,对步骤S3选取的长度为L的数据执行R轮解密运算得到明文;
其中,上一轮的解密运算结果作为下一轮解密运算的待解密数据。
7.一种基于权利要求1所述的密码实现方法的系统,其特征在于:应用于加密时,包括:
初始化设置模块,用于获取长度为L的待加密数据,并设置迭代次数为R+1轮;
轮运算模块,用于利用ARX型轻量级分组算法对所述待加密数据执行R轮轮运算得到初始密文;
密钥扩展模块,用于在前R-1轮的每轮轮运算中扩展更新子密钥;
其中,上一轮的轮运算结果作为下一轮轮运算中的待加密数据,且上一轮轮运算中扩展更新后的子密钥作为下一轮轮运算中参与轮密钥加运算的子密钥;
LDPC码编码模块,用于对所述初始密文依次执行LDPC码编码;
密钥加模块,用于将LDPC码编码后的结果与给定的长度为2L的密钥key2执行密钥加运算得到最终密文。
8.一种基于权利要求6所述的密码实现方法的系统,其特征在于:应用于解密时,包括:
密钥加模块,用于将最终密文与给定的长度为2L的密钥key2执行异或运算;
LDPC码译码模块,用于将异或运算的结果划分为组,并根据公式s=HcT依次判断每一组在信道传输时是否受噪声干扰出错,并进行纠错以及在纠错后的运算结果中依次选取第c16i位至第c16i+7位的数据,其中,i分别取0,1,…,/>
其中,当s等于零向量时,表示对应一组数据在信道传输时没有出错,进入下一步骤,当s不等于零向量时,对所述一组数据进行纠错,纠错完成后则进入下一步骤;
轮运算模块,用于基于ARX型轻量级分组算法,对LDPC码译码模块选取的长度为L的数据执行R轮解密运算得到明文;
其中,上一轮的解密运算结果作为下一轮解密运算的待解密数据。
9.一种计算机可读存储介质,其特征在于:存储了计算机程序,所述计算机程序被处理器调用以实现:
权利要求1-6任一项所述一种轻量级联合编码的密码实现方法的步骤。
10.一种电子终端,其特征在于:包括:
一个或多个处理器;
存储了一个或多个计算机程序的存储器;
其中,所述处理器调用所述计算机程序以实现:
权利要求1-6任一项所述一种轻量级联合编码的密码实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310272929.9A CN116722967A (zh) | 2023-03-20 | 2023-03-20 | 一种轻量级联合编码的密码实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310272929.9A CN116722967A (zh) | 2023-03-20 | 2023-03-20 | 一种轻量级联合编码的密码实现方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116722967A true CN116722967A (zh) | 2023-09-08 |
Family
ID=87868538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310272929.9A Pending CN116722967A (zh) | 2023-03-20 | 2023-03-20 | 一种轻量级联合编码的密码实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116722967A (zh) |
-
2023
- 2023-03-20 CN CN202310272929.9A patent/CN116722967A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11822901B2 (en) | Cryptography using a cryptographic state | |
US8855298B2 (en) | Table lookup operation on masked data | |
US6314186B1 (en) | Block cipher algorithm having a robust security against differential cryptanalysis, linear cryptanalysis and higher-order differential cryptanalysis | |
US8787563B2 (en) | Data converter, data conversion method and program | |
US8625781B2 (en) | Encrypton processor | |
CA2302784A1 (en) | Improved block cipher method | |
JP2008516296A (ja) | 擬群を用いる、暗号法の基本要素、エラーコーディング、及び擬似ランダム数改善方法 | |
CN109768854B (zh) | 一种轻量级分组密码算法的实现方法 | |
JPWO2004001701A1 (ja) | 符号演算装置 | |
Halevi et al. | The Hash Function" Fugue" | |
Küçük | The hash function Hamsi | |
MX2011001228A (es) | Metodo para generar un codigo de autenticacion de mensajes basados en el cifrado. | |
CN113645615B (zh) | 轻量级分组密码加密及解密方法 | |
KR20050078271A (ko) | 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법 | |
CN109327276B (zh) | 安全编码方法、解码方法及设备 | |
US7103180B1 (en) | Method of implementing the data encryption standard with reduced computation | |
WO1999014889A1 (en) | Improved block cipher method | |
CN116722967A (zh) | 一种轻量级联合编码的密码实现方法及系统 | |
Heys | A tutorial on the implementation of block ciphers: software and hardware applications | |
CN112287333B (zh) | 一种轻量级可调分组密码实现方法、系统、电子设备以及可读存储介质 | |
CN110247754B (zh) | 一种分组密码fbc的实现方法及装置 | |
CN113343276B (zh) | 基于广义二维猫映射的轻量级分组密码算法gcm的加密方法 | |
CN112054808B (zh) | Polar码的编码方法及装置 | |
RU2140716C1 (ru) | Способ криптографического преобразования блоков цифровых данных | |
CN116743353A (zh) | 一种新型flm结构的分组密码算法实现方法及系统 |
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 |