题外话:不知道鸽了多久了,这次补更一下,出的密码学加密算法还挺少的,打算先搞4期密码算法,国密SM系列。
SM2算法概念
SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。
SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。
随着密码技术和计算机技术的发展,目前常用的1024位RSA算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用SM2椭圆曲线算法替换RSA算法。
SM2原理
(1)曲线参数
SM2标准推荐使用256位素域Fp上的椭圆曲线y2=x3 ax b,其中:
(2)密钥生成算法
Alice选择随机数dA做为私钥,其中0
Alice计算公钥PA=dA⋅G
输出密钥对(sk=dA, pk=PA)
(3)签名算法
设Alice发签名消息M给Bob,IDA是Alice的标识符,ENTLA是IDA的长度,dA是A的私钥,基点G= (xG,yG),A的公钥PA=dA ⋅ G= (xA, yA).。
ZA=H(ENTLA ‖IDA ‖a‖b‖ xG ‖ yG ‖ xA ‖ yA), H是SM3算法
①设置M*=ZA ‖M并计算 e = H(M*)
②产生随机数k∈[1, n-1]
③计算椭圆曲线点G1=k ⋅ G= (x1, y1)
④计算r=(e x1) mod n,若r=0或r k=n则返回②
⑤计算s=(1 dA)−1·(k −r ·dA)mod n,若s=0则返回②
⑥以(r, s)作为对消息M的签名
SM2数字签名算法签名过程示意图
(4)验证算法
接收到的消息为M′,签名为(r′, s′)和发送者Alice的公钥PA,Bob执行如下步骤验证合法性:
检验r′∈[1, n-1]是否成立,若不成立则验证不通过
检验s′∈[1, n-1]是否成立,若不成立则验证不通过
设置M*=ZA‖M′
计算e′= H(M* )
计算t= (r′ s′) mod n,若t=0,则验证不通过
计算椭圆曲线点 (x1′,y1′)= s′ · G t · PA
计算v=(e′ x1′) mod n,检验v=r′是否成立,若成立则验证通过;否则验证不通过
SM2数字签名算法验证过程示意图
(5)算法的正确性
由于s= (1 dA) −1·(k − r ·dA),PA = dA · G,我们可以得到:
s· G t · PA
= s· G (r s)·dA · G
=(s s · dA ) · G r · dA · G
= s· (1 dA ) · G r · dA · G
= (1 dA)−1 · (k −r · dA) · (1 dA ) · G r · dA · G
= (k− r · dA) · G r · dA · G
= k· G −r · dA · G r · dA · G
= k· G
验证算法的特点
SM2签名验证算法的一个显著特点是,其中加入了较多的检错功能。
因为这是收信者对收到的签名数据进行验证,而签名数据是经过信道传输过来的,由于信道干扰和对手的篡改,因此,签名数据中含有错误或被篡改的可能性是存在的。
把错误和篡改检测出来,对提高签名验证系统的数据完整性、系统可靠性和安全性是有益的。
验证算法中的①检查签名分量r’的合理性
验证算法中的②检查签名分量s’的合理性
验证算法中的⑤检查t的正确性
国密SM2算法证书VS传统SSL证书的优势
(1)加密强度更高
传统SSL证书通常是RSA算法,RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。
但随着密码技术和计算机技术的发展,目前1024位RSA算法已经被证实存在被攻击的风险,美国国家标准技术研究院在2010年要求全面禁用1024位RSA算法,并升级到了2048位RSA算法。
我国现阶段使用的国密SM2算法是在椭圆曲线密码理论基础进行改进而来,其加密强度比RSA算法(2048位)更高。
(2)安全性能更强
作为传统SSL证书的核心算法,RSA算法虽然仍占据着SSL证书市场的主流地位,但是随着计算机技术的发展,加上对因子分解的改进,对低位数的密钥攻击已成为可能,传统的SSL证书也面临着更多的未知风险。
而基于ECC椭圆曲线算法的SM2算法,则普遍采用256位密钥长度,它的单位安全强度相对较高,在工程应用中比较难以实现,破译或求解难度基本上是指数级的。因此,SM2算法可以用较少的计算能力提供比RSA算法更高的安全强度,而所需的密钥长度却远比RSA算法低。
此外,若要不断提高安全强度,则必须增加密钥长度,SM2算法密钥长度增长速度较慢(例如:224-256-384),而RSA算法密钥长度则需呈倍数增长(例如:1024-2048-4096),这使得SM2算法的安全性能表现更佳。
(3)传输速度更快
在通讯过程中,更长的密钥意味着必须来回发送更多的数据以验证连接。256位的 SM2 算法相对于2048位的RSA 算法可以传输更少的数据,也就意味着更少的传输时间。
经国外有关权威机构测试,在Web服务器中采用SM2算法,Web服务器新建并发处理响应时间比RSA算法快十几倍。
当前,我国正在大力推动国密SM2算法,替换采用RSA算法的SSL证书,以政府、金融领域为主要示范行业,并在教育、社保、交通、通信、能源、税收、公共安全、国防工业等重要领域广泛要求使用符合国家标准的密码算法和产品,确保密码算法这一关键环节的自主可控,保障我国信息安全基础设施的安全可信。
参考文献:
[1]https://baijiahao.baidu.com/s?id=1718040869557055414&wfr=spider&for=pc
[2]https://blog.csdn.net/Digquant/article/details/124429472
[3] https://blog.csdn.net/chexlong/article/details/103293311