CN112350819B - 一种全流水线sms4加解密方法及系统 - Google Patents

一种全流水线sms4加解密方法及系统 Download PDF

Info

Publication number
CN112350819B
CN112350819B CN202011146350.0A CN202011146350A CN112350819B CN 112350819 B CN112350819 B CN 112350819B CN 202011146350 A CN202011146350 A CN 202011146350A CN 112350819 B CN112350819 B CN 112350819B
Authority
CN
China
Prior art keywords
encryption
bit
decryption
input
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011146350.0A
Other languages
English (en)
Other versions
CN112350819A (zh
Inventor
朱爱红
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Jiuzhou Electric Group Co Ltd
Original Assignee
Sichuan Jiuzhou Electric Group Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sichuan Jiuzhou Electric Group Co Ltd filed Critical Sichuan Jiuzhou Electric Group Co Ltd
Priority to CN202011146350.0A priority Critical patent/CN112350819B/zh
Publication of CN112350819A publication Critical patent/CN112350819A/zh
Application granted granted Critical
Publication of CN112350819B publication Critical patent/CN112350819B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种全流水线SMS4加解密方法及系统,采用基于Block RAM的全流水线处理架构,一次加解密变换过程中n轮密钥产生、n轮加解密的所有运算电路完全串行连接;通过Block RAM缓存多时钟周期中间运算数据、存储S盒查找表和固定参数查找表,所述中间运算数据包括密文、中间密钥、轮密钥和加解密触发;通过全流水线处理架构实现明文密文连续输入处理;通过双口Block RAM的读写时间差实现中间运算数据的多时钟周期延迟输出。本发明采用流水线架构实现SMS4算法,充分利用FPGA嵌入式Block RAM资源实现大量中间运算数据的多时钟周期缓存、多个轮密钥产生单元及加解密单元内的S盒查找表存储,最大限度减少可配置逻辑块的资源消耗,最大程度提高了信息吞吐率。

Description

一种全流水线SMS4加解密方法及系统
技术领域
本发明涉及数据加密技术领域,尤其涉及一种全流水线SMS4加解密方法及系统。
背景技术
SMS4算法是国内官方公布的第一个商用分组密码标准,也是中国无线局域网安全标准推荐使用的分组密码算法。该算法的分组长度和密钥长度均为128位,加密算法采用32轮非平衡Feistel结构。SMS4通过32轮非线性迭代后加上一个反序变换,只需要解密密钥是加密密钥的逆序,就能使解密算法和加密算法保持一致。
128比特初始明文分为4个32比特字,表示为(X0,X1,X2,X3),密文分为4个字,表示为(Y0,Y1,Y2,Y3)。假设Xj为32比特中间变量(4≤j≤35),SMS4加密变换为:
1)
Figure BDA0002739856460000011
2)(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32)。
其中,i=0,1,…,31,F是轮函数,RK是轮密钥,T是合成置换,R是反序变换。
第i轮SMS4加密为:(Xi,Xi+1,Xi+2,Xi+3)→(Xi+1,Xi+2,Xi+3,Xi+4)。
a.合成置换T:
Figure BDA0002739856460000012
的可逆变换,由非线性变换τ和线性变换L复合而成,即T(·)=L(τ(·))。
b.非线性变换τ:由4个并行的S盒构成。S盒是从
Figure BDA0002739856460000013
的一个非线性变换;
设输入为
Figure BDA0002739856460000021
输出为
Figure BDA0002739856460000022
(v0,v1,v2,v3)=τ(U)=(S(u0),S(u1),S(u2),S(u3))。
c.线性变换L:
Figure BDA0002739856460000023
Figure BDA0002739856460000024
<<i表示循环左移i个比特。
SMS4密钥扩展方案是将128比特的种子密钥扩展生成32个轮密钥。
1)128比特种子密钥MK分成4个字,表示为(MK0,MK1,MK2,MK3),其中
Figure BDA0002739856460000025
2)生成初始密钥
Figure BDA0002739856460000026
Figure BDA0002739856460000027
系统参数FK=(FK0,FK1,FK2,FK3)=(A3B1BAC6,56AA3350,677D9197,B27022DC)。
3)生成轮密钥
Figure BDA0002739856460000028
Figure BDA0002739856460000029
a.固定参数CK=(CK0,CK1,…,CK31),i=0,1,2,…,31。
Figure BDA00027398564600000210
CKi,j=(4×i+j)×7(mod 256)i=0,1,2,…,31,j=0,1,2,3。
b.变换T’与加密算法轮函数中的合成置换T基本相同,只是将其中的线性换换L换为L’,即T’(·)=L’(τ(·))
c.
Figure BDA00027398564600000211
SMS4解密变换为:
1)
Figure BDA00027398564600000212
Figure BDA00027398564600000213
2)(X0,X1,X2,X3)=R(X3,X2,X1,X0)。
第i轮SMS4解密表达为:(Xi+4,Xi+3,Xi+2,Xi+1)→(Xi+3,Xi+2,Xi+1,Xi)。
可编程逻辑器件实现SMS4算法是工程应用中的常用方式。FPGA(现场可编程门阵列)是可编程逻辑器件中的一种,是在传统逻辑电路和门阵列的基础上发展起来的一种半定制电路,即解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用逻辑单元阵列概念,基本结构包括可编程输入输出单元、可配置逻辑块、数字时钟管理模块、嵌入式Block RAM(块随机存储器)资源、布线资源、内嵌专用硬核以及底层内嵌功能单元。通过向静态存储单元加载编程数据来实现逻辑功能,存储在存储单元中的值决定逻辑单元的逻辑功能以及各逻辑单元模块之间或模块与I/O间的连接方式,并最终决定了FPGA所实现的功能,FPGA允许无限次的编程。FPGA利用LUT(查找表)来实现组合逻辑,每个LUT连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了即可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O。
流水线操作是将一个周期处理的逻辑进行分解在多个周期内实现,以提高逻辑的工作频率和可靠性。因为触发器之间存在多级组合逻辑,其延时为源触发器的延时、多级组合逻辑的延时、目的触发器的建立时间的总和。如果多级组合逻辑的级数太大,使延时增加,限制了触发器的工作时钟频率上限。此时,将组合逻辑分解,在其中加触发器,降低触发器之间的延时,因此提高了时钟频率上限。
FPGA实现SMS4算法通常采用单路串行处理架构,顶层控制电路循环启动单轮密钥产生电路、单轮加解密电路,经过32次重复运算后输出最终的密文或明文。传统的串行处理架构虽然能节省电路资源,但最大的缺点是一组明文或密文没有完成加密或解密变换之前,不能对下一组明文或密文进行接收处理,信息吞吐速率较低。
为了提升信息吞吐率,可以采用多路串行处理处理架构,同时可处理多组明文或密文,资源消耗是单路串行处理架构的N倍(N等于同时处理明/密文组数)。如果需要在系统工作时钟频率下实时处理明/密文,则N等于单路串行处理加解密变换延迟的系统工作时钟数。分析上述的SMS4算法可知,FPGA实现单路串行处理SMS4加密解密变换延迟时钟至少为102数量级,也就是说,如果要求实时处理,多路串行处理架构实现SMS4加密变换和解密变换比单路串行处理架构的资源消耗分别增加至少100倍,因此多路串行处理处理架构只适合同时处理明/密文组数要求不高的应用场景。
发明内容
为了解决上述问题,本发明提出一种全流水线SMS4加解密方法及系统,为了在可接受的资源消耗情况下最大程度提高信息吞吐率,本发明采用基于Block RAM的全流水线处理架构,一次加解密变换过程中n轮密钥产生、n轮加解密的所有运算电路(异或、存储、移位等)完全串行连接,所有存储均指定FPGA内嵌的Block RAM实现,包括加密触发、中间运算结果(中间密文、中间密钥、轮密钥)的多时钟周期缓存以及8n个S盒(256×8)、1个固定参数查找表(n×32)等的非易失存储。如果需要在系统工作时钟频率下实时处理明/密文,与多路串行处理架构相比,运算时间相当,可编程逻辑块资源消耗大幅度降低。
本发明的一种全流水线SMS4加解密方法,采用基于Block RAM的全流水线处理架构,一次加解密变换过程中n轮密钥产生、n轮加解密的所有运算电路完全串行连接,所述运算电路包括异或、存储和移位;通过Block RAM缓存多时钟周期中间运算数据、存储S盒查找表和固定参数查找表,所述中间运算数据包括密文、中间密钥、轮密钥和加解密触发;通过全流水线处理架构实现明文密文连续输入处理;通过双口Block RAM的读写时间差实现中间运算数据的多时钟周期延迟输出。
进一步的,根据输入的明/密文、种子密钥、加解密状态、触发信号、系统时钟和系统复位,控制单元通过流水线控制输出初始明/密文、初始密钥、密/明文、轮密钥读延时、固定参数、中间密钥、轮密钥、中间密文和完成信号;根据输入的中间密钥、固定参数、系统时钟和系统复位,n个轮密钥产生单元通过轮密钥产生运算输出新的中间密钥,所述轮密钥产生运算包括异或、存储和移位;根据输入的中间密文、轮密钥和轮密钥读延时、加解密状态、系统时钟和系统复位,n个加解密单元通过加解密运算输出新的中间密文,所述加解密运算包括异或、存储和移位。
进一步的,所述控制单元包括:存储固定参数的单口Block RAM、存储输入明/密文的双口Block RAM、存储触发的双口Block RAM、初始密钥生成子单元、完成信号产生子单元、密/明文输出子单元和流水线控制子单元。
进一步的,所述控制单元的存储固定参数的单口Block RAM中:
数据宽度为32比特,数据深度为n;
存储信息固定不变,工作期间不能进行写操作;
当系统复位无效时,读地址在系统时钟上升沿从0开始依次向上累加直到n-1停止;
n个地址的读数据输出到所述流水线控制子单元。
进一步的,所述控制单元的存储输入明/密文的双口Block RAM中:
数据宽度为128比特,数据深度≥n×9;
A端口写数据为所述控制单元和所述加解密系统的128比特明/密文输入,B端口读数据为所述控制单元的128比特初始明/密文输出;
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加;
B端口地址开始累加时间延迟A端口地址开始累加时间Td1满足以下公式:
Td1=Td2-Td3
其中,Td2为等待轮密钥产生所需的系统时钟个数,本方法加密为9,解密为n×9;Td3为双口Block RAM读数据等待时间。
进一步的,所述控制单元的存储触发的双口Block RAM中:
数据宽度为1比特,数据深度为≥(n×19+1);
A端口写数据为所述控制单元和所述加解密系统的触发输入,B端口读数据为所述完成信号产生子单元的输入;
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加;
B端口地址开始累加时间延迟A端口地址开始累加时间Td4满足以下公式:
Td4=Td5-Td3
其中,Td5为单组明/密文加解密完成所需系统时钟个数,本方法加密为n×11,解密为n×19+1。
进一步的,所述控制单元的初始密钥生成子单元包括双输入的128比特异或运算,其输入为128比特的系统参数即常量,以及种子密钥即系统外部输入,输出为所述控制单元的128比特初始密钥。
进一步的,所述控制单元的完成信号产生子单元中:
在系统复位无效时,在系统时钟上升沿采样所述存储触发的双口Block RAM输出的B端口读数据,作为所述控制单元和所述加解密系统的完成信号输出。
进一步的,所述控制单元的密/明文输出子单元中:
对流水线控制子单元输出的中间密文低128比特进行反序变换后,作为所述控制单元和所述加解密系统的128比特密/明文输出。
进一步的,所述控制单元的流水线控制子单元中:
n×m比特轮密钥读延时从高到低按m比特分为n组,第1组是第1个所述加解密单元的m比特轮密钥读延时输入,第2组是第2个所述加解密单元的m比特轮密钥读延时输入,依次类推,第n组是第n个所述加解密单元的m比特轮密钥读延时输入,其中m取二进制表示(n-1)×19-1对应的最短位数;
加密状态,第i组(i=1,2,…,n)轮密钥读延时Td6满足以下公式:
Td6=i-1;
解密状态,第i组(i=1,2,…,n)轮密钥读延时Td7满足以下公式:
Td7=(i-1)×19;
所述存储固定参数的单口Block RAM的读数据输出组合形成n×32比特固定参数,从高到低按32比特分为n组,第1组是第1个所述轮密钥产生单元的32比特固定参数输入,第2组是第2个所述轮密钥产生单元的32比特固定参数输入,依次类推,第n组是第n个所述轮密钥产生单元的32比特固定参数输入;
n×128比特中间密钥从高到低按128比特分为n组,第1组既是第1个所述轮密钥产生单元的128比特中间密钥输出,也是第2个所述轮密钥产生单元的128比特中间密钥输入;第2组既是第2个所述轮密钥产生单元的128比特中间密钥输出,也是第3个所述轮密钥产生单元的128比特中间密钥输入;依次类推,第n-1组既是第n-1个所述轮密钥产生单元的128比特中间密钥输出,也是第n个所述轮密钥产生单元的128比特中间密钥输入,第n组则只是第n个所述轮密钥产生单元的128比特中间密钥输出;
抽取每组128比特中间密钥的低32比特合并组成n×32比特的加解密轮密钥,从高到低按32比特分为n组;如果状态输入是加密,第1组作为第1个所述加解密单元的32比特输入轮密钥,第2组作为第2个所述加解密单元的32比特输入轮密钥,依次类推,第n组作为第n个所述加解密单元的32比特输入轮密钥;如果状态输入是解密,第1组作为第n个所述加解密单元的32比特输入轮密钥,第2组作为第n-1个所述加解密单元的32比特输入轮密钥,依次类推,第n组作为第1个所述加解密单元的32比特输入轮密钥;
n×128比特中间密文从高到低按128比特分为n组,第1组既是第1个所述加解密单元的128比特中间密文输出,也是第2个所述加解密单元的128比特中间密文输入;第2组既是第2个所述加解密单元的128比特中间密文输出,也是第3个所述加解密单元的128比特中间密文输入;依次类推,第n-1组既是第n-1个所述加解密单元的中间密文输出,也是第n个所述加解密单元的128比特中间密文输入,第n组则是第n个所述加解密单元的128比特中间密文输出以及所述密/明文输出子单元的输入。
本发明的一种全流水线SMS4加解密系统,包括:
控制单元,用于根据输入的明/密文、种子密钥、加解密状态、触发信号、系统时钟和系统复位,通过流水线控制输出初始明/密文、初始密钥、密/明文、轮密钥读延时、固定参数、中间密钥、轮密钥、中间密文和完成信号;
n个轮密钥产生单元,用于根据输入的中间密钥、固定参数、系统时钟和系统复位,通过轮密钥产生运算输出新的中间密钥,所述轮密钥产生运算包括异或、存储和移位;
n个加解密单元,用于根据输入的中间密文、轮密钥和轮密钥读延时、加解密状态、系统时钟和系统复位,通过加解密运算输出新的中间密文,所述加解密运算包括异或、存储和移位。
进一步的,所述控制单元包括:存储固定参数的单口Block RAM、存储输入明/密文的双口Block RAM、存储触发的双口Block RAM、初始密钥生成子单元、完成信号产生子单元、密/明文输出子单元和流水线控制子单元。
进一步的,所述控制单元的存储固定参数的单口Block RAM中:
数据宽度为32比特,数据深度为n;
存储信息固定不变,工作期间不能进行写操作;
当系统复位无效时,读地址在系统时钟上升沿从0开始依次向上累加直到n-1停止;
n个地址的读数据输出到所述流水线控制子单元。
进一步的,所述控制单元的存储输入明/密文的双口Block RAM中:
数据宽度为128比特,数据深度≥n×9;
A端口写数据为所述控制单元和所述加解密系统的128比特明/密文输入,B端口读数据为所述控制单元的128比特初始明/密文输出;
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加;
B端口地址开始累加时间延迟A端口地址开始累加时间Td1满足以下公式:
Td1=Td2-Td3
其中,Td2为等待轮密钥产生所需的系统时钟个数,本系统加密为9,解密为n×9;Td3为双口Block RAM读数据等待时间。
进一步的,所述控制单元的存储触发的双口Block RAM中:
数据宽度为1比特,数据深度为≥(n×19+1);
A端口写数据为所述控制单元和所述加解密系统的触发输入,B端口读数据为所述完成信号产生子单元的输入;
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加;
B端口地址开始累加时间延迟A端口地址开始累加时间Td4满足以下公式:
Td4=Td5-Td3
其中,Td5为单组明/密文加解密完成所需系统时钟个数,本系统加密为n×11,解密为n×19+1。
进一步的,所述控制单元的初始密钥生成子单元包括双输入的128比特异或运算,其输入为128比特的系统参数即常量,以及种子密钥即系统外部输入,输出为所述控制单元的128比特初始密钥。
进一步的,所述控制单元的完成信号产生子单元中:
在系统复位无效时,在系统时钟上升沿采样所述存储触发的双口Block RAM输出的B端口读数据,作为所述控制单元和所述加解密系统的完成信号输出。
进一步的,所述控制单元的密/明文输出子单元中:
对流水线控制子单元输出的中间密文低128比特进行反序变换后,作为所述控制单元和所述加解密系统的128比特密/明文输出。
进一步的,所述控制单元的流水线控制子单元中:
n×m比特轮密钥读延时从高到低按m比特分为n组,第1组是第1个所述加解密单元的m比特轮密钥读延时输入,第2组是第2个所述加解密单元的m比特轮密钥读延时输入,依次类推,第n组是第n个所述加解密单元的m比特轮密钥读延时输入,其中m取二进制表示(n-1)×19-1对应的最短位数;
加密状态,第i组(i=1,2,…,n)轮密钥读延时Td6满足以下公式:
Td6=i-1;
解密状态,第i组(i=1,2,…,n)轮密钥读延时Td7满足以下公式:
Td7=(i-1)×19;
所述存储固定参数的单口Block RAM的读数据输出组合形成n×32比特固定参数,从高到低按32比特分为n组,第1组是第1个所述轮密钥产生单元的32比特固定参数输入,第2组是第2个所述轮密钥产生单元的32比特固定参数输入,依次类推,第n组是第n个所述轮密钥产生单元的32比特固定参数输入;
n×128比特中间密钥从高到低按128比特分为n组,第1组既是第1个所述轮密钥产生单元的128比特中间密钥输出,也是第2个所述轮密钥产生单元的128比特中间密钥输入;第2组既是第2个所述轮密钥产生单元的128比特中间密钥输出,也是第3个所述轮密钥产生单元的128比特中间密钥输入;依次类推,第n-1组既是第n-1个所述轮密钥产生单元的128比特中间密钥输出,也是第n个所述轮密钥产生单元的128比特中间密钥输入,第n组则只是第n个所述轮密钥产生单元的128比特中间密钥输出;
抽取每组128比特中间密钥的低32比特合并组成n×32比特的加解密轮密钥,从高到低按32比特分为n组;如果状态输入是加密,第1组作为第1个所述加解密单元的32比特输入轮密钥,第2组作为第2个所述加解密单元的32比特输入轮密钥,依次类推,第n组作为第n个所述加解密单元的32比特输入轮密钥;如果状态输入是解密,第1组作为第n个所述加解密单元的32比特输入轮密钥,第2组作为第n-1个所述加解密单元的32比特输入轮密钥,依次类推,第n组作为第1个所述加解密单元的32比特输入轮密钥;
n×128比特中间密文从高到低按128比特分为n组,第1组既是第1个所述加解密单元的128比特中间密文输出,也是第2个所述加解密单元的128比特中间密文输入;第2组既是第2个所述加解密单元的128比特中间密文输出,也是第3个所述加解密单元的128比特中间密文输入;依次类推,第n-1组既是第n-1个所述加解密单元的中间密文输出,也是第n个所述加解密单元的128比特中间密文输入,第n组则是第n个所述加解密单元的128比特中间密文输出以及所述密/明文输出子单元的输入。
本发明的有益效果在于:
本发明采用流水线架构实现SMS4算法,充分利用FPGA嵌入式Block RAM资源实现大量中间运算数据的多时钟周期缓存、多个轮密钥产生单元及加解密单元内的S盒查找表存储,最大限度减少可配置逻辑块的资源消耗,最大程度提高了信息吞吐率。本系统特别适用于其他系统消耗较少嵌入式Block RAM资源、占用较多可配置逻辑块资源的复杂多系统的FPGA系统。
本系统可分时实现加密或解密变换,如果需要同时实现加密、解密变换,则需要FPGA系统配置2个本系统。
附图说明
图1为本发明实施例的系统电路示意图;
图2为本发明实施例的控制单元电路示意图;
图3为本发明实施例的轮密钥产生单元电路示意图;
图4为本发明实施例的加解密单元电路示意图;
图5为本发明实施例的工作时序示意图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现说明本发明的具体实施方式。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的一种全流水线SMS4加解密方法,采用基于Block RAM的全流水线处理架构,一次加解密变换过程中n轮密钥产生、n轮加解密的所有运算电路完全串行连接,运算电路包括异或、存储和移位;通过Block RAM缓存多时钟周期中间运算数据、存储S盒查找表和固定参数查找表,中间运算数据包括密文、中间密钥、轮密钥和加解密触发;通过全流水线处理架构实现明文密文连续输入处理;通过双口Block RAM的读写时间差实现中间运算数据的多时钟周期延迟输出。
本发明的一种全流水线SMS4加解密系统,包括:
控制单元,用于根据输入的明/密文、种子密钥、加解密状态、触发信号、系统时钟和系统复位,通过流水线控制输出初始明/密文、初始密钥、密/明文、轮密钥读延时、固定参数、中间密钥、轮密钥、中间密文、完成信号;
n个轮密钥产生单元,用于根据输入的中间密钥、固定参数、系统时钟和系统复位,通过轮密钥产生运算输出新的中间密钥,轮密钥产生运算包括异或、存储和移位;
n个加解密单元,用于根据输入的中间密文、轮密钥和轮密钥读延时、加解密状态、系统时钟和系统复位,通过加解密运算输出新的中间密文,加解密运算包括异或、存储和移位。
在本发明的一个具体实施例中,全流水线SMS4加解密方法如下:
1系统输入
(1)1比特系统时钟;
(2)1比特系统复位;
(3)1比特状态(低电平表示加密,高电平表示解密);
(4)1比特触发(最小宽度为1个系统时钟,高电平有效);(5)128比特明/密文;
(6)128比特种子密钥。
2系统输出
(1)1比特完成(最小宽度为1个系统时钟,高电平有效);(2)128比特密/明文。
3系统单元电路
如图1所示,系统单元电路包括:
(1)S1、控制单元;
(2)S2_1、轮密钥产生单元1;
(3)S2_2、轮密钥产生单元2;
(4)……
(5)S2_n、轮密钥产生单元n;
(6)S3_1、加解密单元1;
(7)S3_2、加解密单元2;
(8)……
(9)S3_n、加解密单元n。
注意:所有轮密钥产生单元的运算电路完成相同;
所有加解密单元的运算电路完全相同。
4控制单元S1输入
(1)1比特系统时钟;
(2)1比特系统复位;
(3)1比特状态;
(4)1比特触发;
(5)128比特明/密文;
(6)128比特种子密钥。
5控制单元S1输出
(1)128比特初始明/密文;
(2)128比特初始密钥;
(3)1比特完成;
(4)128比特密/明文;
(5)n×m比特轮密钥读延时;
(6)n×32比特固定参数;
(7)n×128比特比特中间密钥;
(8)n×32比特轮密钥;
(9)n×128比特中间密文。
6控制单元S1的运算部件
如图2所示,控制单元运算部件包括:
(1)S101、存储固定参数的单口Block RAM
数据宽度32比特,数据深度n。
存储信息固定不变,系统工作期间不能对其进行写操作。
当系统复位无效时,读地址在系统时钟上升沿从0开始依次向上累加直到n-1停止。
n个地址的读数据输出到S107。
(2)S102、存储128比特输入明/密文的双口Block RAM
数据宽度128比特,数据深度≥n×9。
A端口写数据为本单元以及本系统的128比特明/密文输入。
B端口读数据为本单元的128比特初始明/密文输出。
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加。
B端口地址开始累加时间延迟A端口地址开始累加时间Td1满足以下公式:
Td1=Td2-Td3
Td2:等待轮密钥产生所需系统时钟个数,本系统加密为9,解密为n×9;
Td3:双口Block RAM读数据等待时间。
(3)S103、存储触发的双口Block RAM
数据宽度1比特,数据深度≥(n×19+1)。
A端口写数据为本单元及本系统的触发输入。
B端口读数据为S105的输入。
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加。
B端口地址开始累加时间延迟A端口地址开始累加时间Td4满足以下公式:
Td4=Td5-Td3
Td5:单组明/密文加解密完成所需系统时钟个数,本系统加密n×11,解密(n×19+1);
(4)S104、初始密钥生成
1个双输入128比特异或,输入1为128比特系统参数(常量),输入2为128比特种子密钥,输出为本单元的128比特初始密钥输出。
(5)S105、完成信号产生
在系统复位无效,在系统时钟上升沿采样S102输出的B端口读数据作为本单元及系统的完成信号输出。
(6)S106、密/明文输出
S107的中间密文低128比特进行反序变换后作为本单元以及系统的128比特密/明文输出。
(7)S107、流水线控制
n×m比特轮密钥读延时从高到低按m比特分为n组,第1组是S3_1的m比特轮密钥读延时输入,第2组是S3_2的m比特轮密钥读延时输入,依次类推,第n组是S3_n的m比特轮密钥读延时输入。
加密状态,第i组(i=1,2,…,n)轮密钥读延时Td6满足以下公式:
Td6=i-1;
解密状态,第i组(i=1,2,…,n)轮密钥读延时Td7满足以下公式:
Td7=(i-1)×19。
S101的读数据输出组合形成n×32比特固定参数,从高到低按32比特分为n组,第1组是S2_1的32比特固定参数输入,第2组是S2_2的32比特固定参数输入,依次类推,第n组是S2_n的32比特固定参数输入。
n×128比特中间密钥从高到低按128比特分为n组,第1组既是S2_1的128比特中间密钥输出,也是S2_2的128比特中间密钥输入,第2组既是S2_2的128比特中间密钥输出,也是S2_3的128比特中间密钥输入,依次类推,第n-1组既是S2_n-1的128比特中间密钥输出,也是S2_n的128比特中间密钥输入,第n组则只是S2_n的128比特中间密钥输出。
抽取每组128比特中间密钥的低32比特合并组成n×32比特的加解密轮密钥,从高到低按32比特分为n组。如果状态输入是加密,第1组作为S3_1的32比特输入轮密钥,第2组作为S3_2的32比特输入轮密钥,依次类推,第n组作为S3_n的32比特输入轮密钥;如果状态输入是解密,第1组作为S3_n的32比特输入轮密钥,第2组作为S3_n-1的32比特输入轮密钥,依次类推,第n组作为S3_1的32比特输入轮密钥。
n×128比特中间密文从高到低按128比特分为n组,第1组既是S3_1的128比特中间密文输出,也是S3_2的128比特中间密文输入,第2组既是S3_2的128比特中间密文输出,也是S3_3的128比特中间密文输入,依次类推,第n-1组既是S3_n-1的中间密文输出,也是S3_n的128比特中间密文输入,第n组则是S3_n的128比特中间密文输出以及S106的输入。
7轮密钥产生单元S2_i(i=1,2,…,n)输入
(1)1比特系统时钟;
(2)1比特系统复位;
(3)128比特中间密钥;
(4)32比特固定参数。
8轮密钥产生单元S2_i(i=1,2,…,n)输出
(1)128比特中间密钥。
9轮密钥产生单元S2_i(i=1,2,…,n)运算部件
如图3所示,轮密钥产生单元运算部件包括:
(1)S2_i_01、2个双输入32比特异或
异或1:输入数据1为第1组密钥、输入数据2为第2组密钥,输出为S2_i_05输入数据1;(中间密钥输入低96比特从高到低按32比特分为3组密钥)
异或2:输入数据1为第3组密钥、输入数据2为固定参数,输出为S2_i_05输入数据2。
(2)S2_i_02、4个存储S盒查找表的单口Block RAM
单个数据宽度8比特,数据深度256。
Block RAM的存储信息固定不变,系统工作期间不能对其进行写操作。
S2_i_05的32比特输出从高到低按8比特分为4组,第1组作为第1个单口Block RAM的读地址,依次类推,第4组作为第4个单口Block RAM的读地址。
4个单口Block RAM的8比特读数据输出合并为32比特作为S2_i_06、S2_i_07的输入。
(3)S2_i_03、存储输入中间密钥高32比特的双口Block RAM
数据宽度32比特,数据深度8。
A端口写数据为输入中间密钥高32比特。
B端口读数据为S2_i_10的输入数据1。
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加。
B端口地址开始累加时间延迟A端口地址开始累加时间Td8满足以下公式:
Td8=Td9-Td3-2
Td9:产生1组轮密钥所需系统时钟个数,本系统为9。
(4)S2_i_04、存储输入中间密钥低96比特的双口Block RAM
数据宽度96比特,数据深度8。
A端口写数据为输入中间密钥低96比特。
B端口读数据为S2_i_11的输入数据1。
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加。
B端口地址开始累加时间延迟A端口地址开始累加时间Td10满足以下公式:
Td10=Td9-Td3-1。
(5)S2_i_05、32比特异或
输入数据1为S2_i_01异或1输出、输入数据2为S2_i_01异或2输出,输出为S2_i_02的读地址。
(6)S2_i_06、2个32比特循环左移电路
循环左移电路1:循环左移13,输入数据为S2_i_02的读数据输出,输出为S2_i_09的输入数据1。
循环左移电路2:循环左移23,输入数据为S2_i_02的读数据输出,输出为S2_i_09的输入数据2。
(7)S2_i_07、32比特缓存电路(缓存1个系统时钟)
输入数据为S2_i_02的读数据输出,输出为S2_i_08的输入数据1。
(8)S2_i_08、32比特异或
输入数据1为S2_i_07的缓存输出、输入数据2为S2_i_09的异或输出,输出为S2_i_10的输入数据2。
(9)S2_i_09、32比特异或
输入数据1为S2_i_06的循环左移1输出,输入数据2为S2_i_06的循环左移2输出,输出为S2_i_08的输入数据2。
(10)S2_i_10、32比特异或
输入数据1为S2_i_03的读数据输出、输入数据2为S2_i_08的异或输出,输出为S2_i_11的输入数据2。
(11)S2_i_11、中间密钥输出
输入数据1为S2_i_04的读数据输出、输入数据2为S2_i_10的异或输出,输出为本单元的128比特中间密钥输出。
10加解密单元S3_i(i=1,2,…,n)输入
(1)1比特系统时钟;
(2)1比特系统复位;
(3)1比特状态;
(4)128比特中间密文;
(5)32比特轮密钥;
(6)m比特轮密钥读延时。
11加解密单元S3_i(i=1,2,…,n)输出
(1)128比特中间密文。
12加解密单元S3_i(i=1,2,…,n)运算部件
如图4所示,加解密单元运算部件包括:
(1)S3_i_01、2个32比特异或
异或1:输入数据1为第1组中间密文、输入数据2为第2组中间密文,输出为S3_i_05输入数据1;
(中间密文输入低96比特从高到低按32比特分为3组中间密文)
异或2:输入数据1为第3组中间密文、输入数据2为S3_i_02的输出轮密钥,输出为S3_i_05输入数据2。
(2)S3_i_02、存储32比特轮密钥电路
S3_1的m比特轮密钥读延时输入等于0,单元输入轮密钥直接输出到S3_i_01。
S3_2~S3_n的m比特轮密钥读延时输入>0,单元输入轮密钥经过存储电路后输出到S3_i_01(i=2,3,…,n)。
·当状态输入为加密状态,存储电路配置为32比特多时钟缓存电路(消耗可配置逻辑块资源),缓存时钟个数等于m比特轮密钥读延时。
·当状态输入为解密状态,存储电路配置为双口BlockRAM
数据宽度32比特,数据深度≥(i-1)×19(i=2,3,…,n)。
A端口写数据为输入轮密钥。
B端口读数据为S3_i_01(i=2,3,…,n)的异或2输入数据2。
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加。
B端口地址开始累加时间延迟A端口地址开始累加时间Td11满足以下公式:
Td11=Td12-Td3
Td12:m比特轮密钥读延时表示的系统时钟个数,参见S107流水线控制。
(3)S3_i_03、存储输入中间密文高32比特的双口Block RAM
数据宽度32比特,数据深度8。
A端口写数据为输入中间密文高32比特。
B端口读数据为S3_i_12的输入数据1。
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加。
B端口地址开始累加时间延迟A端口地址开始累加时间Td13满足以下公式:
Td13=Td14-Td3-2
Td14:1轮加解密所需系统时钟个数,本系统为10。
(4)S3_i_04、存储输入中间密文低96比特的双口Block RAM
数据宽度96比特,数据深度16。
A端口写数据为输入中间密文低96比特。
B端口读数据为S3_i_13的输入数据1。
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加。
B端口地址开始累加时间延迟A端口地址开始累加时间Td15满足以下公式:
Td15=Td14-Td3-1。
(5)S3_i_05、32比特异或
输入数据1为S3_i_01异或1输出、输入数据2为S3_i_01异或2输出,输出为S3_i_06的读地址。
(6)S3_i_06、4个存储S盒查找表的单口Block RAM
单个数据宽度8比特,数据深度256。
Block RAM的存储信息固定不变,系统工作期间不能对其进行写操作。
S3_i_05的32比特输出从高到低按8比特分为4组,第1组作为第1个单口Block RAM的读地址,依次类推,第4组作为第4个单口Block RAM的读地址。
4个单口Block RAM的8比特读数据输出合并为32比特作为S3_i_07、S3_i_08的输入。
(7)S3_i_07、4个32比特循环左移电路
循环左移电路1:循环左移2,输入数据为S3_i_06的读数据输出,输出为S3_i_09的输入数据1。
循环左移电路2:循环左移10,输入数据为S3_i_06的读数据输出,输出为S3_i_09的输入数据2。
循环左移电路3:循环左移18,输入数据为S3_i_06的读数据输出,输出为S3_i_09的输入数据3。
循环左移电路4:循环左移24,输入数据为S3_i_06的读数据输出,输出为S3_i_09的输入数据4。
(8)S3_i_08、32比特缓存电路(缓存2个系统时钟)
输入数据为S3_i_06的读数据输出,输出为S3_i_11的输入数据1。
(9)S3_i_09、2个32比特异或
异或1:输入数据1为S3_i_07循环左移1输出、输入数据2为S3_i_07循环左移2输出,输出为S3_i_10的输入数据1。
异或2:输入数据1为S3_i_07循环左移3输出、输入数据2为S3_i_07循环左移4输出,输出为S3_i_10的输入数据2。
(10)S3_i_10、32比特异或
输入数据1为S3_i_09的异或1输出、输入数据2为S3_i_09的异或2输出,输出为S3_i_11的输入数据2。
(11)S3_i_11、32比特异或
输入数据1为S3_i_08的缓存输出、输入数据2为S3_i_10的异或输出,输出为S3_i_12的输入数据2。
(12)S3_i_12、32比特异或
输入数据1为S3_i_03的读数据输出、输入数据2为S3_i_11的异或输出,输出为S3_i_13的输入数据2。
(13)S3_i_13、中间密文输出
输入数据1为S3_i_04的读数据输出、输入数据2为S3_i_12的异或输出,输出为本单元的128比特中间密文输出。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

Claims (12)

1.一种全流水线SMS4加解密方法,其特征在于,采用基于Block RAM的全流水线处理架构,一次加解密变换过程中n轮密钥产生、n轮加解密的所有运算电路完全串行连接,所述运算电路包括异或、存储和移位;通过Block RAM缓存多时钟周期中间运算数据、存储S盒查找表和固定参数查找表,所述中间运算数据包括密文、中间密钥、轮密钥和加解密触发;通过全流水线处理架构实现明文密文连续输入处理;通过双口Block RAM的读写时间差实现中间运算数据的多时钟周期延迟输出;
所述的一种全流水线SMS4加解密方法包括:
根据输入的明/密文、种子密钥、加解密状态、触发信号、系统时钟和系统复位,控制单元通过流水线控制输出初始明/密文、初始密钥、密/明文、轮密钥读延时、固定参数、中间密钥、轮密钥、中间密文和完成信号;
根据输入的中间密钥、固定参数、系统时钟和系统复位,n个轮密钥产生单元通过轮密钥产生运算输出新的中间密钥,所述轮密钥产生运算包括异或、存储和移位;
根据输入的中间密文、轮密钥和轮密钥读延时、加解密状态、系统时钟和系统复位,n个加解密单元通过加解密运算输出新的中间密文,所述加解密运算包括异或、存储和移位;
所述控制单元包括:存储固定参数的单口Block RAM、存储输入明/密文的双口BlockRAM、存储触发的双口Block RAM、初始密钥生成子单元、完成信号产生子单元、密/明文输出子单元和流水线控制子单元;
所述控制单元的存储固定参数的单口Block RAM中:
数据宽度为32比特,数据深度为n
存储信息固定不变,工作期间不能进行写操作;
当系统复位无效时,读地址在系统时钟上升沿从0开始依次向上累加直到n-1停止;
n个地址的读数据输出到所述流水线控制子单元;
所述控制单元的存储输入明/密文的双口Block RAM中:
数据宽度为128比特,数据深度≥n×9;
A端口写数据为所述控制单元和加解密系统的128比特明/密文输入,B端口读数据为所述控制单元的128比特初始明/密文输出;
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加;
B端口地址开始累加时间延迟A端口地址开始累加时间Td1满足以下公式:
Td1 = Td2 -Td3
其中,Td2为等待轮密钥产生所需的系统时钟个数,本方法加密为9,解密为n×9 ;Td3为双口Block RAM读数据等待时间。
2.根据权利要求1所述的一种全流水线SMS4加解密方法,其特征在于,所述控制单元的存储触发的双口Block RAM中:
数据宽度为1比特,数据深度为≥(n×19+1);
A端口写数据为所述控制单元和所述加解密系统的触发输入,B端口读数据为所述完成信号产生子单元的输入;
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加;
B端口地址开始累加时间延迟A端口地址开始累加时间Td4满足以下公式:
Td4 = Td5 -Td3
其中,Td5为单组明/密文加解密完成所需系统时钟个数,本方法加密为n×11,解密为n×19+1。
3.根据权利要求1所述的一种全流水线SMS4加解密方法,其特征在于,所述控制单元的初始密钥生成子单元包括双输入的128比特异或运算,其输入为128比特的系统参数即常量,以及种子密钥即系统外部输入,输出为所述控制单元的128比特初始密钥。
4.根据权利要求1所述的一种全流水线SMS4加解密方法,其特征在于,所述控制单元的完成信号产生子单元中:
在系统复位无效时,在系统时钟上升沿采样所述存储触发的双口Block RAM输出的B端口读数据,作为所述控制单元和所述加解密系统的完成信号输出。
5.根据权利要求1所述的一种全流水线SMS4加解密方法,其特征在于,所述控制单元的密/明文输出子单元中:
对流水线控制子单元输出的中间密文低128比特进行反序变换后,作为所述控制单元和所述加解密系统的128比特密/明文输出。
6.根据权利要求1所述的一种全流水线SMS4加解密方法,其特征在于,所述控制单元的流水线控制子单元中:
n×m比特轮密钥读延时从高到低按m比特分为n组,第1组是第1个所述加解密单元的m比特轮密钥读延时输入,第2组是第2个所述加解密单元的m比特轮密钥读延时输入,依次类推,第n组是第n个所述加解密单元的m比特轮密钥读延时输入,其中m取二进制表示(n - 1)×19-1对应的最短位数;
加密状态,第i组(i=1,2,…,n)轮密钥读延时Td6满足以下公式:
Td6 = i - 1;
解密状态,第i组(i=1,2,…,n)轮密钥读延时Td7满足以下公式:
Td7 = (i - 1)×19;
所述存储固定参数的单口Block RAM的读数据输出组合形成n×32比特固定参数,从高到低按32比特分为n组,第1组是第1个所述轮密钥产生单元的32比特固定参数输入,第2组是第2个所述轮密钥产生单元的32比特固定参数输入,依次类推,第n组是第n个所述轮密钥产生单元的32比特固定参数输入;
n×128比特中间密钥从高到低按128比特分为n组,第1组既是第1个所述轮密钥产生单元的128比特中间密钥输出,也是第2个所述轮密钥产生单元的128比特中间密钥输入;第2组既是第2个所述轮密钥产生单元的128比特中间密钥输出,也是第3个所述轮密钥产生单元的128比特中间密钥输入;依次类推,第n -1组既是第n -1个所述轮密钥产生单元的128比特中间密钥输出,也是第n个所述轮密钥产生单元的128比特中间密钥输入,第n组则只是第n个所述轮密钥产生单元的128比特中间密钥输出;
抽取每组128比特中间密钥的低32比特合并组成n×32比特的加解密轮密钥,从高到低按32比特分为n组;如果状态输入是加密,第1组作为第1个所述加解密单元的32比特输入轮密钥,第2组作为第2个所述加解密单元的32比特输入轮密钥,依次类推,第n组作为第n个所述加解密单元的32比特输入轮密钥;如果状态输入是解密,第1组作为第n个所述加解密单元的32比特输入轮密钥,第2组作为第n-1个所述加解密单元的32比特输入轮密钥,依次类推,第n组作为第1个所述加解密单元的32比特输入轮密钥;
n×128比特中间密文从高到低按128比特分为n组,第1组既是第1个所述加解密单元的128比特中间密文输出,也是第2个所述加解密单元的128比特中间密文输入;第2组既是第2个所述加解密单元的128比特中间密文输出,也是第3个所述加解密单元的128比特中间密文输入;依次类推,第n-1组既是第n-1个所述加解密单元的中间密文输出,也是第n个所述加解密单元的128比特中间密文输入,第n组则是第n个所述加解密单元的128比特中间密文输出以及所述密/明文输出子单元的输入。
7.一种全流水线SMS4加解密系统,其特征在于,包括:
控制单元,用于根据输入的明/密文、种子密钥、加解密状态、触发信号、系统时钟和系统复位,通过流水线控制输出初始明/密文、初始密钥、密/明文、轮密钥读延时、固定参数、中间密钥、轮密钥、中间密文和完成信号;
n个轮密钥产生单元,用于根据输入的中间密钥、固定参数、系统时钟和系统复位,通过轮密钥产生运算输出新的中间密钥,所述轮密钥产生运算包括异或、存储和移位;
n个加解密单元,用于根据输入的中间密文、轮密钥和轮密钥读延时、加解密状态、系统时钟和系统复位,通过加解密运算输出新的中间密文,所述加解密运算包括异或、存储和移位;
所述控制单元包括:存储固定参数的单口Block RAM、存储输入明/密文的双口BlockRAM、存储触发的双口Block RAM、初始密钥生成子单元、完成信号产生子单元、密/明文输出子单元和流水线控制子单元;
所述控制单元的存储固定参数的单口Block RAM中:
数据宽度为32比特,数据深度为n
存储信息固定不变,工作期间不能进行写操作;
当系统复位无效时,读地址在系统时钟上升沿从0开始依次向上累加直到n-1停止;
n个地址的读数据输出到所述流水线控制子单元;
所述控制单元的存储输入明/密文的双口Block RAM中:
数据宽度为128比特,数据深度≥n×9;
A端口写数据为所述控制单元和所述加解密系统的128比特明/密文输入,B端口读数据为所述控制单元的128比特初始明/密文输出;
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加;
B端口地址开始累加时间延迟A端口地址开始累加时间Td1满足以下公式:
Td1 = Td2 -Td3
其中,Td2为等待轮密钥产生所需的系统时钟个数,本系统加密为9,解密为n×9 ;Td3为双口Block RAM读数据等待时间。
8.根据权利要求7所述的一种全流水线SMS4加解密系统,其特征在于,所述控制单元的存储触发的双口Block RAM中:
数据宽度为1比特,数据深度为≥(n×19+1);
A端口写数据为所述控制单元和所述加解密系统的触发输入,B端口读数据为所述完成信号产生子单元的输入;
当系统复位无效时,A、B端口地址在系统时钟上升沿向上累加;
B端口地址开始累加时间延迟A端口地址开始累加时间Td4满足以下公式:
Td4 = Td5 -Td3
其中,Td5为单组明/密文加解密完成所需系统时钟个数,本系统加密为n×11,解密为n×19+1。
9.根据权利要求7所述的一种全流水线SMS4加解密系统,其特征在于,所述控制单元的初始密钥生成子单元包括双输入的128比特异或运算,其输入为128比特的系统参数即常量,以及种子密钥即系统外部输入,输出为所述控制单元的128比特初始密钥。
10.根据权利要求7所述的一种全流水线SMS4加解密系统,其特征在于,所述控制单元的完成信号产生子单元中:
在系统复位无效时,在系统时钟上升沿采样所述存储触发的双口Block RAM输出的B端口读数据,作为所述控制单元和所述加解密系统的完成信号输出。
11.根据权利要求7所述的一种全流水线SMS4加解密系统,其特征在于,所述控制单元的密/明文输出子单元中:
对流水线控制子单元输出的中间密文低128比特进行反序变换后,作为所述控制单元和所述加解密系统的128比特密/明文输出。
12.根据权利要求7所述的一种全流水线SMS4加解密系统,其特征在于,所述控制单元的流水线控制子单元中:
n×m比特轮密钥读延时从高到低按m比特分为n组,第1组是第1个所述加解密单元的m比特轮密钥读延时输入,第2组是第2个所述加解密单元的m比特轮密钥读延时输入,依次类推,第n组是第n个所述加解密单元的m比特轮密钥读延时输入,其中m取二进制表示(n - 1)×19-1对应的最短位数;
加密状态,第i组(i=1,2,…,n)轮密钥读延时Td6满足以下公式:
Td6 = i - 1;
解密状态,第i组(i=1,2,…,n)轮密钥读延时Td7满足以下公式:
Td7 = (i - 1)×19;
所述存储固定参数的单口Block RAM的读数据输出组合形成n×32比特固定参数,从高到低按32比特分为n组,第1组是第1个所述轮密钥产生单元的32比特固定参数输入,第2组是第2个所述轮密钥产生单元的32比特固定参数输入,依次类推,第n组是第n个所述轮密钥产生单元的32比特固定参数输入;
n×128比特中间密钥从高到低按128比特分为n组,第1组既是第1个所述轮密钥产生单元的128比特中间密钥输出,也是第2个所述轮密钥产生单元的128比特中间密钥输入;第2组既是第2个所述轮密钥产生单元的128比特中间密钥输出,也是第3个所述轮密钥产生单元的128比特中间密钥输入;依次类推,第n -1组既是第n -1个所述轮密钥产生单元的128比特中间密钥输出,也是第n个所述轮密钥产生单元的128比特中间密钥输入,第n组则只是第n个所述轮密钥产生单元的128比特中间密钥输出;
抽取每组128比特中间密钥的低32比特合并组成n×32比特的加解密轮密钥,从高到低按32比特分为n组;如果状态输入是加密,第1组作为第1个所述加解密单元的32比特输入轮密钥,第2组作为第2个所述加解密单元的32比特输入轮密钥,依次类推,第n组作为第n个所述加解密单元的32比特输入轮密钥;如果状态输入是解密,第1组作为第n个所述加解密单元的32比特输入轮密钥,第2组作为第n-1个所述加解密单元的32比特输入轮密钥,依次类推,第n组作为第1个所述加解密单元的32比特输入轮密钥;
n×128比特中间密文从高到低按128比特分为n组,第1组既是第1个所述加解密单元的128比特中间密文输出,也是第2个所述加解密单元的128比特中间密文输入;第2组既是第2个所述加解密单元的128比特中间密文输出,也是第3个所述加解密单元的128比特中间密文输入;依次类推,第n-1组既是第n-1个所述加解密单元的中间密文输出,也是第n个所述加解密单元的128比特中间密文输入,第n组则是第n个所述加解密单元的128比特中间密文输出以及所述密/明文输出子单元的输入。
CN202011146350.0A 2020-10-23 2020-10-23 一种全流水线sms4加解密方法及系统 Active CN112350819B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011146350.0A CN112350819B (zh) 2020-10-23 2020-10-23 一种全流水线sms4加解密方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011146350.0A CN112350819B (zh) 2020-10-23 2020-10-23 一种全流水线sms4加解密方法及系统

Publications (2)

Publication Number Publication Date
CN112350819A CN112350819A (zh) 2021-02-09
CN112350819B true CN112350819B (zh) 2022-02-18

Family

ID=74359979

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011146350.0A Active CN112350819B (zh) 2020-10-23 2020-10-23 一种全流水线sms4加解密方法及系统

Country Status (1)

Country Link
CN (1) CN112350819B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113938268B (zh) * 2021-10-15 2023-07-28 湖南麒麟信安科技股份有限公司 分组密码算法的硬件控制系统
CN114553398A (zh) * 2022-04-24 2022-05-27 广州万协通信息技术有限公司 多重查找的分组加密方法、装置、设备和存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103297223B (zh) * 2013-05-07 2017-06-06 北京航空航天大学 基于动态可重构的自恢复容错aes装置及其加密方法
CN105049194B (zh) * 2015-06-01 2018-05-08 北京时代民芯科技有限公司 一种流水线结构的sm4算法实现系统
CN105912501B (zh) * 2016-05-06 2018-11-06 东南大学—无锡集成电路技术研究所 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统
CN106021171A (zh) * 2016-05-06 2016-10-12 东南大学—无锡集成电路技术研究所 一种基于大规模粗粒度可重构处理器的sm4-128的密钥扩展实现方法及系统
CN106650411A (zh) * 2016-11-24 2017-05-10 天津津航计算技术研究所 密码算法验证系统
CN106788975B (zh) * 2016-12-28 2019-12-13 北京天融信网络安全技术有限公司 基于sm4密码算法的加解密装置
CN109299614A (zh) * 2018-10-30 2019-02-01 天津津航计算技术研究所 一种采用流水线方式实现sm4密码算法的系统及方法
CN109656840A (zh) * 2018-12-21 2019-04-19 成都海光集成电路设计有限公司 一种数据加解密的装置、方法、存储介质、以及数据存储系统
CN109600217A (zh) * 2019-01-18 2019-04-09 江苏实达迪美数据处理有限公司 在并行操作模式中优化sm4加密和解密的方法及处理器
CN111563281B (zh) * 2020-04-30 2023-10-27 北京中科晶上科技股份有限公司 一种支持多种加解密算法的处理器及其实现方法

Also Published As

Publication number Publication date
CN112350819A (zh) 2021-02-09

Similar Documents

Publication Publication Date Title
Yalla et al. Lightweight cryptography for FPGAs
US7702100B2 (en) Key generation for advanced encryption standard (AES) Decryption and the like
Zhang et al. Implementation approaches for the advanced encryption standard algorithm
US7561689B2 (en) Generating keys having one of a number of key sizes
US7123720B2 (en) Key scheduler for encryption apparatus using data encryption standard algorithm
KR100377175B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
CN112350819B (zh) 一种全流水线sms4加解密方法及系统
WO2011153666A1 (zh) 一种s盒构造方法及s盒
CN103684749B (zh) 一种基于面积与性能平衡优化的klein加密实现方法
CN101431405B (zh) Des加密方法及其硬件电路实现方法
US6931127B2 (en) Encryption device using data encryption standard algorithm
Chang et al. High throughput 32-bit AES implementation in FPGA
WO2016026287A1 (zh) 一种加密装置、加密方法及计算机存储介质
Sideris et al. Hardware acceleration of the aes algorithm using nios-ii processor
Biglari et al. Maestro: A high performance AES encryption/decryption system
Farmani et al. Hardware implementation of 128-Bit AES image encryption with low power techniques on FPGA
Shastry et al. Rolled architecture based implementation of AES using T-Box
Al-Khafaji et al. FPGA design and implementation of an AES algorithm based on iterative looping architecture
KR20060014420A (ko) 암호화/암호 해독용 장치, 메모리 요구량 감소 방법 및컴퓨터 프로그램 제품
Haghighizadeh et al. A compact 8-bit AES crypto-processor
JP3841008B2 (ja) 暗号装置及びデータ転送制御装置
Xiao et al. The Optimized design of Rijndael Algorithm based on SOPC
CN103269265B (zh) 用于无线局域网的高速加解密方法
KR100935372B1 (ko) 라인달 알고리즘을 이용한 암호화 및 복호화 장치
Yang et al. Celerity hardware implementation of the AES with data parallel and pipelining architecture inside the Round Function

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