CN101764684A - 实现sms4算法的加解密系统 - Google Patents

实现sms4算法的加解密系统 Download PDF

Info

Publication number
CN101764684A
CN101764684A CN 200910193304 CN200910193304A CN101764684A CN 101764684 A CN101764684 A CN 101764684A CN 200910193304 CN200910193304 CN 200910193304 CN 200910193304 A CN200910193304 A CN 200910193304A CN 101764684 A CN101764684 A CN 101764684A
Authority
CN
China
Prior art keywords
round key
module
encryption
computing
decryption
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
Application number
CN 200910193304
Other languages
English (en)
Other versions
CN101764684B (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.)
GCI Science and Technology Co Ltd
Original Assignee
GCI Science and Technology 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 GCI Science and Technology Co Ltd filed Critical GCI Science and Technology Co Ltd
Priority to CN2009101933043A priority Critical patent/CN101764684B/zh
Publication of CN101764684A publication Critical patent/CN101764684A/zh
Application granted granted Critical
Publication of CN101764684B publication Critical patent/CN101764684B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明涉及无线局域网分组密码算法领域,提出一种实现SMS4算法的加解密系统,包括:控制器模块、运算模块、轮密钥存储模块和参数存储模块。控制器模块接收模式设置信号,并据此输出加解密控制信号或轮密钥扩展控制信号;运算模块若接收到加解密控制信号则从轮密钥存储模块读取轮密钥进行加解密运算;运算模块若接收到轮密钥扩展控制信号则从参数存储模块读取系统参数和固定参数进行轮密钥扩展运算,并输出新的轮密钥至轮密钥存储模块更新。本发明采用模块复用的思想,降低了系统冗余度,并且占用面积与现有技术相比可以减少一半左右。

Description

实现SMS4算法的加解密系统
技术领域
本发明涉及无线局域网分组密码算法领域,具体为提出一种实现SMS4算法的加解密系统。
背景技术
SMS4密码算法是国内公布的第一个用于无线局域网产品的商用密码算法,该算法是我国首个公开针对特殊领域的密码算法,对无线局域网产业和商用密码研究都有重要的意义。SMS4是基于S盒的分组对称密码算法,它对一组比特数据进行加解密运算,而不像流密码那样只针对单个比特运算。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反。
加密算法主要为读入加解密数据和轮密钥进行加密运算的过程。算法的加密变换包含异或运算和合成置换T1运算,其中合成置换T1运算是由线性变化L1和非线性变化τ复合而成,即T1(.)=L1(τ(.))。非线性变化τ由4个并行的S盒构成,S盒是固定的8比特输入8比特输出的变换;线性变化L1包含异或运算和左移运算。
对轮密钥扩展算法而言,加密算法中的轮密钥是加密密钥MK通过轮密钥扩展算法生成。而该扩展算法基本结构也与加解密算法相同,同样包含异或运算和合成置换T2运算。其中合成置换T2运算与加密算法中的合成置换T1运算基本相同,仅仅将其中的线性变化L1修改为L2,线性变化L2同样包含异或运算和左移运算,形式略有不同。
实现SMS4算法的加解密系统在现有技术中存在多种实现方案,但这些方案大多基于以下架构:包括轮密钥扩展模块、控制模块和加解密模块。以加密操作为例,首先由轮密钥扩展模块读入加密密钥MK、系统参数FK和固定参数CK,其中FK和CK是固定值,读入的所有参数经过32轮迭代运算产生32个轮密钥并存储。当有明文进入加解密模块,则加密运算启动,并在每轮迭代中读入相应轮密钥,直至完成32轮迭代加密操作,最终输出密文。不同方案的区别在于加解密模块的实现上。
但从系统全局的结构考虑,加解密模块和轮密钥扩展模块在功能上有较大的相似性,使用两个模块实现系统的功能仍使得系统的部件冗余度较高。
发明内容
本发明的目的在于提出一种实现SMS4算法的加解密系统,将系统的部件冗余度降低。
由于实现SMS4算法的加解密系统中加解密模块和轮密钥扩展模块功能存在较大的相似性,为了降低系统冗余度,本发明基于模块复用的思想提出一种实现SMS4算法的加解密系统,包括:
控制器模块,用于控制系统处于何种工作模式;
运算模块,用于进行加解密运算和轮密钥扩展运算;
轮密钥存储模块,用于轮密钥的存储;
参数存储模块,用于系统参数、固定参数和零参数的存储;
若系统接收到明文或密文,则向所述控制器模块发出加解密模式设置信号,所述控制器模块则输出加解密控制信号至所述运算模块、所述轮密钥存储模块和所述参数存储模块;根据接收的所述加解密控制信号,所述运算模块、所述轮密钥存储模块和所述参数存储模块被设置为加解密模式,所述运算模块读取所述轮密钥和所述零参数对所述明文或所述密文进行加解密运算,并在完成32轮迭代加解密运算后输出密文或明文;
若系统接收到加密密钥,则向所述控制器模块发出轮密钥扩展模式设置信号,所述控制器模块则输出轮密钥扩展控制信号至所述运算模块、所述轮密钥存储模块和所述参数存储模块;根据接收的所述轮密钥扩展控制信号,所述运算模块、所述轮密钥存储模块和所述参数存储模块被设置为轮密钥扩展模式;所述运算模块读取所述系统参数和所述固定参数来对所述加密密钥进行轮密钥扩展运算,并根据迭代轮次输出轮密钥至所述轮密钥存储模块;所述轮密钥存储模块根据所述迭代轮次更新所述轮密钥。
本发明的技术方案基于模块复用的思想,仅使用一个运算模块就可实现加解密运算和轮密钥扩展运算的功能复用,使得系统冗余度得到降低。
附图说明
图1为一个标准加密模块的示意图;
图2是一种轮密钥扩展模块的示意图;
图3是实施例1提出的实现SMS4算法的加解密系统;
图4是实施例2的运算模块示意图。
具体实施方式
SMS4算法是国内应用于无线局域网领域的重要商用密码算法,其中加解密算法和密钥扩展算法都采用32轮非线性迭代结构。解密算法和加密算法的结构相同,只是轮密钥的使用顺序相反。
下面对加解密算法进行简要介绍:
设明文输入为X0,X1,X2,X3;密文输入为Y0,Y1,Y2,Y3;轮密钥为rki,其中i=0,1,2,...,31。用Z2 e表示e比特的向量集,则X,Y,rki都是32比特的向量集,用 X , Y , rk i ∈ Z 2 32 表示。算法的加解密变换为:
X i + 4 = F ( X i , X i + 1 , X i + 2 , X i + 3 , rk i ) = X i ⊕ T 1 ( X i + 1 ⊕ X i + 2 ⊕ X i + 3 ⊕ rk i ) , i = 0,1 , . . . , 31
F为轮函数,进行如上的32轮迭代运算后,得到密文:
(Y0,Y1,Y2,Y3)=(X35,X34,X33,X32)
解密变换与加密变换结构相同,仅是轮密钥的使用顺序不同。当加密时:轮密钥的使用顺序为rk0,rk1,...,rk31;解密时:轮密钥的使用顺序为rk31,rk30,...,rk0
合成置换T1是一个可逆变换,由非线性变换τ和线性变换L1复合而成,即T1(.)=L1(τ(.))。非线性变换τ由4个并行的S盒构成,S盒为固定的8比特输入8比特输出的变换,记为Sbox(.)。非线性变换τ和线性变换L1分别为:
设输入为A=(a1,a2,a3,a4),输出为B=(b1,b2,b3,b4),其中,a1,a2,a3,a4,b1,b2,b3,b4都是8比特向量,用 a 1 , a 2 , a 3 , a 4 , b 1 , b 2 , b 3 , b 4 ∈ Z 2 8 表示。
则B=τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3));
C = L 1 ( B ) = B &CirclePlus; ( B < < < 2 ) &CirclePlus; ( B < < < 10 ) &CirclePlus; ( B < < < 18 ) &CirclePlus; ( B < < < 24 ) .
上述算法采用了32比特异或和32位比特循环左移的基本运算;用
Figure G2009101933043D00043
表示32比特异或运算,用<<<i表示32位比特循环左移i位。
图1为一个标准加密模块的示意图,由数据选择器、轮函数F部件和寄存器组成。以加密过程为例:数据选择器判断当前数据组的加密是否完成,若已经完成则读入新明文进行加密;若未完成则将上一轮的运算结果送入下一轮继续进行加密运算。轮函数F部件是加解密模块的核心部件,读入待加密数据和轮密钥进行加密运算,具体加密步骤如上文所述。寄存器是暂存上一轮的加密结果,直至32轮迭代加解密运算完成时输出密文。
下面对轮密钥扩展算法进行简要介绍:
加解密算法中的轮密钥由加密密钥通过轮密钥扩展算法生成,该算法基本结构与加解密算法相同,也是经过32轮迭代运算后生成32个轮密钥。
加密密钥MK=(MK0,MK1,MK2,MK3), MK i &Element; Z 2 32 , i=0,1,2,3;令 K i &Element; Z 2 32 , i=0,1,...,35,轮密钥为 rk i &Element; Z 2 32 , i=0,1,...,31,则轮密钥扩展算法为:
( K 0 , K 1 , K 2 , K 3 ) = ( MK 0 &CirclePlus; FK 0 , MK 1 &CirclePlus; FK 1 , MK 2 &CirclePlus; FK 2 , MK 3 &CirclePlus; FK 3 )
rk i = K i + 4 = F ` ( K i , K i + 1 , K i + 2 , K i + 3 , CK i ) = K i &CirclePlus; T 2 ( K i + 1 &CirclePlus; K i + 2 &CirclePlus; K i + 3 &CirclePlus; CK i ) , i = 0,1 , . . . . 31
T2变换与加解密算法中的T1基本相同,仅是线性变换L1修改为L2。设输入为B,输出为C,则线性变换L2 C = L 2 ( B ) = B &CirclePlus; ( B < < < 13 ) &CirclePlus; ( B < < < 23 ) . FK为系统参数:FK0=(A3B1BAC6),FK1=(56AA3350),FK2=(677D9197),FK3=(B27022DC),这些参数都是16进制表示;CK是固定参数取值。
图2是一种轮密钥扩展模块的示意图,包括数据选择器及异或运算器、轮函数F`部件、寄存器三部分组成。轮密钥扩展模块的第一部分包含数据选择器和异或运算器,数据选择器判断当前轮密钥组是否完全生成,若已完全生成则接受新输入的加密密钥,否则将上轮运算结果作为输入数据进行下一轮轮密钥生成运算;异或运算器对输入的加密密钥MK和系统参数FK进行异或运算,即完成 ( K 0 , K 1 , K 2 , K 3 ) = ( MK 0 &CirclePlus; FK 0 , MK 1 &CirclePlus; FK 1 , MK 2 &CirclePlus; FK 2 , MK 3 &CirclePlus; FK 3 ) 的运算。轮函数F`部件读入MK和FK的异或结果K以及CK,经32轮迭代运算产生32个轮密钥,具体运算过程如上所述。寄存器依次储存每一轮运算的轮密钥,直至运算结束后输出32个轮密钥。
从加解密算法和轮密钥扩展算法的介绍中可以看出,加解密模块和轮密钥扩展模块存在较多功能相同的部件,可以从模块复用角度来降低系统冗余度;并且轮密钥运算和加解密运算在时间上存在先后性,可以通过功能切换实现模块复用。
本发明提出的实现SMS4算法的加解密系统,具体包括:控制器模块、运算模块、轮密钥存储模块和参数存储模块。控制器模块接收模式设置信号,并根据不同的模式设置信号输出加解密控制信号或轮密钥扩展控制信号。运算模块是本发明的核心模块,主要进行包括异或、S盒和循环左移在内的运算,进行加解密运算或轮密钥扩展运算。轮密钥存储模块在接收到加解密控制信号后处于加解密模式,在接收到轮密钥扩展控制信号后处于轮密钥扩展模式。参数存储模块存储系统参数、固定参数和零参数,在接收到加解密控制信号时处于加解密模式,参数扩展模块与运算模块连接,将零参数发送至运算模块用于进行加解密运算;在接收到轮密钥扩展控制信号时处于轮密钥扩展模式,参数存储模块与运算模块连接,将系统参数、固定参数和零参数发送至运算模块用于进行轮密钥扩展运算。
实施例1:
如图3所示,图3为本实施例提出的实现SMS4算法的加解密系统,包括控制器模块、运算模块、轮密钥存储模块和参数存储模块。
外部数据进入系统之后,系统向控制器模块发送模式设置信号,然后控制器模块根据不同的模式设置信号输出不同的控制信号至其他模块。控制信号包括加解密控制信号和轮密钥扩展控制信号。若系统输入数据为明文或密文,则控制器模块接收加解密模式设置信号,然后输出加解密控制信号至运算模块、轮密钥存储模块和参数存储模块;若系统输入数据类型为加密密钥,则控制器模块接收轮密钥扩张模式设置信号,然后输出轮密钥扩展控制信号至运算模块、轮密钥存储模块和参数存储模块。
若输入数据类型为明文,加解密控制信号则为信号A,如果输入数据类型为密文,加解密控制信号则为A`。根据接收的加解密控制信号运算模块、轮密钥存储模块和参数存储模块被设置为加解密模式,运算模块读取轮密钥存储模块中的轮密钥和参数存储模块中的零参数对明文或所述密文进行加解密运算,并在完成32轮迭代加解密运算后输出密文或明文。由于加密过程和解密过程仅仅是轮密钥读取顺序不同,对加解密过程全部以加密实现来描述。运算模块在接收到信号A时正向读取轮密钥存储模块中轮密钥,对明文进行加密运算;轮密钥存储模块在接收到信号A时为读取状态,正向将相应轮次的轮密钥送入运算模块进行加密运算;用rki(=0,1,...,31)表示轮密钥,正向是指读取轮密钥的顺序为:rk0,rk1,...,rk31。运算模块接收到信号A`时反向读取轮密钥存储模块中轮密钥,对密文进行解密运算;轮密钥存储模块在接收到信号A`时为读取状态,反向将相应轮次的轮密钥送入运算模块进行解密运算;反向是指读取轮密钥的顺序为:rk31,rk30,...,rk0
若模式判决模块判断输入数据类型为加密密钥,则输出轮密钥扩展设置信号至运算模块、轮密钥存储模块和参数存储模块,轮密钥扩展控制信号为信号B。根据接收的信号B,运算模块、轮密钥存储模块和参数存储模块被设置为轮密钥扩展模式,运算模块读取参数存储模块中的系统参数、固定参数和零参数来对加密密钥进行轮密钥扩展运算,并根据迭代轮次输出轮密钥至轮密钥存储模块;轮密钥存储模块根据迭代轮次更新轮密钥。参数存储模块存储轮密钥扩展运算中所需要的系统参数、固定参数和零参数,在接收到信号B时,将系统参数、固定参数和零参数送入运算模块进行轮密钥扩展运算。由于迭代运算需要进行32轮,每进行完一轮运算,则运算模块输出轮密钥至轮密钥存储模块,轮密钥存储模块根据接收的轮密钥的迭代轮次,覆盖已经存储的相同轮次的轮密钥,完成轮密钥的更新。例如,迭代运算进行到第5轮,运算模块进行完本轮的轮密钥扩展运算并生成第5轮的新轮密钥时,将该新轮密钥发送至轮密钥存储模块,轮密钥存储模块根据新轮密钥的迭代轮次为第5轮,覆盖原来已存在的第5轮的旧轮密钥,完成更新。
每当输入的一组数据进行完一轮运算,系统就检查该组数据的运算轮次,如果该组数据还未完成32轮迭代运算,则系统不读取新输入的数据,并且也不输出新的控制信号,运算模块和轮密钥扩展模块继续在原来模式下进行运算;如果该组数据已经完成32轮迭代运算,则系统读取新的一组数据,并且输出新的控制信号至系统其他模块,其他模块按照各新的控制信号确定新的工作模式。
本实施例提出的实现SMS4算法的加解密系统,采用模块复用的设计,降低了系统冗余度。
实施例2:
本发明提出的实现SMS4算法的加解密系统,包括:控制器模块、运算模块、轮密钥存储模块和参数存储模块。在采取模块复用的思想下,运算模块存在多种实现方式。实施例2同样包含:控制器模块、运算模块、轮密钥存储模块和参数存储模块,其中提出了一种运算模块的实现方式。如图4所示,本实施例中的运算模块包含:第一异或部件、第二异或部件、S盒部件、循环左移部件和第三异或部件。具体连接关系为:第一异或部件、第二异或部件、S盒部件、循环左移部件和第三异或部件顺序连接。
当收到加解密控制信号时,运算模块处于加解密模式;当收到轮密钥扩展控制信号时,运算模块处于轮密钥扩展模式。由于第一异或部件、第二异或部件、循环左移部件都属于运算模块内部功能部件,当运算模块接收来自控制器模块的控制信号而确定其自身工作模式时,工作模式一旦设定则会保持至接收到新的控制信号,所以上述三个功能部件都会依照运算模块的设置保持工作模式周期。
第一异或部件是实现加密密钥和系统参数的异或运算或者除加密密钥外的其它数据与零参数的异或运算;当运算模块处于加解密模式时,第一异或部件通过切换开关选择读入零参数,并将输入数据与零参数进行异或运算;当运算模块处于轮密钥扩展模式时,以MK表示输入的加密密钥,以FK表示系统参数,以K表示输出,则在第一轮迭代中完成 ( K 0 , K 1 , K 2 , K 3 ) = ( MK 0 &CirclePlus; FK 0 , MK 1 &CirclePlus; FK 1 , MK 2 &CirclePlus; FK 2 , MK 3 &CirclePlus; FK 3 ) 的运算。第一轮迭代后,则用零参数与输入数据进行异或运算。
第二异或部件是对输入的4个32比特向量进行异或运算。当运算模块处于加解密模式时,以加密为例,用rki表示轮密钥,第二异或部件读入rki,并执行 X i + 1 &CirclePlus; X i + 2 &CirclePlus; X i + 3 &CirclePlus; rk i ; 当运算模块处于轮密钥扩展模式时,以CKi表示固定参数,第二异或部件读入CKi,并执行运算 K i + 1 &CirclePlus; K i + 2 &CirclePlus; K i + 3 &CirclePlus; CK i .
S盒部件是将输入的1个32比特向量顺序分成4个8比特向量,并完成4组S盒的查表操作,输出为4组查表结果组成的32比特向量。
循环左移部件是用于对输入数据进行包括循环左移和异或的运算。为了保证在不同操作模式下循环左移部件具有相同的内部结构,其所执行的运算被划分为两个阶段,第一阶段将输入数据执行四种带参数的循环左移运算,其参数代表左移的比特个数;第二阶段将四种左移结果执行异或操作。左移部件执行四种带参数的循环左移运算,取决于运算模块所处操作模式,当运算模块处于加解密模式时,参数为{2,10,18,24};当运算模块处于轮密钥扩展模式时,参数为{0,0,13,23}。设输入为IN,输出为OUT。当运算模块处于加解密模式时,执行运算 OUT = L 1 ( IN ) = IN &CirclePlus; ( IN < < < 2 ) &CirclePlus; ( IN < < < 10 ) &CirclePlus; ( IN < < < 18 ) &CirclePlus; ( IN < < < 24 ) , L1为加解密运算合成置换中的线性变化函数;当运算模块处于轮密钥扩展模式时,执行运算 OUT = L 2 ( IN ) = IN &CirclePlus; ( IN < < < 13 ) &CirclePlus; ( IN < < < 23 ) , L2为轮密钥扩展运算合成置换中的线性变化函数。
第三异或部件是对输入的2个32比特向量进行逻辑异或运算;以OUT表示循环左移部件的输出结果,当运算模块处于加解密模式时,以加密为例,完成运算 X i &CirclePlus; OUT ; 当运算模块处于轮密钥扩展模式时,完成运算 K i &CirclePlus; OUT .
整个运算模块的工作过程如下,按工作模式的不同分为加解密运算过程和轮密钥扩展运算过程。
加解密运算过程:
以加密为例讲述具体运算经过:当输入数据为明文时,控制器模块输出加解密控制信号,由于是明文则该加解密控制信号为信号A,运算模块、轮密钥存储模块和参数存储模块被设置为加解密模式,根据接收的信号A运算模块正向读取轮密钥进行加密运算。明文首先进入第一异或部件,并与从参数存储模块中读入的零参数异或,其结果再进入第二异或部件,第二异或部件从轮密钥存储模块读入相应轮次的轮密钥rki,执行运算 X i + 1 &CirclePlus; X i + 2 &CirclePlus; X i + 3 &CirclePlus; rk i . 运算结果进入S盒部件完成查表运算后,进入循环左移部件,执行运算 OUT = L 1 ( IN ) = IN &CirclePlus; ( IN < < < 2 ) &CirclePlus; ( IN < < < 10 ) &CirclePlus; ( IN < < < 18 ) &CirclePlus; ( IN < < < 24 ) . 然后循环左移部件输出结果OUT进入第三异或部件,执行运算 X i &CirclePlus; OUT , 完成一轮迭代运算。该轮运算结果再继续进行下一轮的迭代,直至完成32轮运算结束加密操作,输出密文。
轮密钥扩展运算过程:
当输入数据为加密密钥时,控制器模块则会输出轮密钥扩展控制信号至运算模块、轮密钥存储模块和参数存储模块,这三个模块将处于轮密钥扩展模式。若为加密密钥,则首先进入第一异或部件,同时从参数存储模块读入系统参数。以FK表示系统参数,MK表示加密密钥,则执行运算 ( K 0 , K 1 , K 2 , K 3 ) = ( MK 0 &CirclePlus; FK 0 , MK 1 &CirclePlus; FK 1 , MK 2 &CirclePlus; FK 2 , MK 3 &CirclePlus; FK 3 ) , K为运算后的输出;若为未完成32轮迭代的中间运算数据,则进入第一异或部件,与从参数存储模块读入的零参数异或。第一异或部件的运算结果再进入第二异或部件,同时从参数存储模块读取相应轮次的固定参数CKi,则执行运算 K i + 1 &CirclePlus; K i + 2 &CirclePlus; K i + 3 &CirclePlus; CK i . 运算结果进入S盒部件完成查表运算后,进入循环左移部件,在循环左移部件中执行运算 OUT = L 2 ( IN ) = IN &CirclePlus; ( IN < < < 13 ) &CirclePlus; ( IN < < < 23 ) . 输出结果OUT再进入第三异或部件,执行运算 K i &CirclePlus; OUT , 完成一轮迭代运算,并产生新的轮密钥rki。运算模块将新的轮密钥发送至轮密钥存储模块,轮密钥存储模块则用新的轮密钥覆盖掉相应轮次的旧的轮密钥,完成更新过程。轮密钥扩展运算将继续下一轮迭代运算直至完成32轮轮密钥扩展操作,并在轮密钥存储模块中更新所有的旧轮密钥。
在现有技术中,由于实现SMS4算法的加解密系统的面积主要由加解密模块和轮密钥扩展模块决定,使用两个模块实现系统的功能将使得系统占用面积大。但本实施例采用模块复用的思想,仅使用一个运算模块来实现加解密运算和轮密钥扩展运算,与现有技术使用加解密模块和轮密钥扩展模块相比,不仅成功地降低部件冗余度,而且所占用的面积减少了一半。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。

Claims (2)

1.一种实现SMS4算法的加解密系统,其特征在于,包括:
控制器模块,用于控制系统处于何种工作模式;
运算模块,用于进行加解密运算和轮密钥扩展运算;
轮密钥存储模块,用于轮密钥的存储;
参数存储模块,用于系统参数、固定参数和零参数的存储;
若系统接收到明文或密文,则向所述控制器模块发出加解密模式设置信号,所述控制器模块则输出加解密控制信号至所述运算模块、所述轮密钥存储模块和所述参数存储模块;根据接收的所述加解密控制信号,所述运算模块、所述轮密钥存储模块和所述参数存储模块被设置为加解密模式,所述运算模块读取所述轮密钥和所述零参数对所述明文或所述密文进行加解密运算,并在完成32轮迭代加解密运算后输出密文或明文;
若系统接收到加密密钥,则向所述控制器模块发出轮密钥扩展模式设置信号,所述控制器模块则输出轮密钥扩展控制信号至所述运算模块、所述轮密钥存储模块和所述参数存储模块;根据接收的所述轮密钥扩展控制信号,所述运算模块、所述轮密钥存储模块和所述参数存储模块被设置为轮密钥扩展模式;所述运算模块读取所述系统参数和所述固定参数来对所述加密密钥进行轮密钥扩展运算,并根据迭代轮次输出轮密钥至所述轮密钥存储模块;所述轮密钥存储模块根据所述迭代轮次更新所述轮密钥。
2.根据权利要求1所述的实现SMS4算法的加解密系统,其特征在于,所述运算模块包括第一异或部件、第二异或部件、S盒部件、循环左移部件和第三异或部件;
所述第一异或部件用于实现所述加密密钥和所述系统参数的异或运算,或者除加密密钥以外的其他数据与所述零参数的异或运算;
所述第二异或部件用于在加解密模式时读入所述轮密钥进行加解密运算,或在轮密钥扩展模式时读入所述固定参数进行轮密钥扩展运算;
所述S盒部件用于在加解密模式或轮密钥扩展模式时对数据进行S盒查表运算;
所述循环左移部件用于对输入数据进行包括循环左移和异或的运算;所述循环左移部件先对输入数据执行四种带参数的循环左移运算,所述参数代表左移的比特个数,再对四种循环左移结果执行异或操作;当所述运算模块处于加解密模式时,所述参数为{2,10,18,24};当所述运算模块处于轮密钥扩展模式时,所述参数为{0,0,13,23};
所述第三异或部件用于在加解密模式或轮密钥扩展模式时对数据进行异或运算。
CN2009101933043A 2009-10-26 2009-10-26 实现sms4算法的加解密系统 Expired - Fee Related CN101764684B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101933043A CN101764684B (zh) 2009-10-26 2009-10-26 实现sms4算法的加解密系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101933043A CN101764684B (zh) 2009-10-26 2009-10-26 实现sms4算法的加解密系统

Publications (2)

Publication Number Publication Date
CN101764684A true CN101764684A (zh) 2010-06-30
CN101764684B CN101764684B (zh) 2012-07-04

Family

ID=42495681

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101933043A Expired - Fee Related CN101764684B (zh) 2009-10-26 2009-10-26 实现sms4算法的加解密系统

Country Status (1)

Country Link
CN (1) CN101764684B (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063179A (zh) * 2011-01-13 2011-05-18 浙江大学 一种生成轮密钥的分组密码算法的低功耗装置及方法
CN103269482A (zh) * 2010-09-06 2013-08-28 苏州国芯科技有限公司 无线局域网用加密方法
CN103338449A (zh) * 2010-09-06 2013-10-02 苏州国芯科技有限公司 用于提高网络安全性的算法硬件实现方法
CN103346879A (zh) * 2010-09-06 2013-10-09 苏州国芯科技有限公司 面积紧凑型加解密算法实现方法
CN103679061A (zh) * 2013-11-22 2014-03-26 北京民芯科技有限公司 国密sm4算法的可扩展高吞吐率的实现方法及装置
CN105740721A (zh) * 2016-01-21 2016-07-06 浪潮电子信息产业股份有限公司 一种数据加解密处理的装置、方法及系统
EP2889760A3 (en) * 2013-12-27 2018-01-17 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
CN108847924A (zh) * 2018-04-22 2018-11-20 平安科技(深圳)有限公司 加密方法、装置、计算机设备和存储介质
CN109150497A (zh) * 2018-07-26 2019-01-04 南京航空航天大学 一种高性能小面积的xts-sm4加密电路
CN109218008A (zh) * 2017-07-05 2019-01-15 北京同方微电子有限公司 一种针对sm4密钥扩展算法的模板攻击方法
CN109450617A (zh) * 2018-12-06 2019-03-08 成都卫士通信息产业股份有限公司 加解密方法及装置、电子设备、计算机可读存储介质
CN109617671A (zh) * 2018-12-21 2019-04-12 成都海光集成电路设计有限公司 加解密、扩展方法及装置、加解密系统、终端
CN110034918A (zh) * 2019-03-15 2019-07-19 深圳市纽创信安科技开发有限公司 一种sm4加速方法和装置
US10419210B2 (en) 2014-07-22 2019-09-17 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
CN110912679A (zh) * 2019-11-19 2020-03-24 海南众博数据科技有限公司 密码设备
US10778425B2 (en) 2014-09-26 2020-09-15 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
CN111950039A (zh) * 2020-08-17 2020-11-17 海光信息技术有限公司 一种数据处理装置、方法、内存控制器、处理器、电子设备
CN112035827A (zh) * 2020-11-03 2020-12-04 腾讯科技(深圳)有限公司 密码数据处理方法、装置、设备以及可读存储介质
CN114422111A (zh) * 2022-03-30 2022-04-29 湖北大学 一种轻量级的sm4算法的硬件实现电路

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107302431A (zh) * 2016-04-14 2017-10-27 深圳市中兴微电子技术有限公司 同时实现rsa/ecc加解密算法的装置

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103269482A (zh) * 2010-09-06 2013-08-28 苏州国芯科技有限公司 无线局域网用加密方法
CN103338449A (zh) * 2010-09-06 2013-10-02 苏州国芯科技有限公司 用于提高网络安全性的算法硬件实现方法
CN103346879A (zh) * 2010-09-06 2013-10-09 苏州国芯科技有限公司 面积紧凑型加解密算法实现方法
CN102063179A (zh) * 2011-01-13 2011-05-18 浙江大学 一种生成轮密钥的分组密码算法的低功耗装置及方法
CN103679061A (zh) * 2013-11-22 2014-03-26 北京民芯科技有限公司 国密sm4算法的可扩展高吞吐率的实现方法及装置
EP2889760A3 (en) * 2013-12-27 2018-01-17 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
US10419210B2 (en) 2014-07-22 2019-09-17 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US10476667B2 (en) 2014-07-22 2019-11-12 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US10469249B2 (en) 2014-07-22 2019-11-05 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US10454669B2 (en) 2014-07-22 2019-10-22 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US10447468B2 (en) 2014-07-22 2019-10-15 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US10425222B2 (en) 2014-07-22 2019-09-24 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US10778425B2 (en) 2014-09-26 2020-09-15 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
US11303438B2 (en) 2014-09-26 2022-04-12 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
US11849035B2 (en) 2014-09-26 2023-12-19 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher
CN105740721A (zh) * 2016-01-21 2016-07-06 浪潮电子信息产业股份有限公司 一种数据加解密处理的装置、方法及系统
CN109218008A (zh) * 2017-07-05 2019-01-15 北京同方微电子有限公司 一种针对sm4密钥扩展算法的模板攻击方法
CN109218008B (zh) * 2017-07-05 2023-12-19 紫光同芯微电子有限公司 一种针对sm4密钥扩展算法的模板攻击方法
WO2019205407A1 (zh) * 2018-04-22 2019-10-31 平安科技(深圳)有限公司 加密方法、装置、计算机设备和存储介质
CN108847924A (zh) * 2018-04-22 2018-11-20 平安科技(深圳)有限公司 加密方法、装置、计算机设备和存储介质
CN109150497A (zh) * 2018-07-26 2019-01-04 南京航空航天大学 一种高性能小面积的xts-sm4加密电路
CN109450617A (zh) * 2018-12-06 2019-03-08 成都卫士通信息产业股份有限公司 加解密方法及装置、电子设备、计算机可读存储介质
CN109617671A (zh) * 2018-12-21 2019-04-12 成都海光集成电路设计有限公司 加解密、扩展方法及装置、加解密系统、终端
CN110034918A (zh) * 2019-03-15 2019-07-19 深圳市纽创信安科技开发有限公司 一种sm4加速方法和装置
CN110034918B (zh) * 2019-03-15 2023-10-20 深圳市纽创信安科技开发有限公司 一种sm4加速方法和装置
CN110912679A (zh) * 2019-11-19 2020-03-24 海南众博数据科技有限公司 密码设备
CN111950039A (zh) * 2020-08-17 2020-11-17 海光信息技术有限公司 一种数据处理装置、方法、内存控制器、处理器、电子设备
CN112035827A (zh) * 2020-11-03 2020-12-04 腾讯科技(深圳)有限公司 密码数据处理方法、装置、设备以及可读存储介质
CN112035827B (zh) * 2020-11-03 2022-02-08 腾讯科技(深圳)有限公司 密码数据处理方法、装置、设备以及可读存储介质
CN114422111A (zh) * 2022-03-30 2022-04-29 湖北大学 一种轻量级的sm4算法的硬件实现电路

Also Published As

Publication number Publication date
CN101764684B (zh) 2012-07-04

Similar Documents

Publication Publication Date Title
CN101764684B (zh) 实现sms4算法的加解密系统
CN101764685B (zh) 实现sms4算法的加解密系统
ES2565816T3 (es) Aparato de conversión de datos y método de conversión de datos
CN103812641A (zh) 一种实现sm4分组对称密码算法的系统
CN105490802B (zh) 基于gpu的改进sm4并行加解密通信方法
US7039184B2 (en) Encryption/decryption unit and storage medium
CN1921382B (zh) 一种基于aes算法的加解密方法及加解密器
CN104639314A (zh) 基于aes加密/解密算法的装置和流水控制方法
WO2008026625A1 (fr) Dispositif de codage, procédé de codage et programme informatique
CN103516512A (zh) 基于aes算法的加解密方法及加解密器
CN104852798B (zh) 一种数据加解密系统及方法
KR100525389B1 (ko) 실시간 입력 스트림의 암호화/복호화 장치
CN101350714A (zh) 采用混合rijndael s-box的有效高级加密标准数据路径
JP4025722B2 (ja) データ暗号化のための方法および装置
CN106034021B (zh) 轻量级双模兼容aes加解密模块及其方法
CN102801519A (zh) 一种实现aes加解密的方法及装置
CN105916141B (zh) 一种自同步的祖冲之加解密算法的实现系统及其方法
US20120237035A1 (en) Key scheduling device and key scheduling method
CN104219045A (zh) Rc4 流密码生成器
CN100561911C (zh) 一种AES加解密电路中Sbox模块优化方法及优化电路
US20120321079A1 (en) System and method for generating round keys
CN102780557B (zh) 一种选择门优化的aes加解密方法及装置
CN100393026C (zh) 二进制数据块加密变换方法
US20240097880A1 (en) High-speed circuit combining aes and sm4 encryption and decryption
CN102857334B (zh) 一种实现aes加解密的方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120704

Termination date: 20201026

CF01 Termination of patent right due to non-payment of annual fee