CN115883065B - 一种基于可变s盒的软件加解密快速实现方法、装置、芯片及存储介质 - Google Patents
一种基于可变s盒的软件加解密快速实现方法、装置、芯片及存储介质 Download PDFInfo
- Publication number
- CN115883065B CN115883065B CN202211497187.1A CN202211497187A CN115883065B CN 115883065 B CN115883065 B CN 115883065B CN 202211497187 A CN202211497187 A CN 202211497187A CN 115883065 B CN115883065 B CN 115883065B
- Authority
- CN
- China
- Prior art keywords
- bit
- cipher
- bricks
- brick
- transformation
- 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
- 238000000034 method Methods 0.000 title claims abstract description 60
- 239000011449 brick Substances 0.000 claims abstract description 255
- 230000009466 transformation Effects 0.000 claims abstract description 49
- 238000004364 calculation method Methods 0.000 claims abstract description 16
- 238000006243 chemical reaction Methods 0.000 claims description 24
- 238000006467 substitution reaction Methods 0.000 claims description 12
- 238000004891 communication Methods 0.000 abstract description 4
- 238000005457 optimization Methods 0.000 description 10
- 238000010992 reflux Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本发明属于密码技术领域,公开一种基于可变S盒的软件加解密快速实现方法、装置、芯片及存储介质。该方法包括:在Z密码算法密码砖运算过程中,通过预计算中间值,将加、减运算统一转化为模加运算,减少判断过程,简化S变换与G变换的运算流程;将每层密码砖按地址、位宽重新标识、分类,制定密码砖地址掩码,将相同类型的密码砖统一并行运算。该装置包括中间值预计算模块、密码砖分类及并行运算模块。本发明在保证安全通信的同时,可有效减少握手时延,提升用户体验。
Description
技术领域
本发明属于密码技术领域,尤其涉及一种基于可变S盒的软件加解密快速实现方法、装置、芯片及存储介质。
背景技术
移动互联网在快速发展的同时,安全问题也愈发突出,比如静态密码撞库、个人信息泄露、暴力攻击等安全事件时有发生。传统安全手段存在一定的局限性。基于以上问题,2018年郑建华院士团队提出一种新的对称密码体制(郑建华,任盛,靖青,宋若虎.Z密码算法设计方案[J].密码学报,2018,5(6):579-590):Z密码算法。为用户提供的加密算法是各不相同的加解密算法实例。目前,Z密码算法的实现大多是基于软件的实现方式,但是现有的基于软件的实现方式密码协议握手时延较高,用户体验较差。
发明内容
本发明针对现有的基于软件的Z密码算法实现方式密码协议握手时延较高,用户体验较差的问题,提出一种基于可变S盒的软件加解密快速实现方法、装置、芯片及存储介质,在保证安全通信的同时,可有效减少握手时延,提升用户体验。
为了实现上述目的,本发明采用以下技术方案:
本发明一方面提出一种基于可变S盒的软件加解密快速实现方法,包括:
在Z密码算法密码砖运算过程中,通过预计算中间值,将加、减运算统一转化为模加运算,减少判断过程,简化S变换与G变换的运算流程;
将每层密码砖按地址、位宽重新标识、分类,制定密码砖地址掩码,将相同类型的密码砖统一并行运算。
进一步地,按照如下方式简化S变换:
对于4比特的密码砖S变换,输入的参数为16比特数据(c15c14c13…c2c1c0),对输入的参数进行修改,最终传入的参数为C′3C′2C′1C′0,满足
ifc8==0
C′3C′2C′1C′0=c3c2c1c0;
else
C′3C′2C′1C′0=(0-c3c2c1c0)mod 16;
通过预计算传入的参数C′3C′2C′1C′0,在进行4比特的S变换时,直接进行
y=s[x+C′3C′2C′1C′0mod 16]运算;
其中s表示4比特代替表,即16元的S盒;x为输入;y为输出;
对于8比特的密码砖S变换,输入的参数为16比特数据(c15c14c13…c2c1c0),对输入的参数进行修改,最终传入的参数为C′7C′6C′5C′4C′3C′2C′1C′0,满足
ifc8==0
C′7C′6C′5C′4C′3C′2C′1C′0=c7c6c5c4c3c2c1c0;
else
C′7C′6C′5C′4C′3C′2C′1C′0=(0-c7c6c5c4c3c2c1c0)mod 256;
通过预计算传入的参数C′7C′6C′5C′4C′3C′2C′1C′0,在进行8比特的S变换时,直接进行
y=S[x+C′7C′6C′5C′4C′3C′2C′1C′0mod 256]运算;
其中S表示8比特代替表,即256元的S盒;
对于16比特和32比特的密码砖S变换,则基于8比特密码砖的S变换运算得出。
进一步地,按照如下方式简化G变换:
在进行16比特的加密的G变换时,设参数各个位为B7B6B5B4B3B2B1B0,则G变换的运算为
其中b1=S[b+C′7C′6C′5C′4C′3C′2C′1C′0mod 256],a、b分别为输入的16bit x按字节分成的高、低8比特。
进一步地,所述将每层密码砖按地址、位宽重新标识、分类,制定密码砖地址掩码,将相同类型的密码砖统一并行运算包括:
将每层密码砖按地址、位宽重新标识、分类,并按照下式制定密码砖地址掩码:
m=(w<<v1)|(w<<v2)|…|(w<<vn)
p=(u1<<v1)|(u2<<v2)|…|(un<<vn)
其中n表示一层中一类位宽的密码砖个数;w表示每类位宽的密码砖元素最大值;vi表示一层中每个密码砖移到最右边,需要移动的最低位数,i=1,2...n;ui表示优化后一层中每个密码砖模加运算结果;m表示密码砖地址掩码;p表示优化后一层中所有密码砖模加运算结果或运算;
对于4比特、8比特密码砖的并行运算,包括:
对4比特、8比特密码砖对应的参数与掩码进行高、低位的拆分,得到对应的m_l、m_h、p_l、p_h;进而得到并行加密运算公式为:
y=((x&m_l)+p_l)^(x&m_h)^p_h
对于16比特、32比特密码砖的并行运算,包括:将掩码与参数进行适当的拆分,基于8比特密码砖的并行运算进行16比特、32比特密码砖的并行运算。
本发明另一方面提出一种基于可变S盒的软件加解密快速实现装置,包括:
中间值预计算模块,用于在Z密码算法密码砖运算过程中,通过预计算中间值,将加、减运算统一转化为模加运算,减少判断过程,简化S变换与G变换的运算流程;
密码砖分类及并行运算模块,用于将每层密码砖按地址、位宽重新标识、分类,制定密码砖地址掩码,将相同类型的密码砖统一并行运算。
进一步地,所述中间值预计算模块中,按照如下方式简化S变换:
对于4比特的密码砖S变换,输入的参数为16比特数据(c15c14c13…c2c1c0),对输入的参数进行修改,最终传入的参数为C′3C′2C′1C′0,满足
if c8==0
C′3C′2C′1C′0=c3c2c1c0;
else
C′3C′2C′1C′0=(0-c3c2c1c0)mod 16;
通过预计算传入的参数C′3C′2C′1C′0,在进行4比特的S变换时,直接进行
y=s[x+C′3C′2C′1C′0mod 16]运算;
其中s表示4比特代替表,即16元的S盒;x为输入;y为输出;
对于8比特的密码砖S变换,输入的参数为16比特数据(c15c14c13…c2c1c0),对输入的参数进行修改,最终传入的参数为C′7C′6C′5C′4C′3C′2C′1C′0,满足
if c8==0
C′7C′6C′5C′4C′3C′2C′1C′0=c7c6c5c4c3c2c1c0;
else
C′7C′6C′5C′4C′3C′2C′1C′0=(0-c7c6c5c4c3c2c1c0)mod 256;
通过预计算传入的参数C′7C′6C′5C′4C′3C′2C′1C′0,在进行8比特的S变换时,直接进行
y=S[x+C′7C′6C′5C′4C′3C′2C′1C′0mod 256]运算;
其中S表示8比特代替表,即256元的S盒;
对于16比特和32比特的密码砖S变换,则基于8比特密码砖的S变换运算得出。
进一步地,所述中间值预计算模块中,按照如下方式简化G变换:
在进行16比特的加密的G变换时,设参数各个位为B7B6B5B4B3B2B1B0,则G变换的运算为
其中b1=S[b+C′7C′6C′5C′4C′3C′2C′1C′0mod 256],a、b分别为输入的16bit x按字节分成的高、低8比特。
进一步地,所述密码砖分类及并行运算模块具体用于:
将每层密码砖按地址、位宽重新标识、分类,并按照下式制定密码砖地址掩码:
m=(w<<v1)|(w<<v2)|...|(w<<vn)
p=(u1<<v1)|(u2<<v2)|...|(un<<vn)
其中n表示一层中一类位宽的密码砖个数;w表示每类位宽的密码砖元素最大值;vi表示一层中每个密码砖移到最右边,需要移动的最低位数,i=1,2...n;ui表示优化后一层中每个密码砖模加运算结果;m表示密码砖地址掩码;p表示优化后一层中所有密码砖模加运算结果或运算;
对于4比特、8比特密码砖的并行运算,包括:
对4比特、8比特密码砖对应的参数与掩码进行高、低位的拆分,得到对应的m_l、m_h、p_l、p_h;进而得到并行加密运算公式为:
y=((x&m_l)+p_l)^(x&m_h)^p_h
对于16比特、32比特密码砖的并行运算,包括:将掩码与参数进行适当的拆分,基于8比特密码砖的并行运算进行16比特、32比特密码砖的并行运算。
本发明第三方面提出一种芯片,包括处理器和接口,所述处理器用于读取指令以执行上述的任一种基于可变S盒的软件加解密快速实现方法。
本发明第四方面提出一种计算机可读存储介质,所述存储介质内存储有计算机可执行程序,所述计算机可执行程序被处理器执行时,实现上述的任一种基于可变S盒的软件加解密快速实现方法。
与现有技术相比,本发明具有的有益效果:
本发明的一种基于可变S盒的软件加解密快速实现方法、装置、芯片及存储介质,在Z密码算法密码砖运算过程中,通过预计算中间值,将加、减运算统一转化为模加运算,减少判断过程,简化S变换与G变换的运算流程;并将每层密码砖按地址、位宽重新标识、分类,制定密码砖地址掩码,将相同类型的密码砖统一并行运算。通过上述手段,使得本发明在保证安全通信的同时,可有效减少握手时延,提升用户体验。
附图说明
图1为Z密码算法每层密码砖的加密判断运算流程图;
图2为本发明实施例一种基于可变S盒的软件加解密快速实现方法流程图;
图3为本发明实施例改进后的Z密码算法的生成流程图。
具体实施方式
下面结合附图和具体的实施例对本发明做进一步的解释说明:
Z密码算法是对称分组算法,分组长度为64bit。根据Z密码算法原理,加密算法由16轮的密码砖变换、回流运算、交织运算组成。每轮运算流程如图1所示。解密运算时加密的逆运算,不在赘述。
Z密码算法的加密运算中的一轮运算由若干的4bit、8bit、16bit、32bit密码砖的S变换、回流运算、交织层变换组成。根据图1所示,根据Z密码算法初始化运算参数的值,得到该层的密码砖个数m、第i个密码砖的参数以及回流标记。根据这些参数通过判断进行该层密码砖的运算。之后进行交织层的运算。
在已有实现流程的基础上,本发明提出一种基于可变S盒的软件加解密快速实现方法,包括:采用了参数预计算、制定密码砖地址掩码表实现密码砖并行运算、简化模运算流程等方式进行了优化,改进后的加密运算实现流程如图2所示。接下来,对各个优化细节进行详细描述。
1、在密码砖运算过程中,通过预计算中间值,将加、减运算统一转化为模加运算,减少繁琐的判断过程,简化S变换与G变换的运算流程。
在加解密中,对于4比特与8比特密码砖的S变换的查表之前,首先经过判断参数的某一位后,进行模加或模减运算。比如对于4bit的密码砖S变换,需要5bit参数,实际传入16bit数据(c15c14c13…c2c1c0),若c8=0,则计算y=s[x+c3c2c1c0 mod 16];否则,若c8=1,则计算y=s[x-c3c2c1c0 mod 16]。
这里我们对输入的参数进行修改,最终传入的参数为C′3C′2C′1C′0,满足
if c8==0
C′3C′2C1C′0=c3c2c1c0;
else
C′3C′2C′1C′0=(0-c3c2c1c0)mod 16;
这样,通过预计算传入的参数C′3C′2C′1C′0,在进行4bit的S变换时候,直接进行
y=s[x+C′3C′2C′1C′0mod 16]
运算即可,其中s表示4比特代替表,即16元的S盒。这样我们就可以将4比特的算法参数中的(c15c14c13...c6c5c4)省去,保留C′3C′2C′1C′0即可。
同理,对于8bit的密码砖,输入的也是16bit数据(c15c14c13...c2c1c0),也可以省去参数(c15c14c13...c10c9c8),保留预计算的值C′7C′6C′5C′4C′3C′2C′1C′0。
由于16比特与32比特密码砖的S变换是基于8比特密码砖的S变换运算出来的,在此,经8比特密码砖的S变换的参数也可以通过上述方式预计算得到参数。而剩余的参数要完成y=3x+c15c14……c91或y=3x+c15c14……c11的运算。那么我们存储的这部分参数则完全可以(c15c14……c91)和c15c14……c11进行保存。这些参数末尾值置1即可。
通过以上操作,便可以在运算当中统一运算方式,这样所有密码砖的S变换的查表运算就统一变换为了y=s[x+C′3C′2C′1C′0mod 16]与y=S[x+C′7C′6C′5C′4C′3C′2C′1C′0mod256]。其中S表示8比特代替表,即256元的S盒。
而解密是加密的逆过程,这里对应的参数只需取加密参数相反值即可。比如4bit的逆S变化为
x=s-1[y]-C′3C′2C′1C′0mod 16
那么对应的解密参数D′3D′2D′1D′0=0-C′3C′2C′1C′0mod 16,这样便可以预计算出解密运算优化的参数。同理,对应16比特与32比特密码砖运算涉及的S变换相关参数,也是对加密的参数进行负值取模得到。
在进行16bit的加密的G变换时,设参数各个位为B7B6B5B4B3B2B1B0,那么运算G变换的运算为
其中b1=S[b+C′7C′6C′5C′4C′3C′2C′1C′0mod 256],a、b分别为输入的16bit x按字节分成的高、低8比特。
由此可以看出,对于G变换参数的优化,直接将其最后一位强制为1进行修改保存,其中的B0舍弃。同理,在预计算加解密参数时,对32bit密码砖对应的G变换参数也通过该方式进行优化。
2、将每层密码砖按地址、位宽重新标识、分类,制定密码砖地址掩码,将相同类型的密码砖统一并行运算,相比单个串行运算,提升运算效率。
该优化流程主要针对加解密过程中,对于判断流程的优化以及并行运算的优化。
(1)简化判断流程
在《Z密码算法设计方案》中进行加解密时,需要逐个判断密码砖所属4bit、8bit、16it、32bit的宽度,然后进行该块密码砖的运算,之后还要对该块密码砖是流入、流出以及无回流三种情况进行判断。
如图1所示的1轮加密流程,参数m是该层密码砖个数,因为密码砖比特宽度的取值范围有4、8、16、32四种,所以m的取值范围为
2≤m≤16
根据图1的运算流程,加密中,一轮中每个密码砖需要判断5次,如果使用switch...case的跳转表优化,则需要首先用switch...case涵盖4种密码砖情况,之后进行一次判断得到。
根据图2的运算流程,省去了对每层密码砖逐个进行判断的流程,将密码砖按照比特长度进行分类,当运算完成密码砖流出的部分与回流运算后,可对剩余的密码砖进行并行的计算。对比如表1所示。
表1
项目 | 未优化前跳转次数范围 | 优化后判断及跳转次数范围 |
密码砖比特宽度跳转 | [2,16] | 1 |
密码砖是否回流运算判断 | [2,16] | 3 |
总计 | [4,32] | 4 |
(2)并行运算的优化
在图2运算流程中,为保证各组密码砖能够并行计算,其预计算中可对参数进行优化与设计。这里根据密码砖的位置进行设计掩码,在预计算中,根据各组密码砖的位置定制4bit、8bit、16bit、32bit密码砖的地址掩码表。
设一层密码砖中,除去流出的密码砖其t(t=4、8、16、32)bit的密码砖有n个,对应的最大值为w(w=0xf、0xff、0xffff、0xffffffff)。
各个密码砖右移到最低位的参数分别为v1、v2、v3、...vn,密码砖对应的运算参数为u1、u2、u3、...un,该种密码砖运算的地址掩码与对应参数为
m=(w<<v1)|(w<<v2)|...(w<<vn) (1)
p=(u1<<v1)|(u2<<v2)|...(un<<vn) (2)
其中公式中各变量说明如下:
t:密码砖的位宽,取值范围4,8,16,32;
n:一层中一类位宽的密码砖个数;
w:每类位宽的密码砖元素最大值,比如:4bit密码砖,为0xf、8bit密码砖,为0xff、16bit密码砖,为0xffff、32bit密码砖,为0xffffffff;
vi:一层中每个密码砖移到最右边,需要移动的最低位数,i=1,2...n;
ui:优化后一层中每个密码砖模加运算结果,i=1,2...n;
m:密码砖地址掩码,标识;
p:优化后一层中所有密码砖模加运算结果或运算。
其中,对于无流出的所有4bit、8bit密码砖可一起进行并行运算,在这里,需要对4bit、8bit密码砖的参数与掩码进行拆分。设4bit密码砖最高位掩码为mask4_h,那么
m4_h=(0x8<<v1)|(0x8<<v2)|...(0x8<<vn)
根据公式(1)得到4bit密码砖掩码参数m4,那么剩下的3bit的掩码为
m4_l=m4^m4_h
于是4bit密码砖组对应的参数可分为
p4_h=mask4_h&p4
p4_l=mask4_l&p4
同理,运算出8bit密码砖的拆分掩码m8_h、m8_l与拆分参数p8_h、p8_l。
那么4bit与8bit密码砖在查表之前的并行运算参数有拆分掩码与拆分参数,分别为
m_h=m8_h|m4_h
m_l=m8_l|m4_l
p_h=p8_h|p4_h
p_l=p8_l|p4_l
这些参数将用于加解密中4bit、8bit密码砖的并行运算。
下面以某个实例为例子进行说明。
假设某一层密码砖中,4bit密码砖有m0个、8bit密码砖有m1个、16bit密码砖有m2个、32bit密码砖有m3个,这些参数则一定满足如下关系(m0~m3均大于0):
4×m0+8×m1+16×m2+32×m3=64
如果该层密码砖的流向是4bit密码砖流向8bit密码砖,那么首先需要先运算流出的密码砖后进行回流运算,之后运算剩下的密码砖。
根据《Z密码算法设计方案》,4bit密码砖与8bit密码砖的运算步骤相似,那么其查表之前的运算便可在64bit的整数内并行完成。(具体流程参考第3小节)。16bit的密码砖运算步骤中,第一步是取其中8bit进行S变换,因此可将16bit密码砖的此步骤运算放到4bit与8bit密码砖的运算中。同理32bit密码砖也包含了16bit密码砖的运算步骤,因此,也可将32bit密码砖进行拆解,其中的16bit密码砖运算归类到16bit密码砖运算步骤中(具体流程参考第4小节)。因为该层密码砖的流向是4bit密码砖流向8bit密码砖,那么在回流运算之后进行并行运算的4bit密码砖是(m0-1)个,其主要步骤分类如表2所示。
表2
1)4bit和8bit的并行S变换
根据图2的第1部分框图,在初始化中,首先要对4bit密码砖与8bit密码砖运算的参数进行整理。根据4bit密码砖与8bit密码砖的位置可设定两个掩码用于运算。
假设某一层中,4bit的密码砖对应的掩码为0xf00f000000f0000f,8bit的密码砖对应根据位置对应的掩码为0x0ff0ffffff000000。16bit密码砖为流入的密码砖,所有4bit的密码砖参数经整理后为p4=0xa00b000000c0000d,8bit的密码砖参数经整理后为p8=0x0120345678000000。输入的数据为x,查表之前得出的结果数据为y。
对以上参数进行整理,将4bit与8bit的掩码分别分为两部分,m4_h=0x8008000000800008、m4_l=0x7007000000700007与m8_h=0x0800808080000000、m8_l=0x07f07f7f7f000000。
首先通过预计算,可将4bit与8bit掩码参数整合在一起,得到
m_h=m4_h|m8_h=0x8808808080800008;
m_l=m4_l|m8_l=0x77f77f7f7f7f0007。
对于参数可进一步进行预计算,得到
p_h=(p4|p8)&m_h=0x8008000000800008;
p-l=(p4|p8)&m_l=Ox2123345678400005。
那么,并行的运算就是如下公式所示:
y=((x&m_l)+p_l)^(x&m_h)^p_h
之后通过查表便可进行得到运算的最终数据。查表运算过程中,需要对其进行左移与右移运算。解密运算中,是该过程的逆过程。
通常情况下,一块密码砖进行4bit与8bit密码砖运算时,除去左移与右移运算,需要进行加法与取模两步运算,而该优化需要进行5步运算。所以当执行图2中的1部分时,需要运算的密码砖个数大于等于3时,通过该方法可进行优化。
2)16bit与32bit的并行G变换与S变换
根据图2的第2、3部分框图,在16比特密码砖运算中,除查表外,其余运算均可进行并行运算达到优化目的。通过对参数进行整理,根据密码砖运算的位置设置掩码,从而达到优化运算的目的。
通过模加减的判断运算后,已经统一修改为模加运算。16bit密码砖运算中,传入了2个16bit参数C、D。在运算中,如果某一层有多个16bit的密码砖,则在查表之前的步骤可将多个16bit密码砖或32bit密码砖进行运行。
假设某一层中,两个16bit密码砖在64bit中的地址掩码为0x00ffff000ffff0,将该掩码经过拆分可得到
m0=0x0000ff00000ff0、m1=0x00ff00000ff000。经过模参数加减优化后,按照掩码位置放置参数,对应的参数为p0=0x0000A0A000000B0B00、p1=0x0000A1A100000B1B10、p2=Ox0000A2A200000B2B20、p3=0x0000A3A300000B3B30。
设输入的数据为x,输出的数据为y,有m块密码16bit密码砖,每块密码砖移位到最低为t1、t2...tn,按照上述运算规则预计算出参数m0、m1、p0、p1、p2、p3,那么并行运算的优化步骤为:
①计算8bit的取模运算:b1=((x&m0)+p0)&m0(该步骤在运算4bit与8bit密码砖时可执行);
②进行S盒的查表运算,根据两块16bit的密码砖位置,进行移位后做两次S盒变换,如下所示进行运算:
b1=(S[(b1>>t1)&0xff]<<t1)|S[(b1>>t2)&0xff]<<t2|...S[(b1>>tn)&0xff]<<tn
③计算a1=((3*((x>>8)&m0))+p1)^b1,之后进行查表前的相加运算得到
a1=(a1+p2)
经查表运算,得到
a2=(S[(a1>>t1)&0xff]<<t1)|S[(a1>>t2)&0xff]<t2|...S[(a1>>tn)&0xff]<<tn
④计算b2=(3*b1+p3)^a2,之后运算16bit密码砖的运算结果
y=(a2<<8)|(b2&m0)
32bit密码砖的并行运算也通过这种方式,将掩码与参数进行适当的拆分,运算剩余的部分,在此不做赘述。
作为一种可实施方式,一个Z算法加密算法实例在CPU为Intel3-10100,主频为3.6GHz的Windows系统中实现。这里主要实现了根据密钥生成算法参数与通过运算参数进行加解密运算的功能。
1)根据密钥生成算法
如图3所示的运算流程。
首先按照图中第1部分的运算流程,根据《Z密码算法设计方案》中关于算法参数的运算,通过1024bit的输入密钥生成该算法所需的16元S1盒、256元S2盒以及4096bit的参数。
之后进行第2部分的计算。首先对4096bit的参数按照《Z密码算法设计方案》中对各层密码砖的取值规则,得到各层密码砖4、8、16、32bit密码砖运算参数与数量,以及交织层参数。然后按照上述参数计算出各层密码砖的64bit为单位的掩码参数、以及其对应的运算参数。
2)根据算法参数进行加解密运算
以加密运算的单轮运算为例,按照图2的运算流程,主要有以下的流程。在这里假设输入为x。
①单独运算流出的密码砖
根据流出密码砖的数据,主要分5种情况,如表3所示为运算流程,根据密码砖位置提取相关的数据运算参数,设输出的数据为t。
表3
流出类型 | 运算流程 |
无回流 | 无 |
4bit密码砖数据流出 | 一次4bit的S变换 |
8bit密码砖数据流出 | 一次8bit的S变换 |
16bit密码砖数据流出 | 2次8bit的S变换与2次8bit的G变换 |
32bit密码砖数据流出 | 2次16bit的S变换与2次16bit的G变换 |
②回流运算与剩余密码砖的并行运算
首先根据前一个步骤运算出的数据t进行回流运算,如果该轮运算不存在回流则无需进行回流计算。假设该层密码砖回流位置为左移m位,流入密码砖的掩码为h,则进行如下运算,将x进行更新。
之后,按照图2中的框图1、2、3的各个步骤进行密码砖的运算,得到运算结果后,将该64bit的数据拆分为32bit数据的R、L两个部分。
③交织变换
根据上述步骤得到的R、L两个部分进行如下运算,设交织层参数为a、b,得到该层的输出y,运算步骤如下所示,其中P为字节为单位的线性变换。
y=(L<<32)|R
按照上述三个步骤,进行逆向运算就是解密的流程,这里不再赘述。
通过上述的流程经运算优化后,在该平台进行多组算法测试,加密运算效率提升了约1.5倍。
在上述实施例的基础上,本发明还提出一种基于可变S盒的软件加解密快速实现装置,包括:
中间值预计算模块,用于在Z密码算法密码砖运算过程中,通过预计算中间值,将加、减运算统一转化为模加运算,减少判断过程,简化S变换与G变换的运算流程;
密码砖分类及并行运算模块,用于将每层密码砖按地址、位宽重新标识、分类,制定密码砖地址掩码,将相同类型的密码砖统一并行运算。
进一步地,所述中间值预计算模块中,按照如下方式简化S变换:
对于4比特的密码砖S变换,输入的参数为16比特数据(c15c14c13...c2c1c0),对输入的参数进行修改,最终传入的参数为C′3C′2C′1C′0,满足
if c8==0
C′3C′2C′1C′0=c3c2c1c0;
else
C′3C′2C′1C′0=(0-c3c2c1c0)mod 16;
通过预计算传入的参数C′3C′2C′1C′0,在进行4比特的S变换时,直接进行
y=s[x+C′3C′2C′1C′0mod 16]运算;
其中s表示4比特代替表,即16元的S盒;x为输入;y为输出;
对于8比特的密码砖S变换,输入的参数为16比特数据(c15c14c13…c2c1c0),对输入的参数进行修改,最终传入的参数为C′7C′6C′5C′4C′3C′2C′1C′0,满足
if c8==0
C′7C′6C′5C′4C′3C′2C′1C′0=c7c6c5c4c3c2c1c0;
else
C′7C′6C′5C′4C′3C′2C′1C′0=(0-c7c6c5c4c3c2c1c0)mod 256;
通过预计算传入的参数C′7C′6C′5C′4C′3C′2C′1C′0,在进行8比特的S变换时,直接进行
y=S[x+C′7C′6C′5C′4C′3C′2C′1C′0mod 256]运算;
其中S表示8比特代替表,即256元的S盒;
对于16比特和32比特的密码砖S变换,则基于8比特密码砖的S变换运算得出。
进一步地,所述中间值预计算模块中,按照如下方式简化G变换:
在进行16比特的加密的G变换时,设参数各个位为B7B6B5B4B3B2B1B0,则G变换的运算为
其中b1=S[b+C′7C′6C′5C′4C′3C′2C′1C′0mod 256],a、b分别为输入的16bit x按字节分成的高、低8比特。
进一步地,所述密码砖分类及并行运算模块具体用于:
将每层密码砖按地址、位宽重新标识、分类,并按照下式制定密码砖地址掩码:
m=(w<<v1)|(w<<v2)|...|(w<<vn)
p=(u1<<v1)|(u2<<v2)|...|(un<<vn)
其中n表示一层中一类位宽的密码砖个数;w表示每类位宽的密码砖元素最大值;vi表示一层中每个密码砖移到最右边,需要移动的最低位数,i=1,2...n;ui表示优化后一层中每个密码砖模加运算结果;m表示密码砖地址掩码;p表示优化后一层中所有密码砖模加运算结果或运算;
对于4比特、8比特密码砖的并行运算,包括:
对4比特、8比特密码砖对应的参数与掩码进行高、低位的拆分,得到对应的m_l、m_h、p_l、p_h;进而得到并行加密运算公式为:
y=((x&m_l)+p_l)^(x&m_h)^p_h
对于16比特、32比特密码砖的并行运算,包括:将掩码与参数进行适当的拆分,基于8比特密码砖的并行运算进行16比特、32比特密码砖的并行运算。
在上述实施例的基础上,本发明还提出一种芯片,包括处理器和接口,所述处理器用于读取指令以执行上述的任一种基于可变S盒的软件加解密快速实现方法。
在上述实施例的基础上,本发明还提出一种计算机可读存储介质,所述存储介质内存储有计算机可执行程序,所述计算机可执行程序被处理器执行时,实现上述的任一种基于可变S盒的软件加解密快速实现方法。具体地,所述存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
综上,本发明的一种基于可变S盒的软件加解密快速实现方法、装置、芯片及存储介质,在Z密码算法密码砖运算过程中,通过预计算中间值,将加、减运算统一转化为模加运算,减少判断过程,简化S变换与G变换的运算流程;并将每层密码砖按地址、位宽重新标识、分类,制定密码砖地址掩码,将相同类型的密码砖统一并行运算。通过上述手段,使得本发明在保证安全通信的同时,可有效减少握手时延,提升用户体验。
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种基于可变S盒的软件加解密快速实现方法,其特征在于,包括:
在Z密码算法密码砖运算过程中,通过预计算中间值,将加、减运算统一转化为模加运算,减少判断过程,简化S变换与G变换的运算流程;
将每层密码砖按地址和位宽重新标识和分类,制定密码砖地址掩码,将相同类型的密码砖统一并行运算。
2.根据权利要求1所述的一种基于可变S盒的软件加解密快速实现方法,其特征在于,按照如下方式简化S变换:
对于4比特的密码砖S变换,输入的参数为16比特数据c15c14c13...c2c1c0,对输入的参数进行修改,最终传入的参数为C′3C′2C′1C′0,满足
如果c8==0
C′3C′2C′1C′0=c3c2c1c0;
否则
C′3C′2C′1C′0=(0-c3c2c1c0)mod 16;
通过预计算传入的参数C′3C′2C′1C′0,在进行4比特的S变换时,直接进行
y=s[x+C′3C′2C′1C′0mod 16]运算;
其中s表示4比特代替表,即16元的S盒;x为输入;y为输出;
对于8比特的密码砖S变换,输入的参数为16比特数据c15c14c13...c2c1c0,对输入的参数进行修改,最终传入的参数为C′7C′6C′5C′4C′3C′2C′1C′0,满足
如果c8==0
C′7C′6C′5C′4C′3C′2C′1C′0=c7c6c5c4c3c2c1c0;
否则
C′7C′6C′5C′4C′3C′2C′1C′0=(0-c7c6c5c4c3c2c1c0)mod 256;
通过预计算传入的参数C′7C′6C′5C′4C′3C′2C′1C′0,在进行8比特的S变换时,直接进行
y=S[x+C′7C′6C′5C′4C′3C′2C′1C′0mod 256]运算;
其中S表示8比特代替表,即256元的S盒;
对于16比特和32比特的密码砖S变换,则基于8比特密码砖的S变换运算得出。
3.根据权利要求2所述的一种基于可变S盒的软件加解密快速实现方法,其特征在于,按照如下方式简化G变换:
在进行16比特的加密的G变换时,参数各个位为B7B6B5B4B3B2B1B0,则G变换的运算为
其中b1=S[b+C′7C′6C′5C′4C′3C′2C′1C′0mod 256],a、b分别为输入的16比特x按字节分成的高、低8比特。
4.根据权利要求1所述的一种基于可变S盒的软件加解密快速实现方法,其特征在于,所述将每层密码砖按地址和位宽重新标识和分类,制定密码砖地址掩码,将相同类型的密码砖统一并行运算包括:
将每层密码砖按地址和位宽重新标识和分类,并按照下式制定密码砖地址掩码:
m=(w<<v1)|(w<<v2)|...|(w<<vn)
p=(u1<<v1)|(u2<<v2)|...|(un<<vn)
其中n表示一层中一类位宽的密码砖个数;w表示每类位宽的密码砖元素最大值;vi表示一层中每个密码砖移到最右边,需要移动的最低位数,i=1,2,...,n;ui表示优化后一层中每个密码砖模加运算结果;m表示密码砖地址掩码;p表示优化后一层中所有密码砖模加运算结果或运算;
对于4比特、8比特密码砖的并行运算,包括:
对4比特、8比特密码砖对应的参数与掩码进行高、低位的拆分,得到对应的m_l、m_h、p_l、p_h,其中m_l表示对4比特和8比特密码砖的掩码拆分后的低位掩码整合后的结果,m_h表示对4比特和8比特密码砖的掩码拆分后的高位掩码整合后的结果,p_l表示对4比特密码砖的参数和8比特密码砖的参数及m_l整合后的结果,p_h表示对4比特密码砖的参数和8比特密码砖的参数及m_h整合后的结果;进而得到并行加密运算公式为:
y=((x&m_l)+p_l)^(x&m_h)^p_h
对于16比特、32比特密码砖的并行运算,包括:将掩码与参数进行拆分,基于8比特密码砖的并行运算进行16比特、32比特密码砖的并行运算。
5.一种基于可变S盒的软件加解密快速实现装置,其特征在于,包括:
中间值预计算模块,用于在Z密码算法密码砖运算过程中,通过预计算中间值,将加、减运算统一转化为模加运算,减少判断过程,简化S变换与G变换的运算流程;
密码砖分类及并行运算模块,用于将每层密码砖按地址和位宽重新标识和分类,制定密码砖地址掩码,将相同类型的密码砖统一并行运算。
6.根据权利要求5所述的一种基于可变S盒的软件加解密快速实现装置,其特征在于,所述中间值预计算模块中,按照如下方式简化S变换:
对于4比特的密码砖S变换,输入的参数为16比特数据c15c14c13...c2c1c0,对输入的参数进行修改,最终传入的参数为C′3C′2C′1C′0,满足
如果c8==0
C′3C′2C′1C′0=c3c2c1c0;
否则
C′3C′2C′1C′0=(0-c3c2c1c0)mod 16;
通过预计算传入的参数C′3C′2C′1C′0,在进行4比特的S变换时,直接进行
y=s[x+C′3C′2C′1C′0mod 16]运算;
其中s表示4比特代替表,即16元的S盒;x为输入;y为输出;
对于8比特的密码砖S变换,输入的参数为16比特数据c15c14c13...c2c1c0,对输入的参数进行修改,最终传入的参数为C′7C′6C′5C′4C′3C′2C′1C′0,满足
如果c8==0
C′7C′6C′5C′4C′3C′2C′1C′0=c7c6c5c4c3c2c1c0;
否则
C′7C′6C′5C′4C′3C′2C′1C′0=(0-c7c6c5c4c3c2c1c0)mod 256;
通过预计算传入的参数C′7C′6C′5C′4C′3C′2C′1C′0,在进行8比特的S变换时,直接进行
y=S[x+C′7C′6C′5C′4C′3C′2C′1C′0mod 256]运算;
其中S表示8比特代替表,即256元的S盒;
对于16比特和32比特的密码砖S变换,则基于8比特密码砖的S变换运算得出。
7.根据权利要求6所述的一种基于可变S盒的软件加解密快速实现装置,其特征在于,所述中间值预计算模块中,按照如下方式简化G变换:
在进行16比特的加密的G变换时,参数各个位为B7B6B5B4B3B2B1B0,则G变换的运算为
其中b1=S[b+C′7C′6C′5C′4C′3C′2C′1C′0mod 256],a、b分别为输入的16比特x按字节分成的高、低8比特。
8.根据权利要求5所述的一种基于可变S盒的软件加解密快速实现装置,其特征在于,所述密码砖分类及并行运算模块具体用于:
将每层密码砖按地址和位宽重新标识和分类,并按照下式制定密码砖地址掩码:
m=(w<<v1)|(w<<v2)|...|(w<<vn)
p=(u1<<v1)|(u2<<v2)|...|(un<<vn)
其中n表示一层中一类位宽的密码砖个数;w表示每类位宽的密码砖元素最大值;vi表示一层中每个密码砖移到最右边,需要移动的最低位数,i=1,2,...,n;ui表示优化后一层中每个密码砖模加运算结果;m表示密码砖地址掩码;p表示优化后一层中所有密码砖模加运算结果或运算;
对于4比特、8比特密码砖的并行运算,包括:
对4比特、8比特密码砖对应的参数与掩码进行高、低位的拆分,得到对应的m_l、m_h、p_l、p_h,其中m_l表示对4比特和8比特密码砖的掩码拆分后的低位掩码整合后的结果,m_h表示对4比特和8比特密码砖的掩码拆分后的高位掩码整合后的结果,p_l表示对4比特密码砖的参数和8比特密码砖的参数及m_l整合后的结果,p_h表示对4比特密码砖的参数和8比特密码砖的参数及m_h整合后的结果;进而得到并行加密运算公式为:
y=((x&m_l)+p_l)^(x&m_h)^p_h
对于16比特、32比特密码砖的并行运算,包括:将掩码与参数进行拆分,基于8比特密码砖的并行运算进行16比特、32比特密码砖的并行运算。
9.一种芯片,包括处理器和接口,其特征在于,所述处理器用于读取指令以执行权利要求1至4中任一项所述的一种基于可变S盒的软件加解密快速实现方法。
10.一种计算机可读存储介质,所述存储介质内存储有计算机可执行程序,其特征在于,所述计算机可执行程序被处理器执行时,实现权利要求1至4中任一项所述的一种基于可变S盒的软件加解密快速实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211497187.1A CN115883065B (zh) | 2022-11-26 | 2022-11-26 | 一种基于可变s盒的软件加解密快速实现方法、装置、芯片及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211497187.1A CN115883065B (zh) | 2022-11-26 | 2022-11-26 | 一种基于可变s盒的软件加解密快速实现方法、装置、芯片及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115883065A CN115883065A (zh) | 2023-03-31 |
CN115883065B true CN115883065B (zh) | 2024-02-20 |
Family
ID=85764204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211497187.1A Active CN115883065B (zh) | 2022-11-26 | 2022-11-26 | 一种基于可变s盒的软件加解密快速实现方法、装置、芯片及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115883065B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014182816A2 (en) * | 2013-05-07 | 2014-11-13 | Tomkow Terence A | One-time pad communications network |
CN104168032A (zh) * | 2014-08-16 | 2014-11-26 | 复旦大学 | 兼容LTE和WiMAX的4并行度、基-16高性能Turbo译码器 |
CN107425963A (zh) * | 2017-05-09 | 2017-12-01 | 上海众人网络安全技术有限公司 | 一种密码墙的构建方法及系统 |
GB201809006D0 (en) * | 2018-06-01 | 2018-07-18 | Advanced Risc Mach Ltd | Efficient unified hardware implementation of multiple ciphers |
CN110532763A (zh) * | 2019-09-03 | 2019-12-03 | 华中农业大学 | 一种基于高阶正形置换的密码构造方法及系统 |
CN114629622A (zh) * | 2022-02-22 | 2022-06-14 | 广东省绿算技术有限公司 | 基于fpga的国密算法加速运算控制方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114363817A (zh) * | 2022-03-21 | 2022-04-15 | 杭州涂鸦信息技术有限公司 | 智能锁解锁方法、客户端以及智能锁 |
-
2022
- 2022-11-26 CN CN202211497187.1A patent/CN115883065B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014182816A2 (en) * | 2013-05-07 | 2014-11-13 | Tomkow Terence A | One-time pad communications network |
CN104168032A (zh) * | 2014-08-16 | 2014-11-26 | 复旦大学 | 兼容LTE和WiMAX的4并行度、基-16高性能Turbo译码器 |
CN107425963A (zh) * | 2017-05-09 | 2017-12-01 | 上海众人网络安全技术有限公司 | 一种密码墙的构建方法及系统 |
GB201809006D0 (en) * | 2018-06-01 | 2018-07-18 | Advanced Risc Mach Ltd | Efficient unified hardware implementation of multiple ciphers |
CN110532763A (zh) * | 2019-09-03 | 2019-12-03 | 华中农业大学 | 一种基于高阶正形置换的密码构造方法及系统 |
CN114629622A (zh) * | 2022-02-22 | 2022-06-14 | 广东省绿算技术有限公司 | 基于fpga的国密算法加速运算控制方法及装置 |
Non-Patent Citations (1)
Title |
---|
Z 密码算法设计方案;郑建华;《密码学报》;第579–590页 * |
Also Published As
Publication number | Publication date |
---|---|
CN115883065A (zh) | 2023-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bansod et al. | Implementation of a new lightweight encryption design for embedded security | |
Liu et al. | Efficient implementation of NIST-compliant elliptic curve cryptography for 8-bit AVR-based sensor nodes | |
US8184806B2 (en) | Table masking for resistance to power analysis attacks | |
JP5229315B2 (ja) | 共通鍵暗号機能を搭載した暗号化装置及び組込装置 | |
US20110064225A1 (en) | Security countermeasure for power analysis attacks | |
CN107147487B (zh) | 对称密钥随机分组密码 | |
CN102006161B (zh) | 一种对称密钥加密的非线性变换方法及其实现装置 | |
KR100800468B1 (ko) | 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법 | |
WO2007083528A1 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
US20090136025A1 (en) | Method for scalarly multiplying points on an elliptic curve | |
Zhang et al. | LAC: A lightweight authenticated encryption cipher | |
CN112636899B (zh) | 一种轻量化s盒设计方法 | |
Kim et al. | Compact implementations of HIGHT block cipher on IoT platforms | |
Bhavani et al. | Modified AES using dynamic S-box and DNA cryptography | |
CN114362913A (zh) | 基于超混沌系统与dna运算的图像加密方法及装置 | |
KR101506499B1 (ko) | 마스킹이 적용된 seed를 이용한 암호화 방법 | |
CN112134691B (zh) | 一种部件可重复的nlcs分组密码实现方法、装置及介质 | |
CN115883065B (zh) | 一种基于可变s盒的软件加解密快速实现方法、装置、芯片及存储介质 | |
CN111478766B (zh) | 一种分组密码meg实现方法、装置及存储介质 | |
Sehrawat et al. | Performance Evaluation of Newly Proposed Lightweight Cipher, BRIGHT. | |
Imran et al. | A systematic study of lattice-based NIST PQC algorithms: From reference implementations to hardware accelerators | |
AbuJoodeh | Exploring and Adapting AES Algorithm for Optimal Use as a Lightweight IoT Crypto Algorithm | |
CN114338049B (zh) | 基于模归约的国密算法sm2的快速实现方法及系统 | |
CN112737767B (zh) | 抗差分功耗分析与时间攻击的消息认证码生成方法及系统 | |
Sehrawat et al. | Design considerations of lightweight block ciphers for low-cost embedded devices |
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 |