CN107342865A - 一种基于sm4的认证加密算法和解密算法 - Google Patents

一种基于sm4的认证加密算法和解密算法 Download PDF

Info

Publication number
CN107342865A
CN107342865A CN201710470765.5A CN201710470765A CN107342865A CN 107342865 A CN107342865 A CN 107342865A CN 201710470765 A CN201710470765 A CN 201710470765A CN 107342865 A CN107342865 A CN 107342865A
Authority
CN
China
Prior art keywords
mrow
msub
state
state value
circleplus
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
CN201710470765.5A
Other languages
English (en)
Other versions
CN107342865B (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.)
Guizhou Anrong Technology Development Co., Ltd
Original Assignee
Guizhou Xin'an 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 Guizhou Xin'an Technology Co Ltd filed Critical Guizhou Xin'an Technology Co Ltd
Priority to CN201710470765.5A priority Critical patent/CN107342865B/zh
Publication of CN107342865A publication Critical patent/CN107342865A/zh
Application granted granted Critical
Publication of CN107342865B publication Critical patent/CN107342865B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying

Abstract

本发明涉及一种基于SM4的认证加密算法,包括:步骤S1、定义加密算法所需要的变量参数;步骤S2、输入用户密钥Key、系统参数IV和斐波那契数列模256后的32字节16进制序列const,利用状态更新函数得到数据初始化后的状态值Su;步骤S3、将明文P和Su输入到状态更新函数中进行v轮状态更新,得到状态值Su+v;同时,将明文P和Su利用对称密码算法SM4进行加密,得到密文C;步骤S4、定义临时参数tmp,将临时参数tmp和Su+v输入到状态更新函数中进行7轮状态更新,得到状态值Su+v+7;步骤S5、根据状态值Su+v+7,按预设认证码生成算法得到明文P的认证码Tag。通过本发明的技术方案,能够解决现有技术中数据传输过程中无法保证其传输数据的安全性和完整性的问题。

Description

一种基于SM4的认证加密算法和解密算法
技术领域
本发明涉及加密算法技术领域,具体涉及一种基于SM4的认证加密算法和解密算法。
背景技术
近些年,国家对信息安全的关注已经上升到一个空前的高度。由于黑客技术的迅猛发展,人们的日常生活受到严重的影响,如陌生诈骗电话、银行卡密码盗取、支付宝余额不翼而飞以及个人身份信息泄露等。身边的信息危害无处不在,那么如何保障数据的机密性和真实性俨然成为社会讨论的热点话题,也是大家高度关注的课题。
原来用于无线局域网的国密算法SMS4被定义为SM4作为密码行业标准发布。SM4是一个分组对称密钥算法,明文、密钥、密文都是16字节,加密和解密密钥相同。通过32次循环的非线性迭代轮函数来实现加密和解密。其中包括非线性变换S盒,以及由移位异或构成的线性变换。除了256字节的S盒之外,还定义了另外两组参数FK以及CK(具体数据参考密码局网站)。基本过程是首先把16字节密钥按照4字节一组分成4组,然后根据密钥扩展算法,生成32组4字节轮密钥;再把输入的16字节数据也按照4字节一组分成4组然后进行循环运算(这点和AES算法类似)。
认证加密算法是基于对称密码的密码技术。它能够保证数据在信道传输过程中数据的机密性和真实性,让不法分子难以伪造篡改数据,在一定程度上能够解决上述问题。
针对目前数据在传输过程中,无法保证其传输信道的安全性和完整性。那么在传输的过程中,数据有可能被窃取或篡改,导致数据的不可信。目前,手机验证码已经全面普及到我们的生活中,很多登录信息、支付信息以及验证信息都是通过验证码传输到手机上,那这个过程就非常危险。为了解决这一问题,本发明提出一种基于国标对称密码SM4的认证加密算法SMAE,该算法能够保证数据的机密性和完整性,能够在一定程度上解决该问题。
发明内容
有鉴于此,本发明的目的在于克服现有技术的不足,提供一种基于SM4的认证加密算法和解密算法,以解决现有技术中数据传输过程中无法保证其传输数据的安全性和完整性的问题。
为实现以上目的,本发明采用如下技术方案:
一种基于SM4的认证加密算法,包括:
步骤S1、定义加密算法所需要的变量参数;其中,所述变量参数包括:用户密钥Key、系统参数IV、斐波那契数列模256后的32字节16进制序列const;
步骤S2、输入用户密钥Key、系统参数IV和斐波那契数列模256后的32字节16进制序列const,利用状态更新函数得到数据初始化后的状态值Su
步骤S3、将明文P和Su输入到状态更新函数中进行v轮状态更新,得到状态值Su+v;同时,将明文P和Su利用对称密码算法SM4进行加密,得到密文C;
步骤S4、定义临时参数tmp,将临时参数tmp和Su+v输入到状态更新函数中进行7轮状态更新,得到状态值Su+v+7
步骤S5、根据状态值Su+v+7,按预设认证码生成算法得到明文P的认证码Tag。
优选地,所述步骤S2包括:
步骤S21、输入用户密钥Key、系统参数IV和斐波那契数列模256后的32字节16进制序列const,对初始状态S-10,j,j=0,1,2,3,4进行赋值;
S-10,1=const1
S-10,2=const0
步骤S22、载入用户密钥Key和系统参数IV初始化16字节的数据集mi={m2k,m2k+1,k=-5,-4,-3,...,-1};
m2k=key
步骤S23、将数据集mi和初始状态S-10,i的赋值输入到状态更新函数中进行10轮状态更新,得到10轮状态更新后的状态值S0
步骤S24、将相关数据AD按照128bit分为u组,记为AD={ADi,i=0,1,...u-1}后,将ADi和步骤S23输出的状态值输入到状态更新函数中进行u轮状态更新,得到u轮状态更新后的状态值Su
优选地,所述步骤S23具体为:
将数据集mi和初始状态S-10,i的赋值输入状态更新函数:
Si+1,1=SM4Round(Si,0,T(Si,1))
Si+1,2=SM4Round(Si,1,T(Si,2))
Si+1,3=SM4Round(Si,2,T(Si,3))
Si+1,4=SM4Round(Si,3,T(Si,4))
其中,i=-10,-9,...,-1,其中为线性变换;经过10轮状态更新后的状态值为:
优选地,所述步骤S24具体为:
将相关数据AD按照128bit分为u组,记为AD={ADi,i=0,1,...u-1};
将ADi和步骤S23输出的状态值输入到状态更新函数中进行u轮状态更新:
Si+1,1=SM4Round(Si,0,T(Si,1))
Si+1,2=SM4Round(Si,1,T(Si,2))
Si+1,3=SM4Round(Si,2,T(Si,3))
Si+1,4=SM4Round(Si,3,T(Si,4))
其中,i=0,1,2,...,u-1;经过u轮状态更新后的状态值为:
优选地,所述步骤S3包括:
步骤S31、将输入的明文P按16-byte分为v组,记为P={Pm,m=0,1,...v-1},若最后一个明文分组Pv-1不足128bits,用0进行填充补齐;
步骤S32、将Pm和步骤S2输出的状态值Su输入到状态更新函数中进行v轮状态更新,得到状态值Su+v
步骤S33、利用对称密码算法SM4加密Pm和步骤S1输出的状态值Su,得到密文C=C0||C1||...||Cv-1,Cm=SM4(Pm,Su+m),其中,Su+m作为加密密钥,Su+m根据步骤S22中的状态更新函数求解Su+m+1=StateUpdate(Su+m,Pm)。
优选地,所述步骤S4包括:
步骤S41、定义临时参数tmp,其中,msglen为明文P的消息长度,adlen为相关数据AD的数据长度;
步骤S42、将临时参数tmp和步骤S3输出的状态值Su+v输入到状态更新函数中进行7轮状态更新,得到状态值Su+v+7=(Su+v+7,0,Su+v+7,1,Su+v+7,2,Su+v+7,3,Su+v+7,4)。
优选地,所述步骤S5具体为:
计算取T的前t位作为明文P的认证码Tag,64≤t≤128。
一种基于SM4的认证解密算法,与上述的基于SM4的认证加密算法配套使用,包括:
步骤S101、输入密文C、密钥Key以及认证码Tag,利用状态更新函数得到数据初始化后的状态值;
步骤S102、对密文C进行分组,对分组后的密文顺序解密,然后再利用状态更新函数更新状态值;
步骤S103、执行加密算法中的认证码生成算法,得到新的认证码Tag’;
步骤S104、比对Tag’和Tag,如果两个认证码相匹配,那么系统解密出正确的明文P,否则加密失败,解密出的消息无效,说明明文P可能被篡改。
优选地,所述步骤S102中,对密文C按128bit进行分组。
优选地,所述步骤S102中,对分组后的密文按SM4解密算法顺序解密。
本发明采用以上技术方案,至少具备以下有益效果:
由上述技术方案可知,本发明提供的这种基于SM4的认证加密算法,利用国标对称密码算法SM4构造了一种认证加密算法,该算法并不是简单地将加密算法和认证码生成算法组合在一起,而是让加密算法和认证码生成算法进行步骤共享(例如:都利用了状态更新函数更新状态值,而本发明提供的这种状态更新函数是发明人在现有技术的基础上探索构建的,安全性能高,黑客很难基于现有技术进行破解),这种认证加密算法能够提高算法效率,安全性高,是一种能够同时保证数据安全性和完整性的算法。
可以理解的是,在日常生活中,手机验证码已经普及到我们每一个人中,无论是电子支付、身份认证、用户注册等等都必须要使用手机验证码。由此可见,验证码在日常事务中扮演着很重要的角色。但是,一般情况下,短信验证码都是以明文的形式发送到用户的手机上,如此高风险的验证码也是导致了近年来网络诈骗事件频频发生,不法分子凭借截取短信验证码,就可以实施转账操作。而本发明的技术方案,对明文加密的同时,对验证码的生成方式进行了改进,针对验证码的安全漏洞,能够提供相应的安全解决方案(本发明提供的是算法改进后的认证码),保障了验证码的安全性和完整性。同时,SM4是我国对称密码国标算法,具有自主可控权,能够在一定程度上防止国外恶意攻击。进一步提高了数据传输过程中数据的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的基于SM4的认证加密算法的流程示意图;
图2为本发明一实施例提供的基于SM4的认证解密算法的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
参见图1,本发明一实施例提供的一种基于SM4的认证加密算法,包括:
步骤S1、定义加密算法所需要的变量参数(参见如下表一);其中,所述变量参数包括:用户密钥Key、系统参数IV、斐波那契数列模256后的32字节16进制序列const;
步骤S2、输入用户密钥Key、系统参数IV和斐波那契数列模256后的32字节16进制序列const,利用状态更新函数得到数据初始化后的状态值Su
步骤S3、将明文P和Su输入到状态更新函数中进行v轮状态更新,得到状态值Su+v;同时,将明文P和Su利用对称密码算法SM4进行加密,得到密文C;
步骤S4、定义临时参数tmp,将临时参数tmp和Su+v输入到状态更新函数中进行7轮状态更新,得到状态值Su+v+7
步骤S5、根据状态值Su+v+7,按预设认证码生成算法得到明文P的认证码Tag。
表一
由上述技术方案可知,本发明提供的这种基于SM4的认证加密算法,利用国标对称密码算法SM4构造了一种认证加密算法,该算法并不是简单地将加密算法和认证码生成算法组合在一起,而是让加密算法和认证码生成算法进行步骤共享(例如:都利用了状态更新函数更新状态值,而本发明提供的这种状态更新函数是发明人在现有技术的基础上探索构建的,安全性能高,黑客很难基于现有技术进行破解),这种认证加密算法能够提高算法效率,安全性高,是一种能够同时保证数据安全性和完整性的算法。
可以理解的是,在日常生活中,手机验证码已经普及到我们每一个人中,无论是电子支付、身份认证、用户注册等等都必须要使用手机验证码。由此可见,验证码在日常事务中扮演着很重要的角色。但是,一般情况下,短信验证码都是以明文的形式发送到用户的手机上,如此高风险的验证码也是导致了近年来网络诈骗事件频频发生,不法分子凭借截取短信验证码,就可以实施转账操作。而本发明的技术方案,对明文加密的同时,对验证码的生成方式进行了改进,针对验证码的安全漏洞,能够提供相应的安全解决方案(本发明提供的算法改进后的认证码),保障了验证码的安全性和完整性。同时,SM4是我国对称密码国标算法,具有自主可控权,能够在一定程度上防止国外恶意攻击。进一步提高了数据传输过程中数据的安全性。
优选地,所述步骤S2包括:
步骤S21、输入用户密钥Key、系统参数IV和斐波那契数列模256后的32字节16进制序列const,对初始状态S-10,j,j=0,1,2,3,4进行赋值;
S-10,1=const1
S-10,2=const0
步骤S22、载入用户密钥Key和系统参数IV初始化16字节的数据集mi={m2k,m2k+1,k=-5,-4,-3,...,-1};
m2k=key
步骤S23、将数据集mi和初始状态S-10,i的赋值输入到状态更新函数中进行10轮状态更新,得到10轮状态更新后的状态值S0
步骤S24、将相关数据AD按照128bit分为u组,记为AD={ADi,i=0,1,...u-1}后,将ADi和步骤S23输出的状态值输入到状态更新函数中进行u轮状态更新,得到u轮状态更新后的状态值Su
优选地,所述步骤S23具体为:
将数据集mi和初始状态S-10,i的赋值输入状态更新函数:
Si+1,1=SM4Round(Si,0,T(Si,1))
Si+1,2=SM4Round(Si,1,T(Si,2))
Si+1,3=SM4Round(Si,2,T(Si,3))
Si+1,4=SM4Round(Si,3,T(Si,4))
其中,i=-10,-9,...,-1,其中为线性变换;经过10轮状态更新后的状态值为:
优选地,所述步骤S24具体为:
将相关数据AD按照128bit分为u组,记为AD={ADi,i=0,1,...u-1};
将ADi和步骤S23输出的状态值输入到状态更新函数中进行u轮状态更新:
Si+1,1=SM4Round(Si,0,T(Si,1))
Si+1,2=SM4Round(Si,1,T(Si,2))
Si+1,3=SM4Round(Si,2,T(Si,3))
Si+1,4=SM4Round(Si,3,T(Si,4))
其中,i=0,1,2,...,u-1;经过u轮状态更新后的状态值为:
优选地,所述步骤S3包括:
步骤S31、将输入的明文P按16-byte分为v组,记为P={Pm,m=0,1,...v-1},若最后一个明文分组Pv-1不足128bits,用0进行填充补齐;
步骤S32、将Pm和步骤S2输出的状态值Su输入到状态更新函数中进行v轮状态更新,得到状态值Su+v
步骤S33、利用对称密码算法SM4加密Pm和步骤S1输出的状态值Su,得到密文C=C0||C1||...||Cv-1,Cm=SM4(Pm,Su+m),其中,Su+m作为加密密钥,Su+m根据步骤S22中的状态更新函数求解Su+m+1=StateUpdate(Su+m,Pm)。
优选地,所述步骤S4包括:
步骤S41、定义临时参数tmp,其中,msglen为明文P的消息长度,adlen为相关数据AD的数据长度;
步骤S42、将临时参数tmp和步骤S3输出的状态值Su+v输入到状态更新函数中进行7轮状态更新,得到状态值Su+v+7=(Su+v+7,0,Su+v+7,1,Su+v+7,2,Su+v+7,3,Su+v+7,4)。
优选地,所述步骤S5具体为:
计算取T的前t位作为明文P的认证码Tag,64≤t≤128。
参见图2,本发明还提出了一种基于SM4的认证解密算法,与上述的基于SM4的认证加密算法配套使用,包括:
步骤S101、输入密文C、密钥Key以及认证码Tag,利用状态更新函数得到数据初始化后的状态值;
步骤S102、对密文C进行分组,对分组后的密文顺序解密,然后再利用状态更新函数更新状态值;
步骤S103、执行加密算法中的认证码生成算法,得到新的认证码Tag’;
步骤S104、比对Tag’和Tag,如果两个认证码相匹配,那么系统解密出正确的明文P,否则加密失败,解密出的消息无效,说明明文P可能被篡改。
优选地,所述步骤S102中,对密文C按128bit进行分组。
优选地,所述步骤S102中,对分组后的密文按SM4解密算法顺序解密。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“多个”指两个或两个以上,除非另有明确的限定。

Claims (10)

1.一种基于SM4的认证加密算法,其特征在于,包括:
步骤S1、定义加密算法所需要的变量参数;其中,所述变量参数包括:用户密钥Key、系统参数IV、斐波那契数列模256后的32字节16进制序列const;
步骤S2、输入用户密钥Key、系统参数IV和斐波那契数列模256后的32字节16进制序列const,利用状态更新函数得到数据初始化后的状态值Su
步骤S3、将明文P和Su输入到状态更新函数中进行v轮状态更新,得到状态值Su+v;同时,将明文P和Su利用对称密码算法SM4进行加密,得到密文C;
步骤S4、定义临时参数tmp,将临时参数tmp和Su+v输入到状态更新函数中进行7轮状态更新,得到状态值Su+v+7
步骤S5、根据状态值Su+v+7,按预设认证码生成算法得到明文P的认证码Tag。
2.根据权利要求1所述的基于SM4的认证加密算法,其特征在于,所述步骤S2包括:
步骤S21、输入用户密钥Key、系统参数IV和斐波那契数列模256后的32字节16进制序列const,对初始状态S-10,j,j=0,1,2,3,4进行赋值;
<mrow> <msub> <mi>S</mi> <mrow> <mo>-</mo> <mn>10</mn> <mo>,</mo> <mn>0</mn> </mrow> </msub> <mo>=</mo> <mi>K</mi> <mi>e</mi> <mi>y</mi> <mo>&amp;CirclePlus;</mo> <mi>I</mi> <mi>V</mi> </mrow>
S-10,1=const1
S-10,2=const0
<mrow> <msub> <mi>S</mi> <mrow> <mo>-</mo> <mn>10</mn> <mo>,</mo> <mn>3</mn> </mrow> </msub> <mo>=</mo> <mi>K</mi> <mi>e</mi> <mi>y</mi> <mo>&amp;CirclePlus;</mo> <msub> <mi>const</mi> <mn>0</mn> </msub> </mrow>
<mrow> <msub> <mi>S</mi> <mrow> <mo>-</mo> <mn>10</mn> <mo>,</mo> <mn>4</mn> </mrow> </msub> <mo>=</mo> <mi>K</mi> <mi>e</mi> <mi>y</mi> <mo>&amp;CirclePlus;</mo> <msub> <mi>const</mi> <mn>1</mn> </msub> </mrow>
步骤S22、载入用户密钥Key和系统参数IV初始化16字节的数据集mi={m2k,m2k+1,k=-5,-4,-3,...,-1};
m2k=key
<mrow> <msub> <mi>m</mi> <mrow> <mn>2</mn> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mi>k</mi> <mi>e</mi> <mi>y</mi> <mo>&amp;CirclePlus;</mo> <mi>I</mi> <mi>V</mi> </mrow>
步骤S23、将数据集mi和初始状态S-10,i的赋值输入到状态更新函数中进行10轮状态更新,得到10轮状态更新后的状态值S0
步骤S24、将相关数据AD按照128bit分为u组,记为AD={ADi,i=0,1,...u-1}后,将ADi和步骤S23输出的状态值输入到状态更新函数中进行u轮状态更新,得到u轮状态更新后的状态值Su
3.根据权利要求2所述的基于SM4的认证加密算法,其特征在于,所述步骤S23具体为:
将数据集mi和初始状态S-10,i的赋值输入状态更新函数:
<mrow> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mn>0</mn> </mrow> </msub> <mo>=</mo> <mi>S</mi> <mi>M</mi> <mn>4</mn> <mi>R</mi> <mi>o</mi> <mi>u</mi> <mi>n</mi> <mi>d</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>,</mo> <mn>4</mn> </mrow> </msub> <mo>,</mo> <mi>T</mi> <mo>(</mo> <mrow> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>,</mo> <mn>0</mn> </mrow> </msub> <mo>&amp;CirclePlus;</mo> <msub> <mi>m</mi> <mi>i</mi> </msub> </mrow> <mo>)</mo> <mo>)</mo> </mrow> </mrow>
Si+1,1=SM4Round(Si,0,T(Si,1))
Si+1,2=SM4Round(Si,1,T(Si,2))
Si+1,3=SM4Round(Si,2,T(Si,3))
Si+1,4=SM4Round(Si,3,T(Si,4))
<mrow> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mn>0</mn> </mrow> </msub> <mo>&amp;CirclePlus;</mo> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mn>1</mn> </mrow> </msub> <mo>&amp;CirclePlus;</mo> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> </mrow> </msub> <mo>&amp;CirclePlus;</mo> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mn>3</mn> </mrow> </msub> <mo>&amp;CirclePlus;</mo> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mn>4</mn> </mrow> </msub> </mrow>
其中,i=-10,-9,...,-1,其中为线性变换;经过10轮状态更新后的状态值为:
4.根据权利要求3所述的基于SM4的认证加密算法,其特征在于,所述步骤S24具体为:
将相关数据AD按照128bit分为u组,记为AD={ADi,i=0,1,...u-1};
将ADi和步骤S23输出的状态值输入到状态更新函数中进行u轮状态更新:
<mrow> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mn>0</mn> </mrow> </msub> <mo>=</mo> <mi>S</mi> <mi>M</mi> <mn>4</mn> <mi>R</mi> <mi>o</mi> <mi>u</mi> <mi>n</mi> <mi>d</mi> <mrow> <mo>(</mo> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>,</mo> <mn>4</mn> </mrow> </msub> <mo>,</mo> <mi>T</mi> <mo>(</mo> <mrow> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>,</mo> <mn>0</mn> </mrow> </msub> <mo>&amp;CirclePlus;</mo> <msub> <mi>AD</mi> <mi>i</mi> </msub> </mrow> <mo>)</mo> <mo>)</mo> </mrow> </mrow>
Si+1,1=SM4Round(Si,0,T(Si,1))
Si+1,2=SM4Round(Si,1,T(Si,2))
Si+1,3=SM4Round(Si,2,T(Si,3))
Si+1,4=SM4Round(Si,3,T(Si,4))
<mrow> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mn>0</mn> </mrow> </msub> <mo>&amp;CirclePlus;</mo> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mn>1</mn> </mrow> </msub> <mo>&amp;CirclePlus;</mo> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> </mrow> </msub> <mo>&amp;CirclePlus;</mo> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mn>3</mn> </mrow> </msub> <mo>&amp;CirclePlus;</mo> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mn>4</mn> </mrow> </msub> </mrow>
其中,i=0,1,2,...,u-1;经过u轮状态更新后的状态值为:
5.根据权利要求4所述的基于SM4的认证加密算法,其特征在于,所述步骤S3包括:
步骤S31、将输入的明文P按16-byte分为v组,记为P={Pm,m=0,1,...v-1},若最后一个明文分组Pv-1不足128bits,用0进行填充补齐;
步骤S32、将Pm和步骤S2输出的状态值Su输入到状态更新函数中进行v轮状态更新,得到状态值Su+v
步骤S33、利用对称密码算法SM4加密Pm和步骤S1输出的状态值Su,得到密文C=C0||C1||...||Cv-1,Cm=SM4(Pm,Su+m),其中,Su+m作为加密密钥,Su+m根据步骤S22中的状态更新函数求解Su+m+1=StateUpdate(Su+m,Pm)。
6.根据权利要求5所述的基于SM4的认证加密算法,其特征在于,所述步骤S4包括:
步骤S41、定义临时参数tmp,其中,msglen为明文P的消息长度,adlen为相关数据AD的数据长度;
步骤S42、将临时参数tmp和步骤S3输出的状态值Su+v输入到状态更新函数中进行7轮状态更新,得到状态值Su+v+7=(Su+v+7,0,Su+v+7,1,Su+v+7,2,Su+v+7,3,Su+v+7,4)。
7.根据权利要求6所述的基于SM4的认证加密算法,其特征在于,所述步骤S5具体为:
计算取T的前t位作为明文P的认证码Tag,64≤t≤128。
8.一种基于SM4的认证解密算法,与权利要求1~7任一项所述的基于SM4的认证加密算法配套使用,其特征在于,包括:
步骤S101、输入密文C、密钥Key以及认证码Tag,利用状态更新函数得到数据初始化后的状态值;
步骤S102、对密文C进行分组,对分组后的密文顺序解密,然后再利用状态更新函数更新状态值;
步骤S103、执行加密算法中的认证码生成算法,得到新的认证码Tag’;
步骤S104、比对Tag’和Tag,如果两个认证码相匹配,那么系统解密出正确的明文P,否则加密失败,解密出的消息无效,说明明文P可能被篡改。
9.根据权利要求8所述的认证解密算法,其特征在于,所述步骤S102中,对密文C按128bit进行分组。
10.根据权利要求8所述的认证解密算法,其特征在于,所述步骤S102中,对分组后的密文按SM4解密算法顺序解密。
CN201710470765.5A 2017-06-20 2017-06-20 一种基于sm4的认证加密算法 Active CN107342865B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710470765.5A CN107342865B (zh) 2017-06-20 2017-06-20 一种基于sm4的认证加密算法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710470765.5A CN107342865B (zh) 2017-06-20 2017-06-20 一种基于sm4的认证加密算法

Publications (2)

Publication Number Publication Date
CN107342865A true CN107342865A (zh) 2017-11-10
CN107342865B CN107342865B (zh) 2020-07-10

Family

ID=60220802

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710470765.5A Active CN107342865B (zh) 2017-06-20 2017-06-20 一种基于sm4的认证加密算法

Country Status (1)

Country Link
CN (1) CN107342865B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110098940A (zh) * 2019-06-10 2019-08-06 卓尔智联(武汉)研究院有限公司 电子邮件签名方法、装置及存储介质
CN111464296A (zh) * 2020-03-30 2020-07-28 卓尔智联(武汉)研究院有限公司 序列密码生成方法、数据加密方法和数据解密方法
CN112235319A (zh) * 2020-12-09 2021-01-15 卓尔智联(武汉)研究院有限公司 数据加密、解密方法、装置和加解密电路

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160026468A1 (en) * 2014-07-22 2016-01-28 Intel Corporation Sm4 acceleration processors, methods, systems, and instructions
CN105515758A (zh) * 2015-11-27 2016-04-20 桂林电子科技大学 基于Modbus协议的数据并行加密通信方法和系统
CN106357380A (zh) * 2016-10-11 2017-01-25 中国信息安全测评中心 Sm4算法的掩码方法及装置
CN106712930A (zh) * 2017-01-24 2017-05-24 北京炼石网络技术有限公司 一种sm4加密方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160026468A1 (en) * 2014-07-22 2016-01-28 Intel Corporation Sm4 acceleration processors, methods, systems, and instructions
CN105515758A (zh) * 2015-11-27 2016-04-20 桂林电子科技大学 基于Modbus协议的数据并行加密通信方法和系统
CN106357380A (zh) * 2016-10-11 2017-01-25 中国信息安全测评中心 Sm4算法的掩码方法及装置
CN106712930A (zh) * 2017-01-24 2017-05-24 北京炼石网络技术有限公司 一种sm4加密方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110098940A (zh) * 2019-06-10 2019-08-06 卓尔智联(武汉)研究院有限公司 电子邮件签名方法、装置及存储介质
CN111464296A (zh) * 2020-03-30 2020-07-28 卓尔智联(武汉)研究院有限公司 序列密码生成方法、数据加密方法和数据解密方法
CN111464296B (zh) * 2020-03-30 2020-12-25 卓尔智联(武汉)研究院有限公司 序列密码生成方法、数据加密方法和数据解密方法
CN112235319A (zh) * 2020-12-09 2021-01-15 卓尔智联(武汉)研究院有限公司 数据加密、解密方法、装置和加解密电路

Also Published As

Publication number Publication date
CN107342865B (zh) 2020-07-10

Similar Documents

Publication Publication Date Title
CN108880800B (zh) 基于量子保密通信的配用电通信系统及方法
CN107358441B (zh) 支付验证的方法、系统及移动设备和安全认证设备
CN102801730B (zh) 一种用于通讯及便携设备的信息防护方法及装置
CN108347419A (zh) 数据传输方法和装置
CN108768930A (zh) 一种数据的加密传输方法
CN101938354B (zh) 一种基于模幂运算的密钥分发方法及其应用
CN106101150B (zh) 加密算法的实现方法和系统
CN107135070A (zh) Rsa密钥对和证书的注入方法、架构及系统
CN102082790A (zh) 一种数字签名的加/解密方法及装置
CN105743645A (zh) 基于puf的流秘钥生成装置、方法及数据加密、解密方法
CN107453880A (zh) 一种云数据安全存储方法和系统
CN107707562A (zh) 一种非对称动态令牌加、解密算法的方法、装置
CN103179514A (zh) 一种敏感信息的手机安全群分发方法和装置
KR100668446B1 (ko) 안전한 인증정보 이동방법
CN107342865A (zh) 一种基于sm4的认证加密算法和解密算法
CN102404120A (zh) 电子文档的加密方法及系统
CN101867471A (zh) 基于无理数的des认证加密算法
CN103051459A (zh) 安全卡的交易密钥的管理方法和装置
CN114331456A (zh) 一种通信方法、装置、系统以及可读存储介质
CN102056156B (zh) 将计算机数据安全下载至移动终端的方法及系统
CN108551391A (zh) 一种基于USB-key的认证方法
CN106817369A (zh) 数据安全交互方法和系统
CN107689867B (zh) 一种在开放环境下的密钥保护方法和系统
CN105282738A (zh) 移动终端安全认证方法
CN101877849A (zh) 无线模块与外部设备之间通讯的方法

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20190107

Address after: 554300 No. 18 Xingtong Road, Tongren City, Guizhou Province, with No. 1

Applicant after: Li Xuesong

Address before: No. 8, Xingyi Road, Guiyang National High-tech Industrial Development Zone, Guiyang City, Guizhou Province, with No. 12 attached

Applicant before: Guizhou Xin'an Technology Co. Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200608

Address after: 550003 room 224, building 501, Guizhou Electronic Technology Vocational College, Tianji Road, Machang science and technology new town, Gui'an New District, Guiyang City, Guizhou Province

Applicant after: Guizhou Anrong Technology Development Co., Ltd

Address before: 554300 No. 18 Xingtong Road, Tongren City, Guizhou Province, with No. 1

Applicant before: Li Xuesong

GR01 Patent grant
GR01 Patent grant