SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在安全性能、速度性能等方面都优于RSA算法,在我国商用密码体系中被用来替换RSA算法。国家密码管理局于2010年12月17日发布了SM2算法,并要求现有的基于RSA算法的电子认证系统、密钥管理系统、应用系统进升级改造,使用SM2算法。
SM2算法和RSA算法简介
RSA公钥加密算法是美国计算机学家Ron Rivest、AdiShamir和Leonard Adleman于1977年提出,是最早的公钥加密算法之一,在全球范围被广泛使用。随着密码技术和计算机技术的发展,目前1024位RSA算法已经被证实存在被攻击的风险,美国NIST(国家标准技术研究院)在2010年要求全面禁用1024位RSA算法,升级到2048位RSA算法。此外,斯诺登事件爆发后,其泄露出的机密文档显示,RSA算法中可能存在NSA的预置后门,对RSA算法的安全性产生巨大影响。
SM2算法由国家密码管理局于2010年12月17日发布,是我国自主设计的公钥密码算法,基于更加安全先进的椭圆曲线密码机制,在国际标准的ECC椭圆曲线密码理论基础上进行自主研发设计,具备ECC算法的性能特点并实现优化改进。
SM2算法和RSA算法性能对比
SM2算法和RSA算法都属于公钥加密算法,但两者分别基于不同的数学理论基础。与RSA算法相比,SM2算法具有抗攻击性强、CPU 占用少、内容使用少、网络消耗低、加密速度快等特点。
1.SM2算法与RSA算法安全性能对比
RSA算法是基于大整数因子分解数学难题(IFP)设计的,其数学原理相对简单,在工程应用中比较易于实现,但它的单位安全强度相对较低。对大整数做因子分解的难度决定了RSA算法的可靠性,随着计算机运算速度的提高和分布式计算的发展,加上因子分解方法的改进,对低位数的密钥攻击已成为可能。
ECC(EllipticCurves Cryptography,椭圆曲线密码编码学)是由Koblitz和Miller两人于1985年提出,其数学基础是基于椭圆曲线上离散对数计算难题(ECDLP)。ECC算法的数学理论非常深奥和复杂,在工程应用中比较难以实现,但它的单位安全强度相对较高。用国际上公认的针对ECC算法最有效的攻击方法——Pollard rho方法去破译和攻击ECC算法,它的破译或求解难度基本上是指数级的。
因此,ECC算法的单位安全强度远高于RSA算法,可以用较少的计算能力提供比RSA算法更高的安全强度,而所需的密钥长度却远比RSA算法低。目前,基于ECC的SM2证书普遍采用256位密钥长度,加密强度等同于3072位RSA证书,远高于业界普遍采用的2048位RSA证书。
此外,为了提高安全强度必须不断增加密钥长度,ECC算法密钥长度增长速度较慢(例如:224-256-384),而RSA算法密钥长度则需呈倍数增长(例如:1024-2048-4096)。
2.SM2算法与RSA算法速度性能对比
在TLS握手过程中,更长的密钥意味着必须来回发送更多的数据以验证连接,产生更大的性能损耗和时间延迟。因此,ECC算法能够以较小的密钥和较少的数据传递建立HTTPS连接,在确保相同安全强度的前提下提升连接速度。经国外有关权威机构测试,在Apache和IIS服务器采用ECC算法,Web服务器响应时间比RSA算法快十几倍。
SM2算法的优化和先进性
SM2算法是我国基于ECC椭圆曲线密码理论自主研发设计,由国家密码管理局于2010年12月17日发布,在密码行业标准GMT 0003.1-2012 SM2 总则中推荐了一条256位曲线作为标准曲线,数字签名算法、密钥交换协议以及公钥加密算法都根据SM2总则选取的有限域和椭圆曲线生成密钥对;在数字签名、密钥交换方面区别于ECDSA、ECDH等国际算法,而是采取了更为安全的机制,提高了计算量和复杂性;在数字签名和验证、消息认证码的生成与验证以及随机数的生成等方面,使用国家密管理局批准的SM3密码杂凑算法和随机数生成器。SM3杂凑算法是我国自主设计的密码杂凑算法,安全性要高于MD5算法(128位)和SHA-1算法(160位),SM3算法的压缩函数与SHA-256具有相似结构,但设计更加复杂;SM4分组密码算法是我国自主设计的分组对称密码算法,与AES算法具有相同的密钥长度128位,在安全性上高于3DES算法,在实际应用中能够抵抗针对分组密码算法的各种攻击方法。
SM2算法的应用推广
密码算法的安全性是信息安全保障的核心,通过自主可控的国产密码技术保护重要数据的安全,是有效提升我国信息安全保障水平的重要举措。我国大力推动SM2国产密码算法替换目前所采用的RSA算法,一方面规避RSA算法存在的脆弱性和“预置后门”等安全风险,另一方面确保密码算法这一关键环节的自主可控,保障我国信息安全基础设施的安全可信。中办2018年36号文件《金融和重要领域密码应用与创新发展工作规划(2018-2022年)》以及相关法规文件均要求我国金融和重要领域密码应用采用SM2国产密码算法体系。
由于国密算法尚未实现广泛兼容,在主流浏览器、操作系统等终端环境中不受信任,面向互联网的产品应用中采用国产密码算法将无法满足可用性、易用性和全球通用性的需求,在实际应用中很难真正落地实施。那么面对这个难题,其实我国早有企业已制定比较完美的部署行动,成功帮助政企实现国密合规。