CN114553424A - Zuc-256流密码轻量级硬件系统 - Google Patents
Zuc-256流密码轻量级硬件系统 Download PDFInfo
- Publication number
- CN114553424A CN114553424A CN202210168983.4A CN202210168983A CN114553424A CN 114553424 A CN114553424 A CN 114553424A CN 202210168983 A CN202210168983 A CN 202210168983A CN 114553424 A CN114553424 A CN 114553424A
- Authority
- CN
- China
- Prior art keywords
- bit
- carry
- adder
- shift register
- zuc
- 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.)
- Granted
Links
- 238000004364 calculation method Methods 0.000 claims abstract description 46
- 239000013598 vector Substances 0.000 claims description 21
- 230000006798 recombination Effects 0.000 claims description 3
- 238000005215 recombination Methods 0.000 claims description 3
- 230000008521 reorganization Effects 0.000 claims description 2
- 238000013461 design Methods 0.000 abstract description 50
- 238000000034 method Methods 0.000 abstract description 3
- 230000008569 process Effects 0.000 abstract description 2
- 230000008707 rearrangement Effects 0.000 abstract 1
- 238000004422 calculation algorithm Methods 0.000 description 41
- 238000004891 communication Methods 0.000 description 7
- 230000009467 reduction Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000011160 research Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 102100023337 Chymotrypsin-like elastase family member 3A Human genes 0.000 description 1
- 101000907964 Homo sapiens Chymotrypsin-like elastase family member 3A Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Images
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/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
-
- 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
本发明提出了一种ZUC‑256流密码轻量级硬件系统,包括流密码生成结构和标签值计算结构。流密码生成结构包括线性反馈移位寄存器、位重组层和有限状态自动机。线性反馈移位寄存器中采用进位保存加法器进行合并计算,并提出了两种ZUC‑256流密码的结构,用于减少线性反馈移位寄存器中的关键路径延迟。标签值计算结构采用96位寄存器,根据流密码生成结构所生成的32位流密码进行标签值的计算,并输出64位标签值。标签值计算结构在一个时钟周期可以并行处理32位消息,节省了大量的计算时间。本发明相较于现有的设计,使用了更少的资源,能够实现高吞吐量,可以在0.71us对128字节的数据进行加密。
Description
技术领域
本发明属于应对于5G通信和量子计算机的流密码技术领域,具体涉及一种ZUC-256流密码轻量级硬件系统。
背景技术
流密码是一种对称性的密码算法,它可以很容易地在硬件中实现并且得到很高的性能。由于流密码在加密和解密过程中速度快,并且在传播过程中误差小,所以经常被用于无线通信。ZUC-128和ZUC-256都是流密码。ZUC-128算法能够提供128位的安全性,但由于下一代5G通信和量子化的发展,ZUC-128在不久的将来将无法满足要求。基于以上原因,作为ZUC-128的升级版本,ZUC-256算法于2018年被提出。ZUC-256算法一共包括两个子算法,分别是ZUC流密码(ZUC)和完整性算法(EIA3)。ZUC-256算法的输入来自一个256位的密钥和一个184位的初始向量,在输出阶段每个周期输出一个32位的流密码。EIA3算法基于ZUC流密码产生的结果,该算法可以通过判断信息的每一个比特来计算出一个标签(Tag)结果,该Tag结果用作数字签名。
目前关于ZUC-256的硬件实现的研究较少,然而,对于ZUC-128的硬件设计已经有了大量的研究。尽管ZUC-256相较于ZUC-128做出一些变化,但是ZUC-128的结构依旧对于ZUC-256具有参考价值。Wang等人在2011年提出了三种不同的优化的架构来实现ZUC-128,并且比较了这三种架构的整体性和复杂性(参见非专利文献1)。2012年Wang等人提出一种高吞吐率的结构(参见非专利文献2),但是该结构消耗了太多的资源。2016年,一个基于ZUC-256的机密性算法(EEA3)的架构被提出(参见非专利文献3)。2020年Wang等人提出一种五级流水的ZUC-256流密码实现方案,其吞吐率达到了3.687Gbps(参见非专利文献4)。由于ZUC算法主要用于通信传输信息的加密,因此常常在资源受限设备上进行使用,所以针对于ZUC算法的低资源设计尤为关键。
非专利文献1:LIU Zongbin et al.Efficient pipelined stream cipher ZUCalgorithm in FPGA[C].First Int’l Workshop on ZUC Algorithm,China.2010.
非专利文献2:ZHANG Lingchen,et al.Evaluating the OptimizedImplementations of SNOW3G and ZUC on FPGA[C].2012 IEEE 11th InternationalConference on Trust,Security and Privacy in Computing andCommunications.IEEE,2012.
非专利文献3:M.Falaq,S.Abdulhayan.LTE security:EEA-3 using ZUCalgorithm[J].Int.J Innovative Research in Computer and CommunicationEngineering,Vol.4,Issues 7,2016.
非专利文献4:WANG Yuankai,WU Liji,ZHANG Xiangmin,XU Ke and YANG Wei.AHardware Implementation of ZUC-256 Stream Cipher[C].2020 IEEE 14thInternational Conference on Anti-counterfeiting,Security,and Identification,pp.94-97,2020.
发明内容
本发明针对现有技术中的不足,提供一种ZUC-256流密码轻量级硬件系统。
为实现上述目的,本发明采用以下技术方案:
ZUC-256流密码轻量级硬件系统,包括流密码生成结构和标签值计算结构,所述流密码生成结构包括线性反馈移位寄存器、位重组层和有限状态自动机,其特征在于:
所述线性反馈移位寄存器包含16个31位的向量(s0,s1,...,s15),线性反馈移位寄存器采用进位保存加法器对其中的五个向量进行合并计算,计算的结果与有限状态自动机中得到的31位输入u相加得到新的向量,完成对线性反馈移位寄存器中16个向量的不断更新,u通过将来自于有限状态自动机的反馈值W移位1比特得到;所述位重组层使用线性反馈移位寄存器中的8个向量完成4个32位的数据X0、X1、X2和X3的填充;所述有限状态自动机包含两个存储单元R1和R2,这两个存储单元通过来自于位重组层的输出X0、X1、X2和X3不断更新,并由这两个存储单元生成新的W;所述线性反馈移位寄存器包含初始化阶段和工作阶段,在初始化阶段,W被送入线性反馈移位寄存器进行计算;在工作阶段,W被置零,由位重组层和有限状态自动机来计算出32位流密码;
所述标签值计算结构采用96位寄存器,根据流密码生成结构所生成的32位流密码进行标签值的计算,并输出64位标签值。
为优化上述技术方案,采取的具体措施还包括:
进一步地,所述线性反馈移位寄存器采用进位保存加法器,并根据如下计算公式在初始化阶段进行合并计算:
(215s15+217s13+221s10+220s4+28s0+s0+u)mod(231-1)=s15
式中,mod表示取模。
进一步地,所述线性反馈移位寄存器将三个数据A、B、C输入第一个进位保存加法器,输出的进位以及加法和再输入与第一个进位保存加法器级联的第一个普通加法器;将三个数据D、E、F输入第二个进位保存加法器,输出的进位以及加法和再输入与第二个进位保存加法器级联的第二个普通加法器;将X0和R1输入第一个乘法器,第一个乘法器的输出与R2共同输入第三个普通加法器,第三个普通加法器输出的结果循环左移1位;将第一个普通加法器的输出、第二个普通加法器的输出和循环左移1位后的结果一同输入第三个进位保存加法器,输出的进位以及加法和再输入与第三个进位保存加法器级联的第三个普通加法器,得到最终的计算结果;其中,数据A、B、C、D、E和F分别是215s15、217s13、221s10、220s4、28s0和s0。
进一步地,所述线性反馈移位寄存器将三个数据A、B、C输入第一个进位保存加法器,输出的进位再输入与第一个进位保存加法器级联的第一个1位移位寄存器中;将三个数据D、E、F输入第二个进位保存加法器,输出的进位再输入与第一个进位保存加法器级联的第二个1位移位寄存器中;将第一个1位移位寄存器的输出结果、第二个1位移位寄存器的输出结果以及第二个进位保存加法器输出的加法和一同输入第三个进位保存加法器中,输出的进位再输入与第三个进位保存加法器级联的第三个1位移位寄存器中;将第一个进位保存加法器输出的加法和、第三个进位保存加法器输出的加法和以及第三个1位移位寄存器的输出结果一同输入第四个进位保存加法器中,输出的进位再输入与第三个进位加法器级联的第四个1位移位寄存器中;将第四个1位移位寄存器的输出结果和第四个进位保存加法器的加法和一同输入第一个普通加法器中;将X0和R1输入第一个乘法器中,输出的结果与R2一同输入第二个普通加法器中;将第二个普通加法器的输出结果输入第五个1位移位寄存器中,输出的结果与第一个普通加法器的输出结果一同输入第三个普通加法器中;使用数据选择器来选取第一个普通加法器和第三个普通加法器的输出;其中,数据A、B、C、D、E和F分别是215s15、217s13、221s10、220s4、28s0和s0。
进一步地,所述标签值计算结构使用一个96位的寄存器来保存连续三个周期中产生的32位流密码,每当产生一个新的32位流密码时,该流密码的值从96位寄存器的低32位处输入,同时将该96位寄存器的高32位输出抛弃。
进一步地,所述标签值计算结构将96位寄存器中保存的第一组64位数据作为标签初始值进行存储。
进一步地,所述标签值计算结构将32位流密码和明文M输入选择器中,明文M的每一位数据通过选择器来按位选取32位流密码和常数0,选取的数据存入各自对应的寄存器Wi,i表示明文M的位数,选取的数据和标签初始值通过多个异或器,输出异或的结果作为最终的标签值。
进一步地,所述明文M的每一位数据通过选择器来按位选取32位流密码和常数0,选取规则如下:
如果明文M的第i位m(i)为0,则对应的寄存器Wi将被设置为0;
如果明文M的第i位m(i)为1,则对应的寄存器Wi将被设置为本周期内96位寄存器右移i位的低32位值。
本发明的有益效果是:本发明进行了两种不同的基于FPGA的架构来设计与实现ZUC-256的流密码和ELA3算法,这两种基于ZUC-256算法在资源上相较于ZUC-128的设计更少,面积上分别减少38.48%和30.90%,更加有利于在资源受限的场景下使用。并且针对EIA3算法进行了硬件设计,该设计可以在0.71us的时间内对128字节的数据进行加密。
附图说明
图1是ZUC-256流密码生成结构工作阶段的流程示意图。
图2a和图2b是ZUC-256中使用的两种不同加法器的示意图,分别表示串行模加结构和并行模加结构。
图3是本发明设计的第一种线性反馈移位寄存器的示意图。
图4是本发明设计的第二种线性反馈移位寄存器的示意图。
图5是ZUC-256标签值计算结构的示意图。
具体实施方式
现在结合附图对本发明作进一步详细的说明。
本发明所提出的ZUC-256流密码轻量级硬件系统,包括流密码生成结构和标签值计算结构,下面从ZUC-256流密码算法和EIA3算法这两方面进行说明。
一、ZUC-256流密码算法
ZUC-256流密码算法包括三个逻辑层次:线性反馈移位寄存器(Linear FeedbackShift Register,LFSR)、位重组(Bit Recombination,BR)和有限状态自动机F(FiniteState Machine,FSM)。ZUC-256流密码将一个256位的原始密匙K和一个184位的初始向量IV作为输入,并在每个循环内输出32位密码。
LFSR层有16个31位的向量(s0,s1,...,s15),并包含两个阶段,分别为初始化阶段和工作阶段。在初始化阶段,LFSR层的每个向量是由位常数D、256位初始密钥K和184位初始向量IV的组合。然后,LFSR层通过将s15,s13,s10,s4,s0合并计算,得到的结果与FSM层中得到的一个名为u的31位输入相加得到新的s15。u是通过将W移位一比特得到的,而W来自于FSM层。在16个向量向右移动后,s15得到一个新的数值。工作阶段与初始化阶段的区别是,在工作阶段时W将被设置为零。
BR层使用8个31位来自于LFSR层的向量来计算出4个32位的数据,分别为X0、X1、X2和X3。在ZUC-256中,选取s0,s2,s5,s7,s9,s11,s14,s15作为输入,生成的四个结果分别满足公式:X0=s15H||s14L;X1=s11L||s9H;X2=s7L||s5H;X3=s2L||s0H。
FSM层包含两个存储单元,这两个存储单元R1和R2分别来自于BR层的输出X0、X1、X2和X3,并且由这两个存储单元来生成新的W值。存储单元的初始值均设置为0。在FSM层中,需要通过加法、异或和S-box运算以得到结果。在ZUC-256中,S-box的值与ZUC-128相比没有发生变化,依旧使用两个不同的S-box,每个S-box使用两次。
ZUC-256流密码在工作状态下的结构图如图1所示。ZUC-256流密码每次运算需要进行32轮的初始化运算,前32轮的计算使用W移位一比特得到的新的16个向量的组合来产生新的s15向量,然后将LFSR层中的16个向量逐一向右移动。从第33轮开始,执行与前32轮相同的操作但是此时的W值应被设置为零,每一轮的运算都可以连续产生32位流密码结果。ZUC算法在初始化阶段不输出结果。
在ZUC-256流密码生成结构中,整体结构运行的主要时延来自于LFSR层中的七个数相加取模运算。对于BR层来说,因为只需要改变LFSR层向量的位置,基本上不会产生很大的关键路径延时。FSM层的计算来自于加法运算、异或运算和S-box检索替换操作,所以FSM层的电路延迟比LFSR层小得多。因此,ZUC-256流密码生成结构的关键路径延迟是在LFSR层,为了实现ZUC-256的高性能设计,应该减少这部分延迟。
LFSR层包含两个阶段,分别为初始化阶段和工作阶段。在初始化阶段,LFSR层需要计算以下公式:
(215s15+217s13+221s10+220s4+28s0+s0+u)mod(231-1)=s15
对于上述公式,可以看成计算多次A+B mod(231-1),针对两个数的相加取模,图2a和图2b中的两种加法器均可以完成以上操作。对于串行模加结构,一共使用两个31位加法器,第一个加法器对于输入数据进行加法操作,第二个加法器对于第一步得到进位和加法和进行相加,得到模约减后的结果。该结构一共使用了两个加法器,关键路径同样是来自于两个级联的加法器。对于并行模加结构,同样使用了两个加法器,但是两个加法器分别计算A+B和A+B+I,再通过上方的加法器中产生的进位来选择最终的加法结果。相较于串行模加结构,该加法器同样使用了两个加法器,但是第二个加法器的输入为三个,这会造成该次加法的关键路径增加,但是由于加法器是并行结构,关键路径显著少于串行模加结构。
基于以上的两种不同的加法器,本发明设计了两种ZUC-256流密码生成结构。
(1)ZUC-256流密码生成结构1
在LFSR层的初始化阶段,一共需要对七个数字进行加法操作,工作阶段则需要加六个数字。因此,如果直接使用上述加法器,产生的电路的关键路径延迟将是不可忽略的。但是对于多个数据相加,只需要在最后阶段计算出精确的数值,在中间阶段,只需要尽量减少数据相加带来的关键路径延时就可以了。进位保存加法器(Carry Save Adder,CSA)是一种关键路径延时很小,并且可以将多个数据组合相加的加法器,同样,该加法器无法得到最终的加法和。该加法器的原理是,进位和加法和的每一位都是独立产生的,当加法器的位数增加后,对于关键路径没有任何影响,只会增加加法器的资源面积,每次加法产生结果只需要几个门的延时,并且生成三个数据相加的进位和加法和。当输入的数据为3个时,将一个CSA加法器和一个普通加法器级联可以快速得到三个数据的加法结果。
使用这样级联的加法器可以快速的完成七个输入数据的加法操作。在本发明中,一共使用了包含CSA加法器的两层的级联结构,在每一层中,输入输出的长度被扩大4位。当所有的加法都完成后,再使用串行模加结构对数据进行模约减操作。由于进位和加法和的结果小于231,该结构只需要进行一次模约减操作。
该ZUC-256流密码生成结构1的LFSR层结构如图3所示。在这样的设计中每轮计算一共使用三个时钟周期。在第一个时钟周期中,除了u=W<<1以外的六个数字将被相加,同时计算出u。在第二个时钟周期中,将第一步得到的六个数据相加的结果与u相加。在第三个周期对16个线性反馈移位寄存器中的数据进行移位操作,最后得到新的s15的值。对于FSM层,需要进行加法、异或和S-box等操作,与BR层相比,FSM层的电路延迟较大。由于FSM层在每个迭代中使用三个时钟,因此可以将FSM层的计算分解成三个时钟来完成。
如图3所示,将三个数据A、B、C输入第一个进位保存加法器,输出的进位以及加法和再输入与第一个进位保存加法器级联的第一个普通加法器;将三个数据D、E、F输入第二个进位保存加法器,输出的进位以及加法和再输入与第二个进位保存加法器级联的第二个普通加法器;将X0和R1输入第一个乘法器,第一个乘法器的输出与R2共同输入第三个普通加法器,第三个普通加法器输出的结果循环左移1位;将第一个普通加法器的输出、第二个普通加法器的输出和循环左移1位后的结果一同输入第三个进位保存加法器,输出的进位以及加法和再输入与第三个进位保存加法器级联的第三个普通加法器,得到最终的计算结果;其中,数据A、B、C、D、E和F分别是215s15、217s13、221s10、220s4、28s0和s0。
最后,当电路运行在工作阶段时,由于生成的密钥在每三个周期内只产生一次,在第一个周期和最后两个时钟周期中会产生不需要的值。因此,需要在第二和第三个时钟周期设置一个信号,以确保在计算EIA3算法时可以使用准确的密钥。
(2)ZUC-256流密码生成结构2
在ZUC-256流密码生成结构1的设计中,如果每个CSA加法器的进位和加法和并不完全计算出来,等到最后的时候再计算,那么电路的关键路径将会极大减少。受到启发,在ZUC-256流密码生成结构2中,使用多个CSA加法器级联,并且由于单个CSA加法器的关键路径很低,在同一个周期中计算多个级联CSA加法器。
在第一层中,该结构使用两个CSA加法器对于六个数据同时进行加法操作,这样产生了两个进位和两个加法和。对于前一级中CSA加法器产生的进位在后级中进行加法操作,需要将进位值向左移动一位。当六个数值的加法计算结束之后,首先将最后一级CSA加法器中的进位和加法和相加。这里的加法操作使用一次并行模加结构的加法器,因此得到的结果就是模约减后的结果。ZUC-256流密码生成结构2的LFSR层结构如图4所示。
由于本发明的目标是通过达到更高的频率来提高ZUC-256流密码的吞吐量,因此对于电路结构的设计思路是,在初始化阶段将LFSR层的计算分割成三个周期,但是在工作阶段由于W不参与计算,因此在工作阶段将其分割成两个周期。在初始化阶段,用第一个周期来计算三层级联的四个CSA加法器和u,其中u是通过将W向左移动一位得到的。在第二个周期中,使用一个并行模加加法器来计算六个输入数据之和的模约减。在最后一个周期中,同样再使用一次并行模加加法器,并得到最终结果。在工作阶段,W的值不在参与运算,此时只需要计算六个数字的总和,当第一个并行模加加法器计算完成后,这个结果便是最终结果。同样的,由于LFSR层的周期减少,使得该结构不能使用三个周期内计算BR层和FSM层。幸运的是,这两层的电路延迟很小,可以在两个周期内完成并且不影响整体运行的频率。
如图4所示,将三个数据A、B、C输入第一个进位保存加法器,输出的进位再输入与第一个进位保存加法器级联的第一个1位移位寄存器中;将三个数据D、E、F输入第二个进位保存加法器,输出的进位再输入与第一个进位保存加法器级联的第二个1位移位寄存器中;将第一个1位移位寄存器的输出结果、第二个1位移位寄存器的输出结果以及第二个进位保存加法器输出的加法和一同输入第三个进位保存加法器中,输出的进位再输入与第三个进位保存加法器级联的第三个1位移位寄存器中;将第一个进位保存加法器输出的加法和、第三个进位保存加法器输出的加法和以及第三个1位移位寄存器的输出结果一同输入第四个进位保存加法器中,输出的进位再输入与第三个进位加法器级联的第四个1位移位寄存器中;将第四个1位移位寄存器的输出结果和第四个进位保存加法器的加法和一同输入第一个普通加法器中;将X0和R1输入第一个乘法器中,输出的结果与R2一同输入第二个普通加法器中;将第二个普通加法器的输出结果输入第五个1位移位寄存器中,输出的结果与第一个普通加法器的输出结果一同输入第三个普通加法器中;使用数据选择器来选取第一个普通加法器和第三个普通加法器的输出;其中,数据A、B、C、D、E和F分别是215s15、217s13、221s10、220s4、28s0和s0。
二、EIA3算法
EIA3算法使用通用哈希算法原理生成Tag值。如同任何其他形式的哈希算法加密,EIA3算法可以将任意长度的信息转化为指定长度的Tag值,信息的微小变化会导致Tag值发生显著变化,常用于数字签名中。
在EIA3算法中,根据信息中的每个比特的值对Tag值进行迭代。对于ZUC-256的EIA3算法来说,如果当前信息的值为‘1’,那么新的Tag值就是旧的Tag值和32位流密码的异或结果,且用于计算的32位流密码每次只向右移动一位。当信息检索完成后,ZUC-256流密码再向右移动一位,并且执行同样的操作。在ZUC-256中,Tag值的长度t一共有三个版本,分别为32位、64位和128位。Tag的初始值被定义为与Tag长度相等的流密码的第一组,设置信息M的长度为l。Tag的计算过程如下表所示的算法1。
表1 EIA3算法
EIA3算法产生的Tag值的计算是基于ZUC-256流密码算法的,并且相较于ZUC-128中的算法做出了较大改动。在本发明中,EIA3的输出使用64位Tag值。由于流密码每轮输出32位,Tag值的加载需要两个周期。从表1可以看出,如果Tag的长度为64位,Tag的第一次计算将从第64位开始。所以该结构需要在第五个周期计算Tag值(例如:ZUC-256流密码生成结构1中每三个周期生成32位流密码,三个周期中,第二个数据是正确的流密码,因此对于64位Tag,起始数据需要64位,从第五个周期开始)。由于Tag值的计算在每个迭代中只移动一位,这样在每个周期中只计算一次会拖慢运算速度,在本发明的设计中,单个周期可以对32位的消息进行处理。
因为流密码每次产生32位,而Tag值的长度是64,在标签值计算结构中使用一个96位的寄存器来保存连续的三个周期中的产生的各32位流密码。每当产生一个新的32位流密码时,将该流密码的值从96位寄存器的低32位处输入,同时将96位寄存器的高32位输出抛弃。如图5所示,每个明文信息被设计成一个选择器。如果信息的i位为0,Wi寄存器将被设置为0;如果信息的i位为1,Wi寄存器将被设置为本周期内96位寄存器右移i位的最后32位值。这样一个时钟周期可以并行处理32位消息,节省了大量的计算时间。如图5所示,输入信息的每一位作为选择器的输入。从第五个周期开始第一组64位数据作为Tag初始值被存储。然后将96位寄存器内数据清空。当96位寄存器被填充完96个数据时,32个选择器按照信息位为1或者0来选择流密码或者0。从信息位的低位开始选择96位寄存器的低64位,信息位每增加一位,96位寄存器向右移1位,这样每个周期可以完成32位信息的计算。
标签值计算结构的工作流程如下:
1)将32位流密码和明文M输入选择器中,明文M的每一位数据通过选择器来按位选取32位流密码和常数0,选取的数据存入各自对应的寄存器Wi,i表示明文M的位数;
2)将选取的数据和标签初始值通过多个异或器,输出异或的结果作为最终的标签值。
需要注意的是,当最后一组信息进入标签值计算结构时,需要在信息的最后一位加上一个比特‘1’,然后通过上述方法得到最终的Tag值。
三、实现结果与对比
在本发明中,使用FPGA对于两种ZUC-256流密码生成结构和标签值计算结构进行实现,并对比其性能。所有的设计均使用Vivado 2020.1进行综合,并且在Kintex-7 FPGA平台上进行实现,所有的设计均通过了后仿真。由于关于ZUC-256的硬件设计结果较少,在本发明中引入部分关于ZUC-256的软件设计结果进行对比。为了公平起见,在对于ZUC-256流密码的设计时,资源部分不包含EIA3算法的资源。
本发明的ZUC-256硬件实现与对比结果如表2所示。对比本发明的两个设计,ZUC-256流密码生成结构1可以达到更高的频率,并且使用了更少的资源,但是由于其在四个周期中才会产生一次有效的结果,因此吞吐量只有4.78Gbps。而对于ZUC-256流密码生成结构2来说,在结构上改进了其流水线结构,使用了更短的流水线,尽管在频率上不及ZUC-256流密码生成结构1,但是依旧可以达到更高的吞吐率,即6.72Gbps。与其他ZUC-256的硬件设计相比,ZUC-256流密码生成结构2可以达到更高的吞吐率,吞吐率提升了45.24%。与其他ZUC-256的RISC-V平台设计相比,本发明的设计在吞吐率上有着显著的提升。
表2 ZUC-256硬件实现结果和对比
表2中,其他设计1是指非专利文献WANG Yuankai,WU Liji,ZHANG Xiangmin,XUKe and YANG Wei.A Hardware Implementation of ZUC-256 Stream Cipher[C].2020IEEE 14th International Conference on Anti-counterfeiting,Security,andIdentification,pp.94-97,2020.中提出的设计;其他设计2是指非专利文献WEIMengmeng,YANG Guoqiang,and KONG Fanyu.”Software Implementation and Comparisonof ZUC-256,SNOW-V,and AES-256 on RISC-V Platform.″2021 IEEE InternationalConference on Information Communication and Software Engineering(ICICSE).IEEE,2021.中提出的设计。
此外,本发明还将ZUC-256的硬件设计结果与其他ZUC-128设计结果进行对比。从表3中可以看出,本发明的设计达到了更高的运行频率,这是因为分割了更多的流水线,使得整体结构上的关键路径减少。并且由于频率的提高,尽管本发明的设计使用了更多的周期,但是吞吐率并不多落后于其他的ZUC-128设计。并且,本发明的设计使用了更少的资源,因此在吞吐率/面积相较于其他的ZUC-128提升43.58%和54.95%。对于ZUC-256流密码生成结构1,在资源上相较于其他设计3和其他设计4分别减少38.48%和61.91%。
表3 ZUC-256硬件实现结果与ZUC-128硬件设计结果对比
表3中,其他设计3指的是非专利文献LIU Zongbin et al.Efficient pipelinedstream cipher ZUC algorithm in FPGA[C].First Int’l Workshop on ZUC Algorithm,China.2010.中提出的设计;其他设计4指的是非专利文献Paris Kitsos,NicolasSklavos,and Athanassios N.Skodras.″An FPGA implementation of the ZUC streamcipher.″2011 14th Euromicro Conference on Digital System Design.IEEE,2011.中提出的设计。
本发明的EIA3算法硬件实现主要使用ZUC-256流密码生成结构1产生的ZUC-256流密码。如表4所示,表中的Tag位宽均为64位。本发明设计的ZUC-256的标签值计算结构在资源上相较于单独的ZUC-256流密码生成结构2相比仅仅增加37个Slice块,在运行频率上与ZUC-256流密码生成结构2保持一致。此外,该设计使用流水线设计,一次性可以处理32比特数据,对一次128字节数据生成64位签名只需要0.71us。
表4 ZUC-256 EIA3算法硬件实现吞吐率结果
设计 | 平台 | 频率(Mhz) | 面积(Slices) | 时间(us) |
本设计 | Kintex-7 | 448 | 283 | 0.71 |
综上所述,本发明设计了两种不同流水线的ZUC-256硬件实现电路(即流密码生成结构)。第一种设计使用三级流水线,使用了更少的资源,达到了更高的频率;第二种设计使用两级流水结构,可以达到更大的吞吐率。与目前最快的ZUC-256流密码硬件设计相比,第二种设计在吞吐率上提升54.95%。此外,本发明还设计了一种针对于ZUC-256的EIA3算法的硬件结构(即标签值计算结构),仅仅使用37个Slice块的资源,对一次128字节数据生成64位签名只需要0.71us。此外,本发明的设计使用了更少的资源,相较于现有的设计,在资源上减少38.48%,更加适合于资源受限的场合。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (8)
1.ZUC-256流密码轻量级硬件系统,包括流密码生成结构和标签值计算结构,所述流密码生成结构包括线性反馈移位寄存器、位重组层和有限状态自动机,其特征在于:
所述线性反馈移位寄存器包含16个31位的向量(s0,s1,...,s15),线性反馈移位寄存器采用进位保存加法器对其中的五个向量进行合并计算,计算的结果与有限状态自动机中得到的31位输入u相加得到新的向量,完成对线性反馈移位寄存器中16个向量的不断更新,u通过将来自于有限状态自动机的反馈值W移位1比特得到;所述位重组层使用线性反馈移位寄存器中的8个向量完成4个32位的数据X0、X1、X2和X3的填充;所述有限状态自动机包含两个存储单元R1和R2,这两个存储单元通过来自于位重组层的输出X0、X1、X2和X3不断更新,并由这两个存储单元生成新的W;所述线性反馈移位寄存器包含初始化阶段和工作阶段,在初始化阶段,W被送入线性反馈移位寄存器进行计算;在工作阶段,W被置零,由位重组层和有限状态自动机来计算出32位流密码;
所述标签值计算结构采用96位寄存器,根据流密码生成结构所生成的32位流密码进行标签值的计算,并输出64位标签值。
2.如权利要求1所述的ZUC-256流密码轻量级硬件系统,其特征在于:所述线性反馈移位寄存器采用进位保存加法器,并根据如下计算公式在初始化阶段进行合并计算:
(215s15+217s13+221s10+220s4+28s0+s0+u)mod(231-1)=s15
式中,mod表示取模。
3.如权利要求2所述的ZUC-256流密码轻量级硬件系统,其特征在于:所述线性反馈移位寄存器将三个数据A、B、C输入第一个进位保存加法器,输出的进位以及加法和再输入与第一个进位保存加法器级联的第一个普通加法器;将三个数据D、E、F输入第二个进位保存加法器,输出的进位以及加法和再输入与第二个进位保存加法器级联的第二个普通加法器;将X0和R1输入第一个乘法器,第一个乘法器的输出与R2共同输入第三个普通加法器,第三个普通加法器输出的结果循环左移1位;将第一个普通加法器的输出、第二个普通加法器的输出和循环左移1位后的结果一同输入第三个进位保存加法器,输出的进位以及加法和再输入与第三个进位保存加法器级联的第三个普通加法器,得到最终的计算结果;其中,数据A、B、C、D、E和F分别是215s15、217s13、221s10、220s4、28s0和s0。
4.如权利要求2所述的ZUC-256流密码轻量级硬件系统,其特征在于:所述线性反馈移位寄存器将三个数据A、B、C输入第一个进位保存加法器,输出的进位再输入与第一个进位保存加法器级联的第一个1位移位寄存器中;将三个数据D、E、F输入第二个进位保存加法器,输出的进位再输入与第一个进位保存加法器级联的第二个1位移位寄存器中;将第一个1位移位寄存器的输出结果、第二个1位移位寄存器的输出结果以及第二个进位保存加法器输出的加法和一同输入第三个进位保存加法器中,输出的进位再输入与第三个进位保存加法器级联的第三个1位移位寄存器中;将第一个进位保存加法器输出的加法和、第三个进位保存加法器输出的加法和以及第三个1位移位寄存器的输出结果一同输入第四个进位保存加法器中,输出的进位再输入与第三个进位加法器级联的第四个1位移位寄存器中;将第四个1位移位寄存器的输出结果和第四个进位保存加法器的加法和一同输入第一个普通加法器中;将X0和R1输入第一个乘法器中,输出的结果与R2一同输入第二个普通加法器中;将第二个普通加法器的输出结果输入第五个1位移位寄存器中,输出的结果与第一个普通加法器的输出结果一同输入第三个普通加法器中;使用数据选择器来选取第一个普通加法器和第三个普通加法器的输出;其中,数据A、B、C、D、E和F分别是215s15、217s13、221s10、220s4、28s0和s0。
5.如权利要求1所述的ZUC-256流密码轻量级硬件系统,其特征在于:所述标签值计算结构使用一个96位的寄存器来保存连续三个周期中产生的32位流密码,每当产生一个新的32位流密码时,该流密码的值从96位寄存器的低32位处输入,同时将该96位寄存器的高32位输出抛弃。
6.如权利要求5所述的ZUC-256流密码轻量级硬件系统,其特征在于:所述标签值计算结构将96位寄存器中保存的第一组64位数据作为标签初始值进行存储。
7.如权利要求6所述的ZUC-256流密码轻量级硬件系统,其特征在于:所述标签值计算结构将32位流密码和明文M输入选择器中,明文M的每一位数据通过选择器来按位选取32位流密码和常数0,选取的数据存入各自对应的寄存器Wi,i表示明文M的位数,选取的数据和标签初始值通过多个异或器,输出异或的结果作为最终的标签值。
8.如权利要求7所述的ZUC-256流密码轻量级硬件系统,其特征在于:所述明文M的每一位数据通过选择器来按位选取32位流密码和常数0,选取规则如下:
如果明文M的第i位m(i)为0,则对应的寄存器Wi将被设置为0;
如果明文M的第i位m(i)为1,则对应的寄存器Wi将被设置为本周期内96位寄存器右移i位的低32位值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210168983.4A CN114553424B (zh) | 2022-02-21 | 2022-02-21 | Zuc-256流密码轻量级硬件系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210168983.4A CN114553424B (zh) | 2022-02-21 | 2022-02-21 | Zuc-256流密码轻量级硬件系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114553424A true CN114553424A (zh) | 2022-05-27 |
CN114553424B CN114553424B (zh) | 2024-03-15 |
Family
ID=81677031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210168983.4A Active CN114553424B (zh) | 2022-02-21 | 2022-02-21 | Zuc-256流密码轻量级硬件系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114553424B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116594593A (zh) * | 2023-07-13 | 2023-08-15 | 上海芯炽科技集团有限公司 | 一种基于理查森外推法的数字微分器及其优化结构 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826959A (zh) * | 2010-05-14 | 2010-09-08 | 中国科学院软件研究所 | 一种面向字节的密钥流生成方法及加密方法 |
CN102684870A (zh) * | 2012-04-26 | 2012-09-19 | 重庆重邮信科通信技术有限公司 | 祖冲之算法密钥生成装置及方法 |
CN103260154A (zh) * | 2013-01-31 | 2013-08-21 | 上海铭源数码股份有限公司 | 一种基于128-eia3的完整性保护增强方法 |
CN103260156A (zh) * | 2012-02-15 | 2013-08-21 | 中国移动通信集团公司 | 密钥流生成装置及方法、机密性保护装置及方法 |
CN103813313A (zh) * | 2012-11-07 | 2014-05-21 | 中国科学院微电子研究所 | 一种祖冲之算法的硬件实现装置及方法 |
US20140189290A1 (en) * | 2012-12-28 | 2014-07-03 | Gilbert M. Wolrich | Instruction for fast zuc algorithm processing |
CN104219045A (zh) * | 2013-06-03 | 2014-12-17 | 中国科学院上海高等研究院 | Rc4 流密码生成器 |
US20150304102A1 (en) * | 2011-11-09 | 2015-10-22 | Kddi Corporation | Non-linear processor, stream-cipher encrypting device, stream-cipher decrypting device, mask processing method, stream-cipher encrypting method, stream-cipher decrypting method, and program |
CN110011798A (zh) * | 2019-04-08 | 2019-07-12 | 中国科学院软件研究所 | 一种zuc-256流密码算法的初始化方法和装置及通信方法 |
CN110034919A (zh) * | 2019-04-08 | 2019-07-19 | 中国科学院软件研究所 | 一种适用于zuc-256流密码算法的可变长度认证标签生成方法和通信方法及系统 |
CN112019322A (zh) * | 2019-05-30 | 2020-12-01 | 华为技术有限公司 | 密码流生成方法及其装置 |
CN112367155A (zh) * | 2020-10-13 | 2021-02-12 | 黑龙江大学 | 一种基于fpga的zuc加密系统ip核构建方法 |
CN112398639A (zh) * | 2020-11-04 | 2021-02-23 | 山东大学 | 一种Fountain轻量级加密算法的实现装置、方法及应用 |
CN113612609A (zh) * | 2021-08-27 | 2021-11-05 | 山东大学 | 一种Fruit-80超轻量级加密算法的硬件实现装置及方法 |
-
2022
- 2022-02-21 CN CN202210168983.4A patent/CN114553424B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826959A (zh) * | 2010-05-14 | 2010-09-08 | 中国科学院软件研究所 | 一种面向字节的密钥流生成方法及加密方法 |
US20150304102A1 (en) * | 2011-11-09 | 2015-10-22 | Kddi Corporation | Non-linear processor, stream-cipher encrypting device, stream-cipher decrypting device, mask processing method, stream-cipher encrypting method, stream-cipher decrypting method, and program |
CN103260156A (zh) * | 2012-02-15 | 2013-08-21 | 中国移动通信集团公司 | 密钥流生成装置及方法、机密性保护装置及方法 |
CN102684870A (zh) * | 2012-04-26 | 2012-09-19 | 重庆重邮信科通信技术有限公司 | 祖冲之算法密钥生成装置及方法 |
CN103813313A (zh) * | 2012-11-07 | 2014-05-21 | 中国科学院微电子研究所 | 一种祖冲之算法的硬件实现装置及方法 |
US20140189290A1 (en) * | 2012-12-28 | 2014-07-03 | Gilbert M. Wolrich | Instruction for fast zuc algorithm processing |
CN103260154A (zh) * | 2013-01-31 | 2013-08-21 | 上海铭源数码股份有限公司 | 一种基于128-eia3的完整性保护增强方法 |
CN104219045A (zh) * | 2013-06-03 | 2014-12-17 | 中国科学院上海高等研究院 | Rc4 流密码生成器 |
CN110011798A (zh) * | 2019-04-08 | 2019-07-12 | 中国科学院软件研究所 | 一种zuc-256流密码算法的初始化方法和装置及通信方法 |
CN110034919A (zh) * | 2019-04-08 | 2019-07-19 | 中国科学院软件研究所 | 一种适用于zuc-256流密码算法的可变长度认证标签生成方法和通信方法及系统 |
CN112019322A (zh) * | 2019-05-30 | 2020-12-01 | 华为技术有限公司 | 密码流生成方法及其装置 |
CN112367155A (zh) * | 2020-10-13 | 2021-02-12 | 黑龙江大学 | 一种基于fpga的zuc加密系统ip核构建方法 |
CN112398639A (zh) * | 2020-11-04 | 2021-02-23 | 山东大学 | 一种Fountain轻量级加密算法的实现装置、方法及应用 |
CN113612609A (zh) * | 2021-08-27 | 2021-11-05 | 山东大学 | 一种Fruit-80超轻量级加密算法的硬件实现装置及方法 |
Non-Patent Citations (1)
Title |
---|
"ZUC-256流密码算法", 密码学报, no. 02 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116594593A (zh) * | 2023-07-13 | 2023-08-15 | 上海芯炽科技集团有限公司 | 一种基于理查森外推法的数字微分器及其优化结构 |
CN116594593B (zh) * | 2023-07-13 | 2023-09-26 | 上海芯炽科技集团有限公司 | 一种基于理查森外推法的数字微分器及其优化结构 |
Also Published As
Publication number | Publication date |
---|---|
CN114553424B (zh) | 2024-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7299355B2 (en) | Fast SHA1 implementation | |
Satoh et al. | ASIC-hardware-focused comparison for hash functions MD5, RIPEMD-160, and SHS | |
US8411853B2 (en) | Alternate galois field advanced encryption standard round | |
CN111464308A (zh) | 一种实现多种哈希算法可重构的方法和系统 | |
JP4612680B2 (ja) | Md5ダイジェスティングを実行する装置および方法 | |
US5983252A (en) | Pseudo-random number generator capable of efficiently exploiting processors having instruction-level parallelism and the use thereof for encryption | |
CN112367158A (zh) | 一种加速sm3算法的方法、处理器、芯片及电子设备 | |
Kahri et al. | Efficient FPGA hardware implementation of secure hash function SHA-256/Blake-256 | |
CN114553424B (zh) | Zuc-256流密码轻量级硬件系统 | |
Sun et al. | Design and optimized implementation of the SHA-2 (256, 384, 512) hash algorithms | |
Bahadori et al. | FPGA implementations of 256-Bit SNOW stream ciphers for postquantum mobile security | |
Rachh et al. | Efficient implementations of S-box and inverse S-box for AES algorithm | |
Mohamed et al. | SHA-2 hardware core for virtex-5 FPGA | |
WO2010041307A1 (ja) | 暗号化装置 | |
Goswami et al. | FPGA Implementation of Modified SNOW 3G Stream Ciphers Using Fast and Resource Efficient Substitution Box | |
Mohanraj et al. | High performance GCM architecture for the security of high speed network | |
Caltagirone et al. | High throughput, parallelized 128-bit AES encryption in a resource-limited FPGA | |
Mr et al. | Design and Analysis of a new Stream Cipher based on Ring FCSR Automaton | |
Tuan et al. | Three-stage pipeline implementation for SHA2 using data forwarding | |
Lin et al. | The design of a high-throughput hardware architecture for the AES-GCM algorithm | |
TWI776474B (zh) | 單回合高階加密標準電路模組 | |
CN114626537B (zh) | 一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法 | |
Nandan et al. | Design of Improved Advance Encryption Standard Algorithm with Affine Transformation in S-Box for Performance Improvement in Field-Programmable Gate Arrays | |
Stefan | Hardware framework for the rabbit stream cipher | |
Xiao et al. | Optimization and Design of Eaglesong Hash Based on FPGA |
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 |