CN108206736B - 一种轻量级密码算法HBcipher实现方法与装置 - Google Patents
一种轻量级密码算法HBcipher实现方法与装置 Download PDFInfo
- Publication number
- CN108206736B CN108206736B CN201810025266.XA CN201810025266A CN108206736B CN 108206736 B CN108206736 B CN 108206736B CN 201810025266 A CN201810025266 A CN 201810025266A CN 108206736 B CN108206736 B CN 108206736B
- Authority
- CN
- China
- Prior art keywords
- key
- matrix
- data
- wheel
- function
- 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
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种轻量级密码算法HBcipher实现方法与装置,该方法在加密或解密过程中所使用的轮函数采用三组SPN结构的F函数,且在轮函数中提出一种新的P2置换方式。通过选取轮常数count作为轮运算控制信号,根据count的奇偶性设计两种不同的运算方式;算法通过Xilinx ISE Design Suite 13.2硬件实现时,HBcipher‑64的吞吐率为511.38Mbps,HBcipher‑128的吞吐率为716.6848Mbps,相较于目前轻量级密码算法,加密效率较高。
Description
技术领域
本发明属于计算机加密领域,特别涉及一种轻量级密码算法HBcipher实现方法与装置
背景技术
目前,智能卡的应用非常广泛,涉及到人们生活的各个方面,因而其安全是大家非常关心的问题。然而智能卡设备因其本身资源受限、计算能力较弱、存储空间和能量来源不足等问题,传统的加密算法并不适合应用到资源受限的智能卡上,因此引发人们对轻量级密码的大量研究,这些研究主要侧重于轻量级密码的设计、安全性分析和实现性能评估。
数据加密作为一项基本技术是所有通信安全的基石,它是由加密算法来具体实施,以很小的代价提供很大的安全保护。而分组密码算法执行速度快,很适合硬件实现,在通信安全领域的使用率最高。由于分组密码出现较早,各项技术成熟,为轻量级分组密码的研究提供了基础。
迄今为止,在轻量级分组密码算法领域中,已经出现了一些典型轻量级密码代表如:PRESENT,LBlock,RECTANGLE等。
目前,轻量级密码算法还存在以下几个问题:(1)在有限的环境计算资源下,无法找到安全性与执行效率的最佳平衡点。一些轻量级密码算法为了追求更小的资源面积实现,将运算模块简单化,这样算法就不能抵抗功耗攻击和多种攻击技术相结合的旁路攻击方法。(2)
现有轻量级密码算法多采用固定部件,不能充分抵抗已知(或未知)的攻击方法。(3)目前两种典型密码结构Feistel和SPN:Feistel结构加解密相似,消耗硬件资源较少,但该结构扩算速度慢,一轮迭代运算只能改变一半分组数据。SPN结构加解密不相似,加密模块和解密模块一起实现时,实现资源较多。(4)在受限设备条件下不能对大量的数据进行加密。
发明内容
本发明提供了一种轻量级密码算法HBcipher实现方法与装置,其目的在于,解决受限设备条件下不能对大量数据加密的问题。
一种轻量级密码算法HBcipher实现方法,包括以下步骤:
步骤1:获取待加密的明文,并依据密钥位数确定轮数r,轮数控制信号的初始值为1;
其中,所述待加密的明文按高位到低位、从左至右的顺序排列成8×8的明文矩阵;
步骤2:依据当前轮数控制信号count,对待加密的数据矩阵进行矩阵划分,获得数据块L和数据块R;
若当前轮数控制信号count为奇数,则将待加密的数据矩阵的左半部分和右半部分分别作为数据块L和数据块R;
其中,数据块的每一行由对应矩阵部分的连续两行按照从高位至低位排列获得;
若当前轮数控制信号count为偶数,则将待加密的数据矩阵的上半部分和下半部分分别作为数据块L和数据块R;
步骤3:将密钥按照从高位到低位、从左至右,每行16位排列,得到轮密钥矩阵,将轮密钥矩阵的左半部分和右半部分分别作为左控制密钥Qi和右控制密钥Qi+1;
步骤4:依据当前轮数控制信号,将数据块与控制密钥进行轮函数操作;
当轮运算控制信号count为奇数时,左控制密钥Qi与数据块L进行F1函数、右控制密钥Qi+1与数据块R进行F2函数运算;
当轮运算控制信号count为偶数时,右控制密钥Qi+1与数据块L进行F1函数、左控制密钥Qi与数据块R进行F2函数运算;
将经过F1函数、F2函数运算后的数据转换成16进制数据后合并,再进行F3函数运算;
所述F1函数依次包括轮密钥加、S1盒置换、行移位运算;
所述F2函数依次包括轮密钥加、S2盒置换、轮常数加运算;
所述F3函数依次包括列混淆和P2置换运算;
步骤5:判断当前轮数控制信号count是否等于轮数r,若不等于,令count=count+1,将经过F3函数运算输出的结果作为新一轮的待加密数据,返回步骤2,否则,输出加密结果。
进一步地,所述F3函数中的P2置换运算过程如下:
将待进行P2置换的4×16数据矩阵按照从左至右的顺序划分成顺序连接的4个4×4的矩阵,并从左至右标记4个矩阵的对角线,依次为a、b、c、d,相邻矩阵的对角线首尾连接,得到依次画出4个矩阵的对角线标号a、b、c、d,获得8个等边三角形,其中a、c为从左上角到右下角的主对角线,b、d为从左下角到右上角的次对角线;
将对角线a、b、d上方的三角形中的数据沿对角线向下翻折变换;
将对角线b下方和对角线c上方的三角形中的数据,沿矩形边向右翻折变换;
将对角线c下方的三角形中的数据,沿对角线向上翻折变换;
将对角线a、d下方的三角形中的数据分别沿顺时针、逆时针旋转90°变换,其中,对角线d下方的三角形经过逆时针旋转变换后移至第一个4×4的矩阵所在的区域;
次对角线b、d经过的数据沿逆时针旋转90°变换;
主对角线a、c经过的数据沿顺时针旋转90°变换,其中,主对角线a经过的数据经过顺时针旋转变换后移至最后一个4×4的矩阵所在的区域。
进一步地,当密钥长度为64位时,轮数r为16;当密钥长度为128位时,轮数r为20。
进一步地,所述左控制密钥Qi和右控制密钥Qi+1在每一轮的运算中按照以下过程获取:
当密钥长度为64位时,具体过程如下:
步骤A1:将64位轮密钥K{K1、K2······K64}用4×16矩阵表示,第一轮的轮密钥为初始密钥;
步骤A2:将步骤A1得到的矩阵中的每一列作为一个分组,得到16个4位分组B0{K1,K17,K33,K49},...,B15{K16,K32,K48,K64};
步骤A3:将步骤A2得到的第一个和最后一个分组B0、B15分别进行S1盒替换得到B0’、B15’;
步骤A4:将{B0’,B1,B2·····B15’}进行位排列P1置换;
步骤A5:将步骤A4得到的结果进行行移位运算获得更新后轮密钥矩阵;
步骤A6:将更新得到的轮密钥矩阵进行左右划分,得到两个4×8的矩形块,作为新一轮的左控制密钥Qi和右控制密钥Qi+1;
所述位排列P1置换是指将第i组数据移动至P1(i)列:
经过P1置换后的数据第一行循环向左移动7位,第二行循环向左移动9位,第三行循环向左移动11位,第四行循环向左移动13位。
当密钥长度为128位时,具体过程如下:
步骤B1:将128位轮密钥K{K1,K2······K128}用8×16的矩形表示,第一轮的轮密钥为初始密钥;
步骤B2:将步骤A1得到的矩阵中的每一列作为一个分组,得到16个8位分组B0{K1,K17,K33,K49,K65,K81,K97,K113},...,B15{K16,K32,K48,K64,K80,K96,K112,K128};
步骤B3:将步骤A2得到的第一个和最后一个分组B0、B15分别进行S1盒替换得到B0’、B15’;
步骤B4:将{B0’,B1,B2·····B15’}作为中间密钥矩阵进行移位运算得到更新后轮密钥矩阵;
将中间密钥矩阵的第二行循环左移3位并整体上移到第一行的位置,第三行循环左移5位并整体上移到第二行的位置,第四行循环左移7位并整体上移到第三行的位置,第五行循环左移9位并整体上移到第四行的位置,第六行循环左移11位并整体上移到第五行的位置,第七行循环左移13位并整体上移到第六行的位置,第八行循环左移15位并整体上移到第七行的位置,第一行循环左移1位整体下移到第八行的位置;
步骤B5:从更新后轮密钥矩阵中选取前四行作为控制密钥矩阵;
步骤B6:将步骤B5获得的控制密钥矩阵进行左右划分,得到两个4×8的矩形块,作为新一轮的左控制密钥Qi和右控制密钥Qi+1。
进一步地,在对密文进行解密时,先将密文进行P2逆置换,再进行逆列混淆,将经过逆列混淆后得到的结果高32位、低32位分别进行F1函数逆运算、F2函数逆运算,将经过F1函数逆运算、F2函数逆运算得到的结果进行合并,r轮迭代得到解密后的明文;
在轮密钥加逆变换运算中和加密过程一样依据当前轮数控制信号count'确定每一轮使用的控制密钥;
所述F1函数逆运算依次为逆行移位、S1-1盒置换、轮密钥加逆变换;
所述F2函数逆运算依次为轮常数加逆运算、S2-1盒置换、轮密钥加逆变换;
所述P2逆置换、逆列混淆与加密过程中的P2置换、列混淆运算互逆,所述F1函数逆运算中的逆行移位、S1-1盒置换、轮密钥加逆变换分别与F1函数运算中的行移位、S1盒置换、轮密钥加运算互逆,所述F2函数逆运算中的轮常数加逆运算、S2-1盒置换、轮密钥加逆变换分别与F2函数运算中的轮密钥加、S2盒置换、轮常数加运算互逆。
进一步地,所述列混淆和逆列混淆分别采用如下矩阵实现:
列混淆:逆列混淆:
一种轻量级密码算法HBcipher实现装置,包括:
初始化单元:获取待加密的明文,并依据密钥位数确定轮数r,轮数控制信号的初始值为1;
其中,所述待加密的明文按高位到低位、从左至右的顺序排列成8×8的明文矩阵;
数据拆分单元:依据当前轮数控制信号count,对待加密的数据矩阵进行矩阵划分,获得数据块L和数据块R;
若当前轮数控制信号count为奇数,则将待加密的数据矩阵的左半部分和右半部分分别作为数据块L和数据块R;
其中,数据块的每一行由对应矩阵部分的连续两行按照从高位至低位排列获得;
若当前轮数控制信号count为偶数,则将待加密的数据矩阵的上半部分和下半部分分别作为数据块L和数据块R;
控制密钥选取单元:将密钥按照从高位到低位、从左至右,每行16位排列,得到轮密钥矩阵,将轮密钥矩阵的左半部分和右半部分分别作为左控制密钥Qi和右控制密钥Qi+1;
轮函数迭代单元:依据当前轮数控制信号,采用上述的方法将数据块与控制密钥进行轮函数操作;
判断当前轮数控制信号count是否等于轮数r,若不等于,令count=count+1,将经过F3函数运算输出的结果作为新一轮的待加密数据,重新进行数据拆分和选取控制密钥后,再进行轮函数迭代,否则,输出加密结果。
进一步地,还包括解密单元,所述解密单元采用上述的方法对输入的密文进行解密,得到解密数据。
有益效果
本发明提供了一种轻量级密码算法HBcipher实现方法与装置,该方法设计了一种新的加密模式,待加密/解密数据和密钥都是采用矩阵设计,是非常硬件友好的,HBcipher算法的设计允许非常高效和灵活的硬件实现。
HBcipher算法选取轮常数count作为轮运算控制信号,同时针对待运算数据矩阵设计两种不同的运算方法,算法具体实施过程根据轮运算控制信号的奇偶性选择其中一种运算方法,该方式有利于增强算法混淆度,从而大大提高了算法的安全性。HBcipher算法轮函数中新提出一种新的P2置换方式,实验结果表明单独将P2置换代换到Present算法中,每一轮约改变7个字节,混淆度大大超过了原Present算法,相较于目前的轻量级密码,其加密性能更高,能够抵抗已知攻击。
此外,HBcipher算法采用三组SPN结构的F函数,其中F函数由F1、F2、F3函数组成,F1函数与F2函数并行运算,二者运算得到的结果转换成16进制{S1…S16}表示的4×4矩阵进行F3函数运算,这种算法设计使得较简单的受密钥控制的密码变换达到更好的扩散和混淆的效果,并且通过Xilinx ISE Design Suite 13.2硬件实现时,HBcipher-64的吞吐率为511.38Mbps,HBcipher-128的吞吐率为716.6848Mbps,超过目前大多数轻量级密码算法,如MIBS,Led等,相较于目前轻量级密码算法,在相同受限设备下,HBcipher算法能对更多的数据加密。
附图说明
图1为本发明所述的加密过程示意图;
图2为本发明所述的解密过程示意图;
图3为本发明所述的64位密钥更新系统结构图;
图4为本发明所述的128位密钥更新系统结构图;
图5为本发明所述的P2置换流程图;
图6为本发明所述的P2逆置换流程图;
图7为本发明所述F1中行移位示意图;
图8为本发明所述F1逆变换中逆行移位示意图;
图9为本发明所述奇数轮时待加密数据分块原则示意图;
图10为本发明所述偶数轮时待加密数据分块原则示意图;
图11为图5的示例;
图12为图6的示例。
具体实施方式
下面将结合附图和实施例对本发明做进一步地说明。
一种轻量级密码算法HBcipher实现方法,HBcipher分组长度为64位,当密钥长度为64位时,迭代轮数为16轮,记为HBcipher-64,当密钥长度为128位时,迭代轮数为20轮,记为HBcipher-128。HBcipher算法待运算数据采用硬件友好的矩阵设计,且轮函数采用3组SPN结构的F函数,其中F函数由F1、F2、F3函数组成,F1函数与F2函数并行运算,二者运算得到的结果进行F3函数运算。
HBcipher轮运算包括3组F函数,以下对这3组F函数各个模块进行详细描述。
F1函数包含轮密钥加、S1盒替换和行移位,F2函数包含轮密钥加、S2盒替换和轮常数加,F3函数包含列混淆、P2置换。
以HBcipher-64为例,算法加密流程图如图1所示。HBcipher-64密码算法加密描述如下算法1所示。
HBcipher-64密码算法加密伪代码描述:
算法1:HBcipher-64加密过程
输入:Plaintext(64),Key(64)
输出:Ciphertext(64)
返回Ciphertext(64)
轮密钥加:参与轮密钥加运算的4×16矩阵分块左右8列分成两个4×8矩阵Qi、Qi+1。
奇数轮时,数据块L与Qi异或、数据块R与Qi+1异或;
偶数轮时,数据块L与Qi+1异或、数据块R与Qi异或;
以HBcipher-64为例,公式如下:
奇数轮:(L(32),R(32))←(L(32)⊕Qi,R(32)⊕Qi+1)(1≤i≤32);
偶数轮:(L(32),R(32))←(L(32)⊕Qi+1,R(32)⊕Qi)(1≤i≤32);
S盒替换:在HBcipher算法中,有两个不同的S盒替换运算,分别是S1盒替换和S2盒替换。
S1盒引用LBLOCK密码算法的S0盒,主要用于F1函数变换和密钥更新模块中,S1盒元素如表1所示。
S2盒引用PRESENT算法加密的S盒,主要用于F2函数变换,S2盒元素如表2所示。
F1函数和F2函数中S盒替换变换:将进行S盒变换的4×8的32位数据以列为标准划分为8个4位,记作C0,C1,C2,C3,C4,C5,C6,C7,替换得到D0,D1,D2,D3,D4,D5,D6,D7;
密钥更新模块中S盒替换变换:4×16的密钥矩形分块第一列和最后一列分别记作B0、B15,替换得到B0’、B15’;如公式所示。
有限域S:F2 4→F2 4:Cj→Dj=S(Cj)0≤j≤7
B0→B0’=S1(B0),B15→B15’=S1(B15)
表1HBcipher算法S1盒元素
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
S1[x] | E | 9 | F | 0 | D | 4 | A | B | 1 | 2 | 8 | 3 | 7 | 6 | C | 5 |
表2HBcipher算法S2盒元素
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
S2[x] | C | 5 | 6 | B | 9 | 0 | A | D | 3 | E | F | 8 | 4 | 7 | 1 | 2 |
行移位变换:对于4×8的矩阵,矩阵每一行左循环不同的单元移量,第一行单元移量循环左移3个单元,第二行单元移量循环左移5个单元,第三行单元移量循环左移6个单元,第四行单元移量循环左移7个单元,行移位变换运算关系如图7所示。
常数加:为了促进算法安全与减少算法寄存器,在保证算法安全方面中,主要是防御滑动攻击等一些攻击方法,设计算法的轮常数,选择轮数作为算法的轮常数。以HBcipher-64为例,表示公式如下:
State1→State1⊕count 1≤count≤16
State1表示的是4×8矩形分块R的第一行。
列混淆变换:采用Surge算法中的硬件实现友好型列混淆变换矩阵T。
P2置换:进行过列混淆的4×16的状态矩阵可划分成4个4×4的矩阵,依次画出4个矩阵的对角线标号a、b、c、d,其中a、c为主对角线,b、d为次对角线,划分出8个等边三角形,移位变换时,三角形(1)对称映射到三角形(2)的位置,原三角形(2)则顺时针旋转90度到三角形(3)位置,原三角形(3)对称映射到三角形(4)的位置,原三角形(4)对称映射到三角形(5)的位置,原三角形(5)对称映射到三角形(6)的位置,原三角形(6)对称映射到三角形(7)的位置,原三角形(7)对称映射到三角形(8)的位置,原三角形(8)逆时针旋转90度到三角形(1)的位置,在上述变换中,主次对角线经过的元素不随之改变,而是以如下方式变换:主对角线a经过的元素循环左移到次对角线d上,次对角线b经过的元素则循环左移到原主对角线a的位置,同理,主对角线c经过的元素循环左移到原次对角线b的位置,次对角线d经过的元素循环左移到原主对角线c的位置,置换流程如图5所示,4×16的状态矩阵经过上述P2置换后的扩散效果如图11所示;
密钥更新:
当密钥长度为64位时,4×16的矩形密钥分块第一列B0和最后一列B15进行S1盒置换得到B0’、B15’,然后将矩阵{B0’、B1、B2·····B15’}以列数的下标为单位进行位排列P1置换,即第i列数据经过P1置换后移动到P1(i)列,P1置换表元素如表3,公式如下所示,经过P1置换后的数据第一行循环向左移动7位,第二行循环向左移动9位,第三行循环向左移动11位,第四行循环向左移动13位。
HBcipher-64密钥更新系统结构如图3所示。
表3HBcipher-64算法P1置换表
i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
P(i) | 0 | 4 | 8 | C | 1 | 5 | 9 | D | 2 | 6 | A | E | 3 | 7 | B | F |
当密钥长度为128位时,第二行循环左移3位并整体上移到第一行的位置,第三行循环左移5位并整体上移到第二行的位置,第四行循环左移7位并整体上移到第三行的位置,第五行循环左移9位并整体上移到第四行的位置,第六行循环左移11位并整体上移到第五行的位置,第七行循环左移13位并整体上移到第六行的位置,第八行循环左移15位并整体上移到第七行的位置,第一行循环左移1位整体下移到第八行的位置,整体流程如图4所示。
以HBcipher-64为例,算法解密流程图如图2所示。HBcipher-64密码算法解密伪代码描述如下算法2所示。
算法2:HBcipher-64密码解密过程
输入:Ciphertext(64),Key(64)
输出:Plaintext(64)
返回Plaintext(64)
S盒替换逆运算:HBcipher算法解密过程,解密的S1-1盒元素如表4,S2-1盒元素如表5。
表4HBcipher算法S1-1盒元素
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
S1<sup>-1</sup>[x] | 3 | 8 | 9 | B | 5 | F | D | C | A | 1 | 6 | 7 | E | 4 | 0 | 2 |
表5HBcipher算法S2-1盒元素
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
S2<sup>-1</sup>[x] | 5 | E | F | 8 | C | 1 | 2 | D | B | 4 | 6 | 3 | 0 | 7 | 9 | A |
逆行移位变换:对于4×8矩阵,矩阵的每一行右循环不同的单元移量,第一行循环右移3个单元,第二行循环右移5个单元,第三行循环右移6个单元,第四行单元循环右移7个单元,行移位逆变换运算关系如图8所示。
逆列混淆变换:列混合矩阵为逆矩阵T-1:
P2逆置换:4×16状态矩阵由4个4×4的矩阵组成,依次画出4个矩阵的对角线,标号a、b、c、d,其中a、c为主对角线,b、d为次对角线,划分出8个等边三角形,移位变换时,三角形(8)对称映射到三角形(7)的位置,原三角形(7)则对称映射到三角形(6)位置,原三角形(6)对称映射到三角形(5)位置,原三角形(5)对称映射到三角形(4)位置,原三角形(4)则对称映射到三角形(3)位置,原三角形(3)逆时针旋转90度到三角形(2)的位置,原三角形(2)对称映射到三角形(1)的位置,原三角形(1)逆时针旋转90度对称到三角形(8)的位置,在上述变换中,主次对角线经过的元素不随之改变,而是以如下方式变换:次对角线d经过的元素循环右移到主对角线a上,主对角线c经过的元素循环右移到原主对角线d的位置,同理,次对角线b经过的元素循环右移到原主对角线c的位置,主对角线a经过的元素循环右移原次对角线b的位置,整体流程如图6所示;4×16的状态矩阵经过上述P2逆置换后的扩散效果如图12所示;
HBcipher算法测试向量如表6、表7所示:
表6 HBcipher-64测试数据
Plaintext | Key | Ciphertext |
0000_0000_0000_0000 | 0000_0000_0000_0000 | C191_75FE_C220_1881 |
FFFF_FFFF_FFFF_FFFF | FFFF_FFFF_FFFF_FFFF | B1B7_DEF9_656F_A976 |
0000_0000_0000_0000 | FFFF_FFFF_FFFF_FFFF | 80D8_6236_E95D_BF92 |
0123_4567_89AB_CDEF | 0123_4567_89AB_CDEF | 6944_BD08_387D_BBDD |
表7 HBcipher-128测试数据
本发明所述的HBcipher算法在Xilinx ISE Design Suit 13.2上进行FPGA硬件实现,HBcipher-64算法所占用的资源面积为15369 Slices,时钟周期是7.822ns,时钟频率是127.845MHz,吞吐率是511.38Mbps;HBcipher-128算法所占用的资源面积为15573Slices,时钟周期是8.930ns,时钟频率是111.982MHz,吞吐率是716.6848Mbps;
对最小密钥长度的几种典型轻量级分组密码算法进行了FPGA实现。表8为轻量级密码算法FPGA性能实验数据,通过表8中数据对比表明,HBcipher算法是目前轻量级密码算法中加密周期、频率、吞吐率性能最高的。
表8性能对比
为了户执行效率高的需求,本发明所述的算法在传统SPN结构基础上进行设计创作,待加密/解密数据和密钥借助矩阵的形式在轮函数控制信号count的奇偶性控制下运算,得到的结果进行列混淆、P2置换,进一步提高扩散和混淆,综上,使得算法具有灵活性高、高安全性和高效率的特点,相比其他几种轻量级算法,HBcipher算法安全性和加密效率更加优越。
以上结合具体实施例对本发明进行了详细的说明,这些并非构成对发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可以做出许多变形和改进,这些也应属于本发明的保护范围。
Claims (8)
1.一种轻量级密码算法HBcipher实现方法,其特征在于,包括以下步骤:
步骤1:获取待加密的明文,并依据密钥位数确定轮数r,轮数控制信号的初始值为1;
其中,所述待加密的明文按高位到低位、从左至右的顺序排列成8×8的明文矩阵;
步骤2:依据当前轮数控制信号count,对待加密的数据矩阵进行矩阵划分,获得数据块L和数据块R;
若当前轮数控制信号count为奇数,则将待加密的数据矩阵的左半部分和右半部分分别作为数据块L和数据块R;
其中,数据块的每一行由对应矩阵部分的连续两行按照从高位至低位排列获得;
若当前轮数控制信号count为偶数,则将待加密的数据矩阵的上半部分和下半部分分别作为数据块L和数据块R;
步骤3:将密钥按照从高位到低位、从左至右,每行16位排列,得到轮密钥矩阵,将轮密钥矩阵的左半部分和右半部分分别作为左控制密钥Qi和右控制密钥Qi+1;
步骤4:依据当前轮数控制信号,将数据块与控制密钥进行轮函数操作;
当轮运算控制信号count为奇数时,左控制密钥Qi与数据块L进行F1函数、右控制密钥Qi+1与数据块R进行F2函数运算;
当轮运算控制信号count为偶数时,右控制密钥Qi+1与数据块L进行F1函数、左控制密钥Qi与数据块R进行F2函数运算;
将经过F1函数、F2函数运算后的数据转换成16进制数据后合并,再进行F3函数运算;
所述F1函数依次包括轮密钥加、S1盒置换、行移位运算;
所述F2函数依次包括轮密钥加、S2盒置换、轮常数加运算;
所述F3函数依次包括列混淆和P2置换运算;
步骤5:判断当前轮数控制信号count是否等于轮数r,若不等于,令count=count+1,将经过F3函数运算输出的结果作为新一轮的待加密数据,返回步骤2,否则,输出加密结果。
2.根据权利要求1所述的方法,其特征在于,所述F3函数中的P2置换运算过程如下:
将待进行P2置换的4×16数据矩阵按照从左至右的顺序划分成顺序连接的4个4×4的矩阵,并从左至右标记4个矩阵的对角线,依次为a、b、c、d,相邻矩阵的对角线首尾连接,得到依次画出4个矩阵的对角线标号a、b、c、d,获得8个等腰三角形,其a、c为从左上角到右下角的主对角线,b、d为从左下角到右上角的次对角线;
将对角线a、b、d上方的三角形中的数据沿对角线向下翻折变换;
将对角线b下方和对角线c上方的三角形中的数据,沿矩形边向右翻折变换;
将对角线c下方的三角形中的数据,沿对角线向上翻折变换;
将对角线a、d下方的三角形中的数据分别沿顺时针、逆时针旋转90°变换,其中,对角线d下方的三角形经过逆时针旋转变换后移至第一个4×4的矩阵所在的区域;
次对角线b、d经过的数据沿逆时针旋转90°变换;
主对角线a、c经过的数据沿顺时针旋转90°变换,其中,主对角线a经过的数据经过顺时针旋转变换后移至最后一个4×4的矩阵所在的区域。
3.根据权利要求2所述的方法,其特征在于,当密钥长度为64位时,轮数r为16;当密钥长度为128位时,轮数r为20。
4.根据权利要求3所述的方法,其特征在于,所述左控制密钥Qi和右控制密钥Qi+1在每一轮的运算中按照以下过程获取:
当密钥长度为64位时,具体过程如下:
步骤A1:将64位轮密钥K{K1、K2······K64}用4×16矩阵表示,第一轮的轮密钥为初始密钥;
步骤A2:将步骤A1得到的矩阵中的每一列作为一个分组,得到16个4位分组B0{K1,K17,K33,K49},...,B15{K16,K32,K48,K64};
步骤A3:将步骤A2得到的第一个和最后一个分组B0、B15分别进行S1盒替换得到B0’、B15’;
步骤A4:将{B0’,B1,B2·····B15’}进行位排列P1置换;
步骤A5:将步骤A4得到的结果进行行移位运算获得更新后轮密钥矩阵;
步骤A6:将更新得到的轮密钥矩阵进行左右划分,得到两个4×8的矩形块,作为新一轮的左控制密钥Qi和右控制密钥Qi+1;
所述位排列P1置换是指将第i组数据移动至P1(i)列:
当密钥长度为128位时,具体过程如下:
步骤B1:将128位轮密钥K{K1,K2······K128}用8×16的矩形表示,第一轮的轮密钥为初始密钥;
步骤B2:将步骤A1得到的矩阵中的每一列作为一个分组,得到16个8位分组B0{K1,K17,K33,K49,K65,K81,K97,K113},...,B15{K16,K32,K48,K64,K80,K96,K112,K128};
步骤B3:将步骤A2得到的第一个和最后一个分组B0、B15分别进行S1盒替换得到B0’、B15’;
步骤B4:将{B0’,B1,B2·····B15’}作为中间密钥矩阵进行移位运算得到更新后轮密钥矩阵;
将中间密钥矩阵的第二行循环左移3位并整体上移到第一行的位置,第三行循环左移5位并整体上移到第二行的位置,第四行循环左移7位并整体上移到第三行的位置,第五行循环左移9位并整体上移到第四行的位置,第六行循环左移11位并整体上移到第五行的位置,第七行循环左移13位并整体上移到第六行的位置,第八行循环左移15位并整体上移到第七行的位置,第一行循环左移1位整体下移到第八行的位置;
步骤B5:从更新后轮密钥矩阵中选取前四行作为控制密钥矩阵;
步骤B6:将步骤B5获得的控制密钥矩阵进行左右划分,得到两个4×8的矩形块,作为新一轮的左控制密钥Qi和右控制密钥Qi+1。
5.根据权利要求4所述的方法,其特征在于,在对密文进行解密时,先将密文进行P2逆置换,再进行逆列混淆,将经过逆列混淆后得到的结果高32位、低32位分别进行F1函数逆运算、F2函数逆运算,将经过F1函数逆运算、F2函数逆运算得到的结果进行合并,r轮迭代得到解密后的明文;
在轮密钥加逆变换运算中和加密过程一样依据当前轮数控制信号count'确定每一轮使用的控制密钥;
所述F1函数逆运算依次为逆行移位、S1-1盒置换、轮密钥加逆变换;
所述F2函数逆运算依次为轮常数加逆运算、S2-1盒置换、轮密钥加逆变换;
所述P2逆置换、逆列混淆与加密过程中的P2置换、列混淆运算互逆,所述F1函数逆运算中的逆行移位、S1-1盒置换、轮密钥加逆变换分别与F1函数运算中的行移位、S1盒置换、轮密钥加运算互逆,所述F2函数逆运算中的轮常数加逆运算、S2-1盒置换、轮密钥加逆变换分别与F2函数运算中的轮密钥加、S2盒置换、轮常数加运算互逆。
6.根据权利要求5所述的方法,其特征在于,所述列混淆和逆列混淆分别采用如下矩阵实现:
列混淆:逆列混淆:
7.一种轻量级密码算法HBcipher实现装置,其特征在于,包括:
初始化单元:获取待加密的明文,并依据密钥位数确定轮数r,轮数控制信号的初始值为1;
其中,所述待加密的明文按高位到低位、从左至右的顺序排列成8×8的明文矩阵;
数据拆分单元:依据当前轮数控制信号count,对待加密的数据矩阵进行矩阵划分,获得数据块L和数据块R;
若当前轮数控制信号count为奇数,则将待加密的数据矩阵的左半部分和右半部分分别作为数据块L和数据块R;
其中,数据块的每一行由对应矩阵部分的连续两行按照从高位至低位排列获得;
若当前轮数控制信号count为偶数,则将待加密的数据矩阵的上半部分和下半部分分别作为数据块L和数据块R;
控制密钥选取单元:将密钥按照从高位到低位、从左至右,每行16位排列,得到轮密钥矩阵,将轮密钥矩阵的左半部分和右半部分分别作为左控制密钥Qi和右控制密钥Qi+1;
轮函数迭代单元:依据当前轮数控制信号,采用权利要求1-5任一项所述的方法将数据块与控制密钥进行轮函数操作;
判断当前轮数控制信号count是否等于轮数r,若不等于,令count=count+1,将经过F3函数运算输出的结果作为新一轮的待加密数据,重新进行数据拆分和选取控制密钥后,再进行轮函数迭代,否则,输出加密结果。
8.根据权利要求7所述的装置,其特征在于,还包括解密单元,所述解密单元采用权利要求6所述的方法对输入的密文进行解密,得到解密数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810025266.XA CN108206736B (zh) | 2018-01-11 | 2018-01-11 | 一种轻量级密码算法HBcipher实现方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810025266.XA CN108206736B (zh) | 2018-01-11 | 2018-01-11 | 一种轻量级密码算法HBcipher实现方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108206736A CN108206736A (zh) | 2018-06-26 |
CN108206736B true CN108206736B (zh) | 2019-03-15 |
Family
ID=62606384
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810025266.XA Active CN108206736B (zh) | 2018-01-11 | 2018-01-11 | 一种轻量级密码算法HBcipher实现方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108206736B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110572255B (zh) * | 2019-09-26 | 2020-07-28 | 衡阳师范学院 | 基于轻量级分组密码算法Shadow的加密方法、装置及计算机可读介质 |
CN111478766B (zh) * | 2020-01-21 | 2021-09-28 | 衡阳师范学院 | 一种分组密码meg实现方法、装置及存储介质 |
CN111614457B (zh) * | 2020-05-21 | 2021-02-19 | 衡阳师范学院 | 基于p置换改进的轻量级分组加解密方法、装置及存储介质 |
CN112118097B (zh) * | 2020-09-07 | 2021-10-08 | 昆明理工大学 | 一种对称密钥加密方法 |
CN114615069B (zh) * | 2022-03-19 | 2022-11-04 | 山东大学 | 一种Quartet轻量级加密算法的实现装置及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101895389A (zh) * | 2010-07-16 | 2010-11-24 | 黑龙江大学 | 采用比例计算的基于组合编码的文件加密和解密的方法 |
CN103905182A (zh) * | 2014-04-25 | 2014-07-02 | 东南大学 | 基于动态改变中间数据存储位置的抗攻击方法及电路实现 |
CN103916236A (zh) * | 2014-04-25 | 2014-07-09 | 东南大学 | 面向aes算法的抗功耗攻击方法及电路实现 |
WO2014174044A1 (en) * | 2013-04-24 | 2014-10-30 | Nec Europe Ltd. | Method and system for encrypting data |
-
2018
- 2018-01-11 CN CN201810025266.XA patent/CN108206736B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101895389A (zh) * | 2010-07-16 | 2010-11-24 | 黑龙江大学 | 采用比例计算的基于组合编码的文件加密和解密的方法 |
WO2014174044A1 (en) * | 2013-04-24 | 2014-10-30 | Nec Europe Ltd. | Method and system for encrypting data |
CN103905182A (zh) * | 2014-04-25 | 2014-07-02 | 东南大学 | 基于动态改变中间数据存储位置的抗攻击方法及电路实现 |
CN103916236A (zh) * | 2014-04-25 | 2014-07-09 | 东南大学 | 面向aes算法的抗功耗攻击方法及电路实现 |
Also Published As
Publication number | Publication date |
---|---|
CN108206736A (zh) | 2018-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108206736B (zh) | 一种轻量级密码算法HBcipher实现方法与装置 | |
CN108123791B (zh) | 一种轻量级分组密码scs的实现方法与装置 | |
CN106850221B (zh) | 信息加密、解密方法及装置 | |
CN106921487B (zh) | 可重构s盒电路结构 | |
CN109639428B (zh) | 从位混合器构造安全散列函数的方法 | |
CN109768854B (zh) | 一种轻量级分组密码算法的实现方法 | |
Fan et al. | FPGA implementations of the Hummingbird cryptographic algorithm | |
CN102025484B (zh) | 一种分组密码加解密方法 | |
CN105959107B (zh) | 一种新型高安全的轻量级sfn分组密码实现方法 | |
CN107707343B (zh) | 加解密一致的sp网络结构轻量级分组密码实现方法 | |
CN104639314A (zh) | 基于aes加密/解密算法的装置和流水控制方法 | |
CN105335331B (zh) | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 | |
CN104065474B (zh) | 一种轻量级Surge分组密码实现方法 | |
WO2009093601A1 (ja) | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム | |
CN110784307B (zh) | 轻量级密码算法scenery实现方法、装置及存储介质 | |
CN101814985B (zh) | 应用多混沌映射多动态s盒的分组密码系统 | |
CN103634101A (zh) | 加密处理方法及设备 | |
CN104333446A (zh) | 一种新型超轻量级qtl分组密码实现方法 | |
CN111245598B (zh) | 一种轻量级aerogel分组密码的实现方法 | |
CN108183790A (zh) | 一种aes加密装置、芯片及系统 | |
CN104301096A (zh) | Aes轮运算方法和电路 | |
CN106656470A (zh) | 一种基于改进aes算法的数据加密方法 | |
CN111614457B (zh) | 基于p置换改进的轻量级分组加解密方法、装置及存储介质 | |
Moldovyan | On cipher design based on switchable controlled operations | |
JP2013182148A (ja) | 情報処理装置、および情報処理方法、並びにプログラム |
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 |