基于杂凑函数SM3的后量子数字签名
SM3杂凑密码算法

5
A TT 1 H G G F 19 FE
E P0 (TT 2)
ENDFOR
V i 1 ABCDEFGH V i
其中,字的存储为大端(big-endian)格式,左边为高有效位,右边为低有效位。 4.4 杂凑值
ABCDEFGH V n
输出256比特的杂凑值 y ABCDEFGH 。
其中 X , Y , Z 为字。 3.4 置换函数
0 j 15 16 j 63 0 j 15 16 j 63
P0 ( X ) X ( X 9) ( X 17) P 1 ( X ) X ( X 15) ( X 23)
00000000 00000000 000c0606 00000000 055d68be a5b9c955 e16f6e89 09008723 e11db9dd
2
SM3 密码杂凑算法
术语和定义 下列术语和定义适用于本文件。 1.1 比特串 bit string 具有0或1值的二进制数字序列。 1.2 大端 big-endian 数据在内存中的一种表示格式,规定左边为高有效位, 右边为低有效位。 即数的高阶字节放在存储器的 低地址,数的低阶字节放在存储器的高地址。 1.3 消息 message 任意有限长度的比特串,本标准中消息作为杂凑算法的输入数据。 1.4 杂凑值 hash value 杂凑算法作用于一条消息时输出的消息摘要(比特串)。 1.5 字 word 长度为32比特的组(串)。 符号 下列符号适用于本文件。 ABCDEFGH:8 个字寄存器或它们的值的串连 B(i):第 i 个消息分组 CF:压缩函数 FFj:布尔函数,随 j 的变化取不同的表达式 GGj:布尔函数,随 j 的变化取不同的表达式 IV:初始值,用于确定压缩函数寄存器的初态 P0:压缩函数中的置换函数 P1:消息扩展中的置换函数 Tj:算法常量,随 j 的变化取不同的值 m:消息 m:填充后的消息 mod:模运算 n:消息分组个数
SM3_密码杂凑算法的安全性问题分析及应用

692023年12月上 第23期 总第419期信息技术与应用China Science & Technology Overview0 引言杂凑函数在密码学中具有重要的地位,安全的杂凑函数能够抵抗碰撞攻击、原根攻击和第二原根攻击等[1]。
很多的方式能够攻击杂凑函数,比如基于模差分的碰撞攻击[2-3]方法、基于中间相遇攻击[4]的原根攻击[5]方法等。
各个国家早已制定相关的杂凑算法标准,我国于2010年公布了中国商用杂凑算法标准,并且命名为SM3杂凑算法。
该算法能够对输入明文信息进行填充分块,将明文分为有限个512bit 的数据块,再将生成的数据块进行扩展,随后进行迭代加密,最终输出密文数据。
因为每一轮的迭代压缩过程生成的密文长度是固定的,所以理论上SM3杂凑算法是一定能够受到伪原根攻击,攻击轮数不同,时间复杂度也会不同。
在加密时,SM3杂凑算法部分轮数是不随机的,所以攻击轮数的减少对于攻击算法的随机性影响较大。
1 SM3杂凑密码算法密码杂凑算法是类基础密码算法之一,该算法于2012年发布为密码行业标准(GM/T 0004-2012),2016 年发布为国家密码杂凑算法标准(GB/T 32905-2016),它可以将任意长度的消息压缩成固定长度的摘要,主要用于数据的安全传输等。
杂凑函数需要满足碰撞稳固性,即对于任意两个不同的输入,其输出也应该是不同的。
目前,对SM3密码杂凑算法的攻击还比较少,尚未发现明显的碰撞攻击方法。
原根稳固性和第二原根稳固性是评价杂凑函数安全性的重要指标,SM3密码杂凑算法在设计上已经考虑了这些特性,使其对原根攻击和第二原根攻击具有一定的抵御能力。
SM3密码杂凑算法的消息分组长度为512b,输出摘要长度为256b [6]。
SM3算法的压缩函数与国际常用的SHA256杂凑算法的压缩函数具有相似性,SM3算法是在SHA-256基础上改进的一种商用密码算法,应用于安全传输和数字签名等方面。
国密杂凑算法SM3

国密杂凑算法SM30. 引⾔SM3杂凑算法是中国国家密码局公布的hash算法商⽤标准,能应⽤于数字签名与验证、消息认证码的⽣成以及伪随机数的⽣成。
1. 常数与函数1.1 初始值IV = 7380166f 4914b2b9 172442d7 da8a0600 a96f30bc 163138aa e38dee4d b0fb0e4e1.2 常量T j={ 79cc4519 0≤j≤15;7a879d8a 16≤j≤63}1.3 布尔函数FF j(X,Y,Z)={X^Y^Z 0≤j≤15;(X & Y)|(X&Z)|(Y&Z) 16≤j≤63}GG j(X,Y,Z)={X^Y^Z 0≤j≤15;(X & Y)|(~X&Z)16≤j≤63}X,Y,Z为字(32bit)1.4 置换函数P0(X)= X^(X<<<9)^(X<<<17)P1(X)= X^(X<<<15)^(X<<<23)X 为字2. 算法简介SM3算法能够对长度为l(l<2^64)bit的消息m,进⾏填充和迭代压缩,⽣成杂凑值,最终的杂凑值为256bit。
2.1 填充过程设消息m的长度为l bit,⾸先将bit"1"添加到消息末尾,再加k个“0”,k是满⾜l+1+k =448 mod 512的最⼩⾮负整数。
然后再添加⼀个64bit串,该串是l的⼆进制表⽰,填充后的消息m'长度为512的整数倍。
2.2 迭代压缩迭代过程:m'按照512bit进⾏分组:m'=B(0)B(1)...B(n-1)n=(l+k+65)/512.迭代过程如下:FOR i=0 to n-1 V(i+1) = CF(V(i),B(i)ENDFORCF为压缩函数,V(0)为初始值IV,迭代压缩的结果为V(n)消息扩展:消息分组B(i)扩展⽣成132个字W0,W1,...W67,W0',W1'...W63'。
一种抗弱曲线故障攻击的SM2_数字签名算法设计

第37卷第4期2023年8月南华大学学报(自然科学版)Journal of University of South China(Science and Technology)Vol.37No.4Aug.2023收稿日期:2023-02-12基金项目:湖南省教育厅科学研究一般项目(20C1619)作者简介:钱垂昇(1997 ),男,硕士研究生,主要从事网络信息安全方面的研究㊂E -mail:187****9871@㊂∗通信作者:王㊀彦(1971 ),男,教授,博士,主要从事智能信息处理和智能控制方面的研究㊂E -mail:wangyan5406@DOI :10.19431/ki.1673-0062.2023.04.011一种抗弱曲线故障攻击的SM2数字签名算法设计钱垂昇,曾玖贞,王㊀彦∗(南华大学电气工程学院,湖南衡阳421001)摘㊀要:SM2数字签名算法是中国版的椭圆曲线数字签名算法,尽管该算法的设计在数学理论是安全的,但在算法的具体实现时却容易遭受物理攻击㊂因此,加强SM2数字签名算法在实现过程中的抗攻击性具有重要意义㊂本文基于故障感染思想提出了一个针对SM2数字签名算法的抗故障攻击策略,通过改变算法中的标量运算操作,使得算法遭受攻击后故障将在签名过程中扩散,从而破坏攻击者利用错误签名快速检索签名私钥的条件㊂实验结果表明,此防御策略不仅可以抵御弱曲线故障攻击,还可以防御弱曲线故障和二次故障注入的结合攻击㊂此外,本文还将椭圆曲线算法中常用点检测抗故障攻击策略和本文提出的故障感染防御策略都在现场可编程逻辑列阵上实现,对两种策略的硬件面积开销㊁单次签名时间开销进行比较,结果显示,本文提出的策略在硬件性能上比基于点检测的策略更优越㊂关键词:SM2数字签名算法;弱椭圆曲线;现场可编程逻辑列阵实现;抗故障攻击中图分类号:TN918文献标志码:A 文章编号:1673-0062(2023)04-0083-07Design of SM 2Digital Signature Algorithm Against WeakCurve Fault AttackQIAN Chuisheng ,ZENG Jiuzhen ,WANG Yan ∗(School of Electrical Engineering,University of South China,Hengyang,Hunan 421001,China)Abstract :The SM2digital signature algorithm is the Chinese version of the Elliptic Curve Digital Signature Algorithm (ECDSA).Although the design of the algorithm is mathemati-cally safe,it is vulnerable to physical attacks when the algorithm is implemented.There-fore,it is of great significance to strengthen the attack resistance of SM2digital signaturealgorithm in the implementation process.Based on the idea of fault infection,this paperproposes an anti-fault attack strategy for SM2digital signature algorithm,which changes38第37卷第4期南华大学学报(自然科学版)2023年8月the scalar operation in the algorithm so that the fault will spread in the signing process afterthe algorithm is attacked,thereby destroying the conditions for attackers to quickly retrievethe signature private key by using incorrect signatures.Experimental results show that theproposed defense strategy can not only resist weak curve fault attacks but also defendagainst combined attacks of weak curve faults and secondary fault injection.In addition,we also implement the common point detection anti-fault attack strategy in elliptic curve al-gorithm and the fault infection prevention strategy proposed on Field Programmable LogicArray(FPGA)and compare the hardware area overhead and single signature timeoverhead of the two strategies,and the results show that the proposed strategy is superior tothe point detection-based strategy in hardware performance.key words:SM2digital signature algorithm;weak elliptic curve;FPGA implementation;against fault attack0㊀引㊀言随着数字化的进程全面推进,信息安全也越来越受到公众关注,加密技术则是当前解决信息安全问题的主要技术手段㊂密码算法作为加密技术的核心,一般分为加密解密㊁签名验签㊁密钥交换三种类型,其中数字签名算法(digital signature algorithm,DSA)用于确保信息传输过程中数据的真实性㊁完整性以及不可抵赖性[1]㊂自1976年Whitfield Diffie和Martin Hellman首次提出数字签名的概念,至今已经出现了许多优秀的数字签名算法㊂在众多数字签名算法中,椭圆曲线数字签名算法(elliptic curve digital signature algorithm, ECDSA)凭借同等安全水平下密钥更短㊁签名速度更快等优点而被广泛应用㊂SM2数字签名算法(SM2digital signature algorithm,SM2-DSA)是中国版的ECDSA,虽然两者的安全性都依托于椭圆曲线离散对数难题(elliptic curve discrete logarithm problem,ECDLP),但SM2-DSA的安全性要高于ECDSA[2]㊂尽管理论上SM2-DSA和ECDSA都是安全的,但如果在算法实现的物理设备中引入故障注入攻击,就极有可能导致设备的安全性失效㊂故障注入攻击是指在密码设备注入特定故障,使得设备输出故障信息,最终通过分析故障信息得到设备中使用的密钥㊂文献[3-6]中介绍了几种针对椭圆曲线密码系统(elliptic curve cryp-tography,ECC)的故障注入攻击方案㊂其中,弱曲线故障攻击利用故障注入将算法运行中使用的安全椭圆曲线变成另一条不安全的弱椭圆曲线,并通过Pohlig-Hellman算法和Pollard Rho算法破解弱椭圆曲线上的ECDLP,从而获取算法中的私钥[6]㊂为了提高密码算法在实际应用中的安全性,研究人员又进行了许多抗故障攻击的防御策略研究㊂对于在ECC算法而言,有效点检测是最常用的故障攻击防御策略㊂在算法运行时,一旦中间状态点被注入故障,该点就会脱离原来的椭圆曲线,从而影响之后一系列的点运算,所以可以在输出结果前对标量运算生成的点进行检测,如果生成的点不在原来的椭圆曲线上,则拒绝输出结果㊂文献[7]针对ECDSA提出了双重随机点检测策略,以防御弱曲线故障攻击㊂该防御策略在点检测的基础上加入了随机延迟和双重检测机制,解决了简单点检测策略在二次故障注入下失效的问题㊂文献[8]中将低成本的故障检测与恢复机制和坐标轴随机化技术相结合,提出了一个可以同时防御差分功耗攻击和差分故障攻击的低成本方案㊂当受到差分故障注入攻击时,可以利用蒙哥马利阶算法中间变量关系的不变性检测到故障,然后将标量运算跳回到上一个有效状态,从而保证故障注入失效的同时不会影响最终的正确结果㊂除了有效点验证思想,故障感染思想也是抗故障攻击研究的重点㊂文献[9]中介绍了一种基于故障感染的故障防御策略,以抵抗针对SM2-DSA的基格故障攻击㊂该策略通过故障在签名生成过程中的传播将格攻击所需要的条件破坏掉,从而保证即使发生关键信息泄露,也能够抵御格攻击㊂目前对SM2-DSA的抗故障攻击研究主要集48第37卷第4期钱垂昇等:一种抗弱曲线故障攻击的SM2数字签名算法设计2023年8月中在基格故障攻击和差分故障攻击,关于弱曲线故障攻击的防御研究还比较少㊂本文基于故障感染思想提出一个新的故障攻击防御策略,以获得一种抗弱曲线故障攻击的改良版SM2-DSA,利用故障的传播,破坏签名过程中所使用的随机标量值与签名私钥之间的关系,从而保证即使攻击者破解了弱椭圆曲线上的ECDLP 也无法获得签名私钥㊂并通过现场可编程逻辑阵列(filed pro-grammable gate array,FPGA)实现了改良后的算法硬件电路设计,对电路的防御效果进行测试㊂为了更好地验证防御策略的有效性,设计了一种硬件木马,用来模拟针对硬件电路的随机故障注入㊂同时还设计了一个基于简单点检测防御策略的算法硬件电路作为对比实验,分析对比了两种防御策略的性能和硬件实现上的开销㊂1㊀SM2数字签名算法基础1.1㊀椭圆曲线基本理论本文中对SM2-DSA 的分析都是基于素数域F p 下的椭圆曲线E (a ,b ),其Weierstrass 方程定义如下所示:E :y 2=x 3+ax +b mod p(1)其中a ,b ɪF p ,且满足4a 3+27b 2ʂ0mod p ㊂椭圆曲线E (a ,b )上的所有点和素数域F p 上的无穷远点O 构成一个椭圆曲线群E (F p ),而E (F p )上的标量运算kP =P +P + +P 为椭圆密码算法的核心㊂其中点P (x P ,y P )为E (F p )上除无穷远点O 外的任意一个点,k ɪ{1, ,p -1}㊂标量运算由点加和倍点两种点运算组成,两种基本点运算的公式如下:设(x 3,y 3)=(x 1,y 1)+(x 2,y 2),则:x 3=λ2-x 1-x 2y 3=λ(x 1-x 3)-y 1{(2)其中λ=3x 2+a 2y 1,x 1=x 2,y 1=y 2y 2-y 1x 2-x 1,其他ìîíïïïï(3)此外,对于E (F p )上所有的点P (x P ,y P )还满足:P +O =P ;-P =P (x P ,p -y P )㊂标量运算之所以成为椭圆密码算法的核心,是因为由其衍生出的ECDLP 为算法提供了数学理论安全㊂ECDLP 定义为:在E (F p )上有一个非无穷远点P ,且点P 的阶为n ㊂存在一个整数k ɪ[1, ,n -1],使得Q =kP ,那么k 就称为以P 为底Q 的离散对数㊂假设知道P 与Q ,求解满足条件的k ,则称为椭圆离散对数难题㊂当前求解ECDLP 最好的方法就是Pohlig-Hellman 算法和Pollard Rho 算法的结合算法,但其破解ECDLP 的时间复杂度仍是指数级O (q ),其中q 为n 的最大素因子㊂而在密码算法所选取的椭圆曲线点,其阶n 本身就是一个大素数㊂所以一般情况下,即使是最好的算法,也无法在有限时间内破解算法中的ECDLP㊂1.2㊀SM2数字签名算法SM2-DSA 作为中国政府发布的改良版ECDSA,其签名生成过程与签名时使用的标准椭圆曲线与ECDSA 都有所不同㊂在进行签名前,SM2-DSA 需要先进行预计算生成用户杂凑值Z A :Z A =H v (A ENTL ID A a b x G y G x A y A )(4)式中:H v 为SM3杂凑函数;ID A 为签名方A 的标识符;A ENTL 是由ID A 的比特位长度转换成的两字节值㊂SM2-DSA 的签名生成过程如算法1所示㊂1)算法1:SM2数字签名算法输入:素数域特征p ,椭圆曲线参数(a ,b ),基点G (x G ,y G )以及基点的阶n ,待签名信息M ,用户杂凑值Z A ,签名私钥d A ㊂输出:签名对(r ,s )㊂1:e =H v (Z A M );2:选择一个随机整数k ɪ[1,n -1];3:标量运算Q (x 1,y 1)=kG ;4:计算r =e +x 1mod n ㊂如果r =0或r +k =n ,跳回第2步;5:计算s =(1+d A )-1(k -rd A )mod n ㊂如果s =0,跳回第2步;6:输出签名对(r ,s )㊂SM2-DSA 硬件实现的整体架构如图1所示,自上而下划分为密码协议层㊁椭圆曲线点运算层㊁模运算层㊂本文采用了蒙哥马利阶算法实现标量运算模块,不仅适合在硬件上实现,同时也可以抵御简单功耗攻击,其具体过程如算法2所示[10]㊂同时,基于加法器实现了模运算中最重要的模乘运算,使得整个硬件设计更加地轻量化㊂58第37卷第4期南华大学学报(自然科学版)2023年8月图1㊀SM2-DSA 硬件架构Fig.1㊀SM2-DSA hardware architecture2)算法2:蒙哥马利阶算法输入:椭圆曲线上的点P (x P ,y P ),标量值k =(k n -1, ,k 1,k 0)㊂输出:Q (x Q ,y Q )=kP ㊂1:计算Q 0=P ,Q 1=2P ;2:从i =n -2到i =0遍历k i ;2.1:如果k i =1,Q 0=Q 0+Q 1,Q 1=2Q 1;2.2:否则,Q 1=Q 0+Q 1,Q 0=2Q 0;3:遍历结束,输出Q 0㊂2㊀针对SM2数字签名算法的抗弱曲线故障攻击防御策略2.1㊀弱曲线故障攻击SM2数字签名算法攻击者在SM2-DSA 执行签名生成时,向椭圆曲线参数a 的坐标值注入一段连续随机故障㊂这使得算法1中的第3步标量运算落在一条弱椭圆曲线上,并导致算法输出一个错误签名对㊂攻击者再根据错误签名对和二次剩余定理得到弱椭圆曲线参数和标量运算结果Qᶄ的坐标,进而可以破解弱椭圆曲线上的ECDLP,得到随机标量值kᶄ满足Qᶄ=kᶄGᶄ㊂但kᶄ并不是签名过程使用的真实随机标量k ,二者的关系如式(5)所示㊂k =kᶄ+inᶄ,i =0,1,2, ,n nᶄéëêêùûúú(5)式中:n 为标准椭圆曲线上基点G 的阶;nᶄ为弱椭圆曲线上基点Gᶄ的阶㊂根据算法1第6步中签名s 的生成公式,可以推导出私钥d A 的表达式,其如式(6)所示㊂显然,签名对(r ,s )是已知的,所以只需要将式(5)代入表达式中,则可以求出私钥的所有可能值㊂通常n 与nᶄ之间相差较小,所以私钥d A 的可能值个数也就很少㊂由于公钥P A 与私钥d A 之间满足关系:P A =d A G ,则可以根据这个关系快速筛选出正确的私钥值㊂d A =(k -s )(r +s )-1mod n(6)㊀㊀综上,通过上述方法就可以破解出签名私钥d A 的值㊂除了对参数a 进行故障注入外,还可以对基点G 的坐标值进行故障注入也可以得到相同的效果,具体的分析过程参见文献[6]㊂2.2㊀基于点检测的防御策略根据弱曲线故障攻击的攻击原理,遭受攻击后签名算法将在一条非标准椭圆曲线上运行,所以点检测是防御这种攻击最常用的手段㊂基于点检测思想,对SM2-DSA 的签名过程进行改进,在签名对(r ,s )输出前增加一步点检测操作㊂具体来说,由于公私钥对(P A ,d A )是在标准椭圆曲线上预先生成的,所以正常情况下根据式(6)可以得到如下等式:P A ==(k -s )(r +s )-1G(7)如果等式(7)成立,说明签名对生成和公私钥对生成使用的是同一条标准椭圆曲线,即代表签名过程中未遭受弱曲线故障攻击,可以正常输出签名对㊂否则,就代表签名过程中遭受到攻击,算法将拒绝输出签名对㊂点检测-SM2-DSA 的详细过程如算法3所示㊂算法3:点检测-SM2数字签名算法㊂输入:素数域特征p ,椭圆曲线参数(a ,b ),基点G (x G ,y G )以及基点的阶n ,待签名信息M ,用户杂凑值Z A ,签名私钥d A ,签名公钥P A ㊂输出:签名对(r ,s )㊂1:e =H v (Z A M );2:选择一个随机整数k ɪ[1,n -1];3:标量运算Q (x 1,y 1)=kG ;4:计算r =e +x 1mod n ㊂如果r =0或r +k =n ,跳回第2步;5:计算s =(1+d A )-1(k -rd A )mod n ㊂如果s =0,跳回第2步;6:标量运算D =(k -s )(r +s )-1G ;7:判断D ==P A 是否成立:7.1:如果成立,则正常输出签名对(r ,s );7.2:否则,清除签名对,拒绝输出;8:结束签名㊂从上述算法过程可以看出,基于点检测策略改进后的SM2-DSA 相比于原版的算法,主要多出了一个标量运算操作㊂此外,算法最终是通过一个条件来判断是否正常输出签名对㊂而在实际的应用中,这样的判断操作很容易因为二次故障注68第37卷第4期钱垂昇等:一种抗弱曲线故障攻击的SM2数字签名算法设计2023年8月入而被跳过[7]㊂一旦跳过条件判断将使得签名对直接输出,就意味着点检测机制已经失效㊂2.3㊀基于故障感染的防御策略从2.1节中关于SM2-DSA的弱曲线故障攻击的描述中可以知道,虽然攻击没有直接针对私钥d A,但是通过破解ECDLP可以得到弱椭圆曲线上的随机标量值kᶄ㊂再利用kᶄ与签名中使用的真实随机标量值k之间的关系㊁真实随机标量值k与私钥d A之间的关系,可以快速检索出正确私钥㊂基于故障感染思想,对原SM2-DSA进行改进,改进后的SM2-DSA遭受故障攻击后会在签名过程中不断的传播故障,最终将快速检索私钥d A 的建立条件破坏掉,从而使得攻击者即使破解出kᶄ的值也无法在有限的时间内检索出正确的私钥值㊂改进后的签名过程如算法4所示㊂算法4:故障感染-SM2数字签名算法㊂输入:素数域特征p,椭圆曲线参数(a,b),基点G(x G,y G)以及基点的阶n,待签名信息M,用户杂凑值Z A,签名私钥d A,签名公钥P A㊂输出:签名对(r,s)㊂1:e=H v(Z A M);2:选择一个随机整数kɪ[1,n-1]; 3:标量运算T(x T,y T)=kG+d A G;4:计算D(x D,y D)=T-P A;5:计算r=e+x D mod n㊂如果r=0或r+k=n,跳回第2步;6:计算s=(1+d A)-1(k-rd A)mod n㊂如果s=0,跳回第2步;7:输出签名对(r,s)㊂当算法正常运行时,签名过程中使用的椭圆曲线和生成公私钥对所使用的是同一条标准椭圆曲线㊂根据公私钥之间的关系,算法中的第3㊁4步相当于式(8)㊂将式(8)代替第3㊁4步,此时的签名过程与原版SM2-DSA的签名过程是一样的,输出的即为正确的签名对㊂D(x D,y D)=kG+d A G-d A G=kG㊂(8)㊀㊀如果算法运行时遭受到弱曲线故障攻击,则算法4中第3步的标量运算就会在一条故障椭圆曲线上执行,这就意味着T和P A不在同一椭圆曲线上㊂那么即使此时算法中的第4步在实际计算中依旧使用了式(2)和式(3)所示的运算法则,但最终的运算结果Dᶄ(x Dᶄ,y Dᶄ)已经不是故障椭圆曲线上的点㊂如果攻击者想继续利用弱曲线的特性进行故障分析,那么就只能恢复故障曲线上的点Tᶄ(x Tᶄ,y Tᶄ)的坐标,然后通过破解ECDLP找到满足Tᶄ(x Tᶄ,y Tᶄ)=kᶄT Gᶄ的随机标量值kᶄT㊂假设攻击者成功破解ECDLP并得到的kᶄT的值㊂但是由算法4中第3步的标量运算可知,kᶄT与真实随机标量值k㊁私钥d A都有关系,具体表现如式(9)所示㊂其中nᶄ为故障椭圆曲线上基点Gᶄ的阶,n为标准椭圆曲线上基点G的阶,真实随机标量值k 和私钥值d A是两个未知的随机数㊂通过式(9)变换可以得到真实随机标量值的表达式k=kᶄT+ inᶄ-d A,或是私钥的表达式d A=kᶄT+inᶄ-k㊂无论是计算真实随机标量值k还是私钥值d A,表达式的右边都有一个未知的随机数㊂在这种情况下,没有比穷举法更快的方式可以检索到唯一正确的随机标量值k或私钥值d A㊂目前签名中所使用的随机标量值k和私钥值d A一般都是256bit的大数,而想要通过穷举法在有限的时间内完成一次对某个256bit未知数的检索,以目前的计算水平是无法做到的㊂并且从表达式来看,即使在最好的情况下(即表达式中i=0时)也要进行一次检索㊂而在最坏的情况下,要进行2nnᶄéëêêùûúú+1次检索才能达到目的㊂所以基于故障感染策略改进后的SM2-DSA,即使在遭受弱曲线故障攻击后故障曲线上的ECDLP被破解的情况下,攻击者也无法获取签名私钥d A㊂kᶄT+inᶄ=k+d A,i=0,1,2,3, ,2n nᶄéëêêùûúú㊂(9)实际上,算法4中第3步的两次标量运算可以合并为一次标量运算T(x T,y T)=(k+d A)G㊂即相比于原版的SM2-DSA,基于故障感染策略改进后的SM2-DSA在签名过程中只多了一次点加运算㊂并且,相对于点检测策略容易因二次故障注入而跳过输出前的判断操作,最终造成防御失效来说,故障感染策略并没有这样明显的缺陷㊂3㊀实验分析本文中共设置了三组对比实验,包括无防御策略组㊁点检测防御组㊁故障感染防御组㊂每一组都使用Verilog硬件语言完成电路设计,然后用Modelsim工具进行电路功能仿真验证,最后基于FPGA芯片对三组电路进行综合实现和性能评估㊂整个实验都在3.2GHz㊁4核CPU的个人电脑上进行㊂实验中所有SM2-DSA电路在进行仿真验证时都采用同一条官方推荐的256bit标准椭圆曲线[11]㊂78第37卷第4期南华大学学报(自然科学版)2023年8月硬件木马是攻击者在芯片设计或制造时植入的微小电路,当该电路在某种条件下被激活就会导致芯片功能发生改变或芯片的内部信息泄露[12]㊂基于这种特性,硬件木马可以很好和针对硬件的故障攻击相结合,基于故障攻击的硬件木马结构如图2所示㊂实验中设计的硬件木马激活后有两种状态,第一种状态下可以向椭圆曲线参数注入起始位置随机的㊁连续L bit 的翻转故障,第二种状态下可以向椭圆曲线参数注入指定起始位置的㊁连续L bit 的特定翻转故障(L =1㊁2㊁4㊁8㊁16)㊂通过在首次故障注入后再屏蔽签名输出前的判断操作来模拟点检测SM2-DSA 电路上的二次故障注入,同时在故障感染SM2-DSA 电路上采用首次故障注入后随机激活硬件木马,再注入一次故障来模拟二次故障注入㊂图2㊀基于故障攻击的硬件木马示意图Fig.2㊀Schematic diagram of a hardware Trojanbased on a fault attack根据弱曲线故障攻击的攻击原理可知,并不是故障攻击后得到的每一条故障曲线都是弱椭圆曲线㊂只有当故障曲线上基点Gᶄ(x Gᶄ,y Gᶄ)的阶nᶄ具有一个较小的最大素因子q 时,才能保证故障曲线上的ECDLP 被成功破解㊂以当前的计算水平,当最大素因子q 满足0.886q <2100时,该椭圆曲线就可以被定义为弱椭圆曲线[13]㊂考虑到本实验中电脑的实际算力,先对无防御策略SM2-DSA 电路进行多次故障注入模拟,然后恢复出故障曲线参数并对故障曲线上基点Gᶄ(x Gᶄ,y Gᶄ)的阶nᶄ进行分析,选取出满足最大素因子q 的比特长度l q <70的故障曲线㊂将这些故障曲线对应的故障注入位置和翻转情况一一记录,然后根据所记录的情况,用硬件木马电路的第二种激活状态对点检测SM2-DSA 电路和故障感染SM2-DSA 电路注入特定故障,使得故障注入后的签名过程使用上述对应的l q <70的故障曲线㊂对三组电路进行的弱曲线故障攻击的情况如表1所示,其中l q 为故障攻击后得到故障曲线上基点的阶的最大素因子的比特长度, - 代表在无防御策略的SM2-DSA 电路上并未进行弱曲线故障注入与二次故障注入结合攻击的实验㊂从表1中可以看出,无任何防御策略的原始SM2-DSA 电路易遭受弱曲线故障攻击威胁㊂虽然点检测SM2-DSA 电路可以防御单次的弱曲线故障攻击,但如果攻击者通过二次故障注入跳过输出前的判断操作,则点检测SM2-DSA 电路对弱曲线故障攻击的防御就会失效㊂而对于故障感染SM2-DSA 电路,无论是单次的弱曲线故障攻击还是与二次故障注入结合的弱曲线故障攻击,都可以成功防御㊂表1㊀三组SM2-DSA 电路上弱曲线故障攻击情况Table 1㊀Weak curve fault attack on three sets of SM2-DSA circuitsl q 弱曲线故障攻击无防御策略组点检测防御组故障感染防御组弱曲线故障攻击+二次故障注入攻击无防御策略组点检测防御组故障感染防御组46攻击成功攻击失败攻击失败-攻击成功攻击失败52攻击成功攻击失败攻击失败-攻击成功攻击失败53攻击成功攻击失败攻击失败-攻击成功攻击失败56攻击成功攻击失败攻击失败-攻击成功攻击失败59攻击成功攻击失败攻击失败-攻击成功攻击失败61攻击成功攻击失败攻击失败-攻击成功攻击失败63攻击成功攻击失败攻击失败-攻击成功攻击失败㊀㊀实验最后在Vivado 平台上基于Xilinx Kintex-7系列的xc7k325芯片对三组电路进行综合实现㊂设计点检测SM2-DSA 电路时,将点检测操作中的标量运算和签名生成中的标量运算复用了同一个88第37卷第4期钱垂昇等:一种抗弱曲线故障攻击的SM2数字签名算法设计2023年8月标量运算器㊂从表2可以看出,相对于无防御策略的SM2-DSA电路,点检测SM2-DSA在面积开销上额外多出了15.7%的查找表(look-up table,LUT)和13.1%的触发器(flip-flop,FF),但在时间上点检测SM2-DSA电路却额外多出了94.0%的开销,而故障感染SM2-DSA在签名过程中只比原版算法多出了一个点加操作,所以硬件实现后,故障感染SM2-DSA电路在面积开销上比无防御策略的SM2-DSA电路额外多出了7.4%的LUT和3.4%的触发器,在时间上额外多出了0.84%的开销㊂综上所述,基于故障感染的改良版SM2-DSA电路不仅可以防御弱曲线故障攻击,还可以防御弱曲线故障与二次故障注入的结合攻击㊂同时其在硬件的面积开销和时间开销上也比一般的点检测SM2-DSA电路表现地更出色㊂表2㊀本文三组SM2-DSA电路基于FPGA硬件实现的性能比较Table2㊀Performance comparison of three sets ofSM2-DSA circuits based on FPGAhardware implementations实验组时钟频率/MHz LUT flip-flop单次签名生成时间/ms无防御策略组100202328039 3.418点检测防御组100234199093 6.631故障感染防御组100217288313 3.447 4㊀结㊀论本文针对SM2-DSA算法提出了一个基于故障感染思想的抗弱曲线故障攻击的防御策略,根据该防御策略对SM2-DSA硬件电路进行改进,并在改进后的电路上模拟故障注入攻击仿真实验㊂仿真结果表明,基于故障感染的策略可以同时抵御弱曲线故障攻击和二次故障注入攻击㊂此外,基于故障感染策略的电路和基于一般点检测策略的电路㊁无防御策略的电路一同在Kintex-7FPGA 上进行性能分析,分析结果表明,故障感染防御策略不仅在硬件额外面积开销上比一般点检测策略少了大约一半,在单次签名生成时间上也只增加了0.84%,远低于点检测策略增加的94.0%㊂参考文献:[1]程朝辉.数字签名技术概览[J].信息安全与通信保密,2020(7):48-62.[2]孙荣燕,蔡昌曙,等.国密SM2数字签名算法与ECDSA算法对比分析研究[J].网络安全技术与应用,2013(2):60-62.[3]RUSSON A.Differential fault attack on montgomery ladder and in the presence of scalar Randomization[C]//Progress in Cryptology-INDOCRYPT2021:22nd International Con-ference on Cryptology in India.Jaipur,India:Springer In-ternational Publishing,2021:287-310.[4]CAO W Q,SHI H S,CHEN H,et ttice-based weak curve fault attack on ECDSA[C]//ICT Systems Security and Privacy Protection:36th IFIP TC11International Conference,SEC2021.Cham,Switzerland:Springer In-ternational Publishing,2021:146-161.[5]TAKAHASHI A,TIBOUCHI M.Degenerate fault attacks on elliptic curve parameters in OpenSSL[C]//2019IEEE European Symposium on Security and Privacy(Euro S& P).Stockholm,Sweden:IEEE,2019:371-386. [6]QIAN C S,WANG Y,WANG M H,et al.Security analysis of SM2signature algorithm based on fault attack[C]// Second International Symposium on Computer Technology and Information Science(ISCTIS2022).Guilin,China: SPIE,2022,12474:1247402.[7]张宇.基于ECDSA的故障攻击研究[D].西安:西安电子科技大学,2014:29-34.[8]喻潇.抗旁路攻击的双域ECC标量乘电路研究与设计[D].南京:南京航空航天大学,2020:58-60. [9]CAO W Q,FENG J Y,ZHU S F,et al.Practical lattice-based fault attack and countermeasure on SM2signature algorithm[C]//Information and Communications Security: 17th International Conference,ICICS2015.Beijing,China: Springer International Publishing,2016:62-70. [10]CHAKRABORTY A,BHATTACHARYA S,DIXIT T H,et al.Template attack on SPA and FA resistant imple-mentation of montgomery ladder[J].IET information se-curity,2016,10(5):245-251.[11]IT security techniques.Digital signatures with appendixPart3:Discrete logarithm based mechanisms:ISO/IEC14888-3:2006[S].Geneva,Switzerland:ISO(Interna-tional Organization for Standardization),2018:155.[12]黄钊,王泉,杨鹏飞.硬件木马:关键问题研究进展及新动向[J].计算机学报,2019,42(5):993-1017.[13]MARTÍNEZ V G,GONZALEZ-MANIANO L,MUÑOZA M,et al.Secure elliptic curves in cryptogrophy[J].Computer and network security essentials,2018(1):283-298.98。
商密算法SM2、SM3、SM4的用途和原理

商密算法SM2、SM3、SM4的⽤途和原理SM1对称密码SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 ⽐特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯⽚中。
采⽤该算法已经研制了系列芯⽚、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,⼴泛应⽤于电⼦政务、电⼦商务及国民经济的各个应⽤领域(包括国家政务通、警务通等重要领域)。
SM2椭圆曲线公钥密码算法SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换⽅⾯不同于ECDSA、ECDH等国际标准,⽽是采取了更为安全的机制。
另外,SM2推荐了⼀条256位的曲线作为标准曲线。
SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及⽰例。
SM2算法主要考虑素域Fp和F2m上的椭圆曲线,分别介绍了这两类域的表⽰,运算,以及域上的椭圆曲线的点的表⽰,运算和多倍点计算算法。
然后介绍了编程语⾔中的数据转换,包括整数和字节串,字节串和⽐特串,域元素和⽐特串,域元素和整数,点和字节串之间的数据转换规则。
详细说明了有限域上椭圆曲线的参数⽣成以及验证,椭圆曲线的参数包括有限域的选取、椭圆曲线⽅程参数、椭圆曲线群基点的选取等,并给出了选取的标准以便于验证。
最后给椭圆曲线上密钥对的⽣成以及公钥的验证,⽤户的密钥对为(s,sP),其中s为⽤户的私钥,sP为⽤户的公钥,由于离散对数问题从sP难以得到s,并针对素域和⼆元扩域给出了密钥对⽣成细节和验证⽅式。
总则中的知识也适⽤于SM9算法。
在总则的基础上给出了数字签名算法(包括数字签名⽣成算法和验证算法),密钥交换协议以及公钥加密算法(包括加密算法和解密算法),并在每个部分给出了算法描述,算法流程和相关⽰例。
数字签名算法、密钥交换协议以及公钥加密算法都使⽤了国家密管理局批准的SM3密码杂凑算法和随机数发⽣器。
中国商用密码杂凑算法标准----SM3算法(数字签名)

中国商⽤密码杂凑算法标准----SM3算法(数字签名)明天就要回家惹,阿姨⽣⽇,祝happy捏⾛之前,再学点东西叭上⼀篇叭了叭密码学的算法简历,其中信息摘要部分提到了SHA家族和MD5,今天跑了⼀趟SM3,就来看看SM3算法叭~~国密算法是国家密码管理局制定并公布的⼀系列国产密码算法,包括SM1\2\3\4\7\9、ZUC祖冲之算法等等。
SM3概述SM3算法是在SHA-256基础上改进的⼀种算法,消息分组的长度为512位,⽣成的摘要长度为256位,与SHA256安全性相当。
(和上⼀篇的SHA256很像咧)算法流程填充⽐特在原始数据末尾进⾏填充,使数据长度= 448 (mod 512),规则为先补第⼀个⽐特为1,然后都补0若长度刚好为448也必须填充,此时需要增加512位,即填充的位数[1,512]附加长度信息附加长度值就是将原始数据的长度信息(⽆符号整数64bit)附加到已经填充消息的后⾯。
前两个附加长度就构成了⼀个长度为512整数倍的消息结构。
初始化数据初始值IV=7380166f 4914b2b9 172442d7 da8a0600 a96f30bc 163138aa e38dee4d b0fb0e4eTj = 79cc4519 0 ≤ j ≤ 157a879d8a 16 ≤ j ≤ 63置换函数,x是消息字P0(X) = X ⊕ (X ≪ 9) ⊕ (X ≪ 17)P1(X) = X ⊕ (X ≪ 15) ⊕ (X ≪ 23)8个字寄存器存储初始值ABCDEFGH迭代过程将消息m’分解成n个512-bit⼤⼩的块,m’=B0B1B2……B n-1令V0=IV=7380166f 4914b2b9 172442d7 da8a0600 a96f30bc 163138aa e38dee4d b0fb0e4eV i+1=CF(V i,B i),0 ≤ i ≤ n-1 ,CF为压缩函数消息扩展(将上⼀步得到的每⼀个消息分组B i扩展到132*32bit的信息w[0],w[1],w[2],……,w[67], w‘[0],w’[1],w‘[2],……,w’[63])选择⼀个512bit的块B i,将其分解为16个32bit的(big-endian)字,记为w[0],w[1],……,w[15],作为扩展消息的前16个,在递推⽣成剩余的116个字。
SM3密码杂凑算法概要

SM3密码杂凑算法 SM3Cryptographic Hash Algorithm国家密码管理局 2010年 12月目次1范围 ······················································································1 2术语和定义 ···············································································1 3符号 ······················································································1 4常数与函数 ···············································································2 4.1初始值 ················································································2 4.2常量 ··················································································2 4.3布尔函数 (2)4.4置换函数 (2)5算法描述 ·················································································2 5.1概述 ··················································································2 5.2填充 ··················································································2 5.3迭代压缩 ··············································································3 5.3.1迭代过程 ·······································································3 5.3.2消息扩展 ·······································································3 5.3.3压缩函数 ·······································································3 5.4杂凑值 ................................................................................4附录 A (资料性附录运算示例 ................................................................5 A.1示例1.................................................................................5 A.1示例2 (7)SM3密码杂凑算法1范围本文本规定了 SM3密码杂凑算法的计算方法和计算步骤,并给出了运算示例。
基于Android的SM3密码杂凑算法研究与实现

1 . 4数 据 压 缩
并采用该算法 实现 A n d r o i d平 台的文件校验功
随着 A n d r o i d智 能手 机 的普
及 , 其 安 全 性 也 日益 为 人 们 所 关 注 。 出 于 安 全 的 目 的 , 本 丈 运 用 国家 密码 行业 标 准之 一 的 S M 3密
述如下 :
a 9 6 f 3 0 b c l 6 3 1 3 8 a a e 3 8 d e e 4 d b 0 f b 0 e 4 e 。常量 T l
为7 9 c c 4 5 1 9 ,常量 T 2 为7 a 8 7 9 d 8 a ,
【 关键 词】S M 3 密码杂凑算法 A n d r o i d信息安全 摘要算法
D,E ,F ,G, H为寄存变量, P ,Q, U, 正 是得 益于这 种设 计 ,S M3密码杂 凑算 法有 C, V为 中间变量 ,变 量长度均为 3 2 b i t s 。V的初 着相当高的复杂性与不可逆性。 始值 为 7 3 8 0 1 6 6 f 4 9 1 4 b 2 b 9 1 7 2 4 4 2 d 7 d a 8 a 0 6 0 0 S M3 密码杂 凑算 法 的处 理思 想与 步骤概
E NDF o R
完整性检验等 。 目前 ,国际上 主流 的摘要算法 有 MD5 ,
长度 1 的值 。
填充后 ,数据 W’的长度为 5 1 2的倍数 。
1 . 3数据扩展
F O Rj =1 6 T O 6 3
J D = R O T E ( R O T L ' ( A ) + E + R O T L ' ( ) ) ;
V = ( E0, 0G ) + + P + ;
基于Android的SM3密码杂凑算法研究与实现

基于Android的SM3密码杂凑算法研究与实现作者:沈一公苏厚勤来源:《电子技术与软件工程》2013年第18期摘要:随着Android智能手机的普及,其安全性也日益为人们所关注。
出于安全的目的,本文运用国家密码行业标准之一的SM3密码杂凑算法,基于Android平台,实现了校验文件防篡改的应用,用于检查手机软件安装包的唯一性与完整性。
同时,介绍与研究了SM3算法的处理思想与处理步骤。
通过对文件检验测试,分析和比较了该算法的执行效率,验证了该算法在Android平台上能够用于检验下载安装软件的安全性。
【关键词】SM3密码杂凑算法 Android 信息安全摘要算法密码杂凑算法(也称作摘要算法)是一种Hash函数。
它能将一组任意有限长度的数据影射为一个被称作“数字指纹”(也称数字摘要)的固定长度的位串。
当数据发生变化时,映射结果也随之改变。
密码杂凑算法可以被用于数字签名、消息验证、文件唯一标识和数据完整性检验等。
目前,国际上主流的摘要算法有MD5,SHA-1和SHA-2。
三种算法输出的位数逐次递增,但三者无一例外都使用了迭代压缩结构。
其中,SHA-1在迭代压缩的基础上进行了消息扩展,提高了算法的安全性。
SHA-2则加入了置换逻辑,使得算法的复杂性与不可逆性进一步增强。
如今,MD5与SHA-1算法已被证明不安全,以SHA-2为代表的高强度算法正逐渐成为主流。
此时,我国国家密码管理局发布了适用于商用密码应用的高强度摘要算法,即SM3密码杂凑(也称摘要)算法。
该算法在迭代压缩的结构中加入了复杂的逻辑处理,使得扩散与扰乱更充分,安全性更高。
如今,由于智能手机被植入恶意软件而导致用户个人信息被窃取、自动发送扣费短信等一系列安全问题层出不穷。
通过发布被篡改、被插入恶意软件的手机安装包是这类恶意软件传播的主要途径。
使用摘要算法对智能手机的软件安装包文件进行完整性和唯一性检验以判别软件安装包是否已被篡改,对智能手机用户而言无疑是一种安全保障。
基于国密SM3算法的摘要码生成器设计

绿色质量观察基于国密SM3算法的摘要码生成器设计Abstract Code Generator Design Based on SM3Algorithm王岩,杨期朝(黑龙江工程学院,黑龙江哈尔滨150050)Wang Yan,Yang Qi-chao(College of electrical and information engineering,HeilongjiangInstitute of Engineering,Heilongjiang Haerbin150050)摘要:SM3杂凑算法是中国商用密码杂凑算法的标准。
利用FPGA、单片机以及上位机,共同完成该算法的填充、分组、扩展以及压缩迭代等步骤,实现数据的输入和显示。
首先上位机利用UART串口通信的方式将数据传送给单片机,其次单片机将接收的数据进行填充和分组,将分组后的数据利用SPI串行通信传送给FPGA进行计算,最后由上位机显示结果。
测试验证了任意数据的输入都有正确且唯一的杂凑值与之对应。
关键词:SM3算法;FPGA;单片机;上位机中图分类号:TP301.6;TP309文献标识码:A文章编号:1003-0107(2021)02-0030-05Abstract:SM3hash algorithm is the standard of commercial cryptographic hash algorithm in China.FPGA,MCUand upper computer are used to complete the steps of filling,grouping,expanding and compressing iterationof the algorithm,so as to realize the data in p ut and display.Firstly,the upper computer uses UART serial communication to transmit the data to the MCU.Secondly,the MCU fills and groups the received data,it transmits thegrouped data to FPGA for calculation by SPI serial communication.Finally,the upper computer displays theresults.The test verifies that the in put of any data has correct and unique hash value corresp o nding to it.Key words:SM3algorithm;FPGA;MCU;Upper machineCLC number:TP301.6;TP3091Document code:A Article ID:1003-0107(2021)02-0030-050引言信息时代,信息的共享性和应用性也越来越广泛和深入。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于杂凑函数SM3的后量子数字签名
孙思维;刘田雨;关志;何逸飞;荆继武;胡磊;张振峰;闫海伦
【期刊名称】《密码学报》
【年(卷),期】2023(10)1
【摘要】基于杂凑函数的数字签名的安全性仅依赖于其所使用的杂凑函数的抗(第二)原像攻击的强度,可以抵抗量子计算攻击,是当前后量子签名研究的热点方向之一,各标准化组织也积极对基于杂凑函数的数字签名方案进行标准化.本文利用国产杂凑函数SM3替代RFC 8554、RFC 8391和NIST SP 800-208中给出的LMS、HSS、XMSS和XMSSMT数字签名方案所使用的杂凑函数,并给出了初步的实验结果.实验结果表明,使用SM3实例化LMS和HSS是完全可行的,为后续相关标准化工作的推进提供了支撑.
【总页数】15页(P46-60)
【作者】孙思维;刘田雨;关志;何逸飞;荆继武;胡磊;张振峰;闫海伦
【作者单位】中国科学院大学密码学院;北京大学软件工程国家工程研究中心;中国科学院大学网络空间安全学院;中国科学院软件研究所
【正文语种】中文
【中图分类】TP309.7
【相关文献】
1.基于Luffa杂凑函数的旋转攻击
2.基于Android的SM3密码杂凑算法研究与实现
3.基于密码杂凑函数的安全规则匹配优化算法
4.基于密码杂凑函数的安全规则匹配优化算法
5.SOTS:一个基于哈希函数更短的后量子数字签名方案
因版权原因,仅展示原文概要,查看原文内容请购买。