原文标题:嵌入式算法---国家商用密码SM算法
1、国家商用密码
数据加密和解密涉及的算法大致可分为以下三大类:单向散列算法(杂凑算法),对称加密算法,公开密钥加密算法(非对称加密算法)。大部分算法出自国外,事实上我国国家密码管理局也发布了一系列国产商用密码算法,即SM系列,但是简称国密算法,命名上太过随意。
国密算法包括 SM1、SM2、SM3 、SM4、SM7、SM9、ZUC(祖冲之加密算法),其中SM1 和 SM7 算法不公开,其余算法已成为 ISO/IEC 国际标准。
2、国密算法有哪些
SM1、SM4、SM7、ZUC是对称算法,SM2、SM9是非对称算法,SM3是哈希算法,与国际通用算法的关系如下:
2.1 SM1对称加密算法
SM1 算法是分组密码算法,对称加密,分组长度和密钥长度都为 128 位,算法安全保密强度及相关软硬件实现性能与 AES 相当。该算法不公开,仅以IP核的形式存在于芯片中,需要通过加密芯片的接口进行调用,诸如智能IC卡、智能密码钥匙、加密卡等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域。
2.2 SM2公钥密码算法
SM2为椭圆曲线(ECC)公钥加密算法,非对称加密,用来替换 RSA 算法,在不少政府网站会见到此类加密算法。
2.3 SM3杂凑算法
SM3 为密码杂凑算法,采用密码散列(hash)函数标准,用于替代 MD5/SHA-1/SHA-2 等国际算法,是在 SHA-256 基础上改进实现的一种算法,消息分组长度为 512 位,摘要值长度为 256 位。在商用密码体系中,SM3 主要用于数字签名及验证、消息认证码生成及验证、随机数生成等。据国家密码管理局表示,其安全性及效率要高于 MD5 算法和 SHA-1 算法,与 SHA-256 相当。在SM2,SM9标准中使用。
2.4 SM4对称加密算法
SM4 为无线局域网标准的分组加密算法,对称加密,用于替代 DES/AES 等国际算法,SM4 算法与 AES 算法具有相同的密钥长度和分组长度,均为 128 位,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。加密算法与密钥扩展算法都采用 32 轮非线性迭代结构,解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
2.5 SM7对称加密算法
SM7 算法不公开,是一种分组密码算法, 分组长度为128比特,密钥长度为128比特。SM7适用于非接触式IC卡,应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付类应用(积分消费卡、校园一卡通、企业一卡通等)。
2.6 SM9标识密码算法
SM9 为标识加密算法(Identity-Based Cryptography),非对称加密,标识加密将用户的标识(如微信号、邮件地址、手机号码等)作为公钥,省略了交换数字证书和公钥过程,使得安全系统变得易于部署和管理,适用于互联网应用的各种新兴应用的安全保障,如基于云技术的密码服务、电子邮件安全、智能终端保护、物联网安全、云存储安全等等。这些安全应用可采用手机号码或邮件地址作为公钥,实现数据加密、身份认证、通话加密、通道加密等。在商用密码体系中,SM9 主要用于用户的身份认证,据新华网公开报道,SM9 的加密强度等同于 3072 位密钥的 RSA 加密算法。
2.7 ZUC祖冲之流密码算法
ZUC 为流密码算法,对称加密,该机密性算法可适用于 3GPP LTE 通信中的加密和解密,该算法包括祖冲之算法(ZUC)、机密性算法(128-EEA3)和完整性算法(128-EIA3)三个部分。用来替换RC4算法。
3、源码
商密算法中除SM1和SM7不公开外,其他几个开源。商用密码源码地址:
http://www.scctc.org.cn/templates/General/index.aspx?nodeid=73
包括源码、范例,免责声明等信息,可以很方便的移植到C嵌入式软件中。
4、小节
密码算法作为国家战略资源,在大数据和云计算的时代,对信息的保护尤其重要。国家商密算法可以替代部分常用的非国产算法,但应用不是很普及。