浅谈SM9数字签名算法

SM9算法产生的背景

Background

SM9是我国自主研发的一种标识密码算法,由国家密码管理局于2016年3月28日发布,它主要用于用户的身份认证,是一种新型的密码算法。SM9算法在信息安全领域有着广泛的应用场景,它可以用于电子政务、电子商务、物联网、移动支付等领域,为用户的身份认证和数据安全提供有力保障。

SM9是基于双线性对的标识密码算法,与SM2类似,包含三个部分:数字签名算法、密钥协商算法、加解密算法。在这些算法中使用了椭圆曲线上的点对关系进行运算,不同于传统意义上的SM2算法,可以实现基于身份的密码体制,也就是公钥与用户的身份信息即标识相关,从而比传统意义上的公钥密码体制有许多优点,省去了证书管理等。

与DES、AES等国际知名密码算法类似,SM9也是一种分组密码算法。它将明文数据按照固定长度的分组进行加密和解密操作,从而实现对数据的保护。分组密码算法将明文数据按照一定长度的分组进行加密和解密操作,具有较高的安全性和效率。

浅谈SM9数字签名算法

图片来源于百度

综上所述,SM9算法相比传统国际标准密码算法的优势如下:

1、安全性优势:

SM9算法支持多种安全协议,可以满足不同应用场景的需求。相比传统的密码算法,SM9算法在设计和实现上更加灵活和高效,具有更高的安全性。

2、特异性优势

SM9算法是我国自主研发的密码算法,具有自主知识产权。相比传统的国际标准密码算法,SM9算法更能满足我国信息安全的需求。

浅谈SM9数字签名算法

算法介绍

Introduction

一、历代国密算法比较

SM1:SM1是一种对称加密算法,其加密强度与AES相当。该算法不公开,主要用于政府、军队等敏感部门的加密通信。

SM2:SM2是一种非对称加密算法,基于椭圆曲线密码(ECC)的公钥密码算法标准,其密钥长度256bit,包含数字签名、密钥交换和公钥加密,用于替换RSA/DH/ECDSA/ECDH等国际算法,可以满足电子认证服务系统等应用需求,由国家密码管理局于2010年12月17号发布。

SM3:SM3是一种密码杂凑算法,用于替代MD5/SHA-1/SHA-2等国际算法,适用于数字签名和验证、消息认证码的生成与验证以及随机数的生成,可以满足电子认证服务系统等应用需求,于2010年12月17日发布。

SM4:SM4是一种对称加密算法,密钥长度和分组长度均为128 bits,主要用于无线局域网标准,用于替换DES/AES等算法,该算法已公开。

SM9:SM9是一种标识密码算法,包括数字签名算法、密钥协商算法、加解密算法三部分。不同于传统签名算法由用户随机选择私钥然后计算得到公钥的方式,SM9能够实现用户指定公钥,密钥生成中心通过公钥计算私钥,该算法可以满足电子认证服务系统等应用需求。

浅谈SM9数字签名算法

图片来源于百度

二、基本概念

标识(identity)

标识可以唯一确定一个实体身份的信息,且实体无法否认。

密钥生成中心(Key Generation Center)

KGC是一个负责生成、存储和管理密钥的机构,主要用于确保信息安全和数据隐私。在密码学中,KGC主要负责产生系统参数、生成主密钥以及每个用户的私钥。在SM9算法中,KGC不仅负责生成主密钥,还负责生成会话密钥。会话密钥是基于身份的密钥,在一次性的会话中使用的临时密钥,主要用于保护和管理数据通信中的加密和解密。

主密钥(master key)

密码分层结构中最顶层的密钥,对于非对称密钥,其包括主私钥(由KGC随机数生成,不公开)和主公钥(由主私钥结合系统参数生成,公开)。主密钥根据签名和加密用途的不同,分为签名主密钥对和加密主密钥对。在标识密码中,主私钥一般由KGC通过随机数发生器产生,主公钥由主私钥结合系统参数产生。

基于标识的密码技术(Identity-Based Cryptography)

IBC是一种非对称的公钥密码体系。在IBC中,用户的公钥可以是任意可公开验证的标识信息,比如电子邮件地址、手机号码、QQ号码等,不需要通过传统的证书颁发机构(CA)颁发数字证书。SM9算法就是一种基于标识的密码算法,其公钥是由用户的标识信息计算得到,私钥则由KGC根据用户的标识信息生成并安全地发送给用户。

签名私钥

签名私钥是发送方身份的证明,类似于日常生活中的公章或私章,具有唯一性,不能备份和存档,丢失后需要重新生成新的密钥对。而验证公钥则需要存档,用于验证旧的数字签名。

浅谈SM9数字签名算法

图片来源于百度

三、算法过程

系统初始化:首先,密钥生成中心(KGC)生成系统参数,包括椭圆曲线参数、哈希函数、双线性对等。这些参数会被公开,并被所有参与者使用。

主密钥生成:KGC生成主私钥和主公钥。主私钥由KGC秘密保存,而主公钥则会被公开。

用户密钥生成:用户向KGC提交自己的标识信息(如身份证号、邮箱等),KGC使用主私钥和用户的标识信息生成用户的私钥,并通过安全通道发送给用户。同时,KGC使用主公钥和用户的标识信息生成用户的公钥,并将其公开。

设q是一个大素数,G1和G2是阶为q的两个加法群(椭圆曲线上的群),任给P1∈ G1 , P2∈ G2

浅谈SM9数字签名算法

数字签名过程:发送方使用自己的私钥对待签名的消息生成数字签名。具体过程包括使用哈希函数生成消息摘要、使用私钥加密消息摘要等步骤。

浅谈SM9数字签名算法

验签过程:接收方使用发送方的公钥和数字签名验证消息的真实性和完整性。具体过程包括使用哈希函数生成消息摘要、使用发送方的公钥解密数字签名、比较解密出的消息摘要和原始消息摘要是否一致等步骤。

浅谈SM9数字签名算法

在安全角度上,应用SM9算法时仍需考虑以下几个方面

  1. 输入验证方面:在实现SM9算法时,如果没有对输入进行充分的验证,可能会导致攻击者利用恶意输入来执行攻击,例如缓冲区溢出攻击或注入攻击等。

  2. 密钥生成方面:SM9算法的密钥生成过程中,如果没有采用足够强度的随机数生成器,或者没有对生成的密钥进行充分的安全性检查,可能会导致生成的密钥存在漏洞,从而被攻击者破解。

  3. 加密和解密方面:在实现SM9算法的加密和解密过程时,如果在实现SM9算法的加密和解密过程时存在代码错误或逻辑漏洞,就会导致加密或解密的结果不正确,或者被攻击者利用来解密或篡改加密数据。

浅谈SM9数字签名算法

SM9数字签名算法总结

Summary

传统数字签名算法中,为了保证数字签名的安全性和可信性,需要使用数字证书来证明签名者的身份和公钥的有效性。然而,数字证书的管理和颁发过程非常复杂,需要依赖可信的证书颁发机构(CA)来进行颁发和管理。这不仅增加了系统的复杂性和成本,而且一旦CA出现问题或者存在信任问题,整个数字签名系统的安全性就会受到威胁。相比之下,SM9数字签名算法不需要数字证书,用户的公钥可以是由其标识信息计算得到,因此无需复杂的证书管理。同时,由于不需要依赖可信的CA来进行颁发和管理,SM9数字签名算法的系统安全性也不会受到CA信任问题的影响。此外,SM9数字签名算法还具有更高的安全性和灵活性,可以应用于各种需要数据完整性保护和身份认证的场景。综上所述,SM9数字签名算法解决了传统数字签名算法中的证书管理复杂、证书颁发机构存在信任问题以及证书存储和传输存在安全隐患等痛点,具有更高的实用价值和推广意义。

文章作者:郭民晟

手绘插画:岳    媛

原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/32676.html

(0)
EBCloud's avatarEBCloud
上一篇 2024年4月2日 下午3:28
下一篇 2024年4月2日 下午3:28

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注