在《中华人民共和国密码法》中,密码是指采用特定变换的方法对信息等进行加密保护、安全认证的技术、产品和服务。国家对密码实行分类管理。密码分为核心密码、普通密码和商用密码。其中,商用密码用于保护不属于国家秘密的信息。公民、法人和其他组织可以依法使用商用密码保护网络与信息安全。
国产商用密码算法主要包括SM1/2/3/4/7/9以及祖冲之算法ZUC。
(注:SM是商密ShangMi的拼音首字母,ZUC是祖冲之ZUCHONGZHI的前三个字母。)
其中,SM1和SM7并未公开,其他几个算法均有相应的密码行业标准,或已上升为国标。
“国密”、“商密”作为简称,也较为常见。 “国密”没有官方的出处,业界通常理解为国家密码管理局认定的国产密码算法,“商密”则是商用密码的简称。在某些场合中,商密特指国产密码算法。
商用密码算法 | 简介 | 发布 | 对标国际算法 | ||
对称密码算法 | 分组密码 | SM1 | 以芯片、IP核形式,硬件部署 | 未公开 | AES、3DES |
SM4 | 用途广泛,可用于大数据量的加密 | 公开 | AES、3DES | ||
SM7 | 轻量级分组密码,适合资源受限环境 | 未公开 | AES、3DES | ||
序列密码 | ZUC | 流密码,密钥与明文逐比特异或计算 | 公开 | SNOW 3G、RC4 | |
非对称密码算法 | SM2 | 基于椭圆曲线,由私钥算出公钥,用于数字签名、密钥交换、公钥加密 | 公开 | RSA、ECC、ECDSA | |
SM9 | 基于双线性对,是标识密码算法,用户公钥与标识相关,私钥由KGC基于公钥生成,用于数字签名、密钥交换、公钥加密 | 公开 | IBE | ||
密码杂凑算法 | SM3 | 哈希算法,计算摘要 | 公开 | MD5、SHA系列 |
通常,对称密码算法和非对称密码算法结合使用,非对称密码算法做协商密钥,数字签名,小数据量加密,而对称算法用来加密,密码杂凑算法用来计算摘要。
比如,使用SM4加密数据,再使用SM2加密SM4的密钥。
对称密码算法
SM1是需要硬件实现的,软件实现的话SM1做不到。
SM7是轻量级的,适合资源受限环境。
SM4可以应用到很多场景中,适用于大数据量的加密,有些工作模式下的加密和(或)解密可以并行处理分组,有些则不能。
ZUC更适合实时性要求高的场景,电话、视频,是密钥流去和明文/密文异或,有先后顺序。
非对称密码算法
SM2相比RSA,密钥长度短、安全性高。公钥私钥可以由用户自己生成,上报公钥,也可以由密钥生成中心(KGC)生成后下发给用户。通常使用PKI证书体系进行用户身份与公钥的对照管理,不然需要管理维护标识与公钥的关系。
SM9用户公钥与标识相关,私钥由KGC产生。和SM2的区别是SM9不需要维护标识与公钥的关系,利用标识可以算出公钥。
SM2用的多一些,SM9的数学基础更复杂一些。
密码杂凑算法
SM3是密码杂凑算法,用于数字签名和验证、消息认证码的生成与验证、随机数的生成。SM2、SM9算法中也会用到SM3。
国际标准化情况
SM2算法纳入ISO/IEC 14888-3:2018《信息安全技术 带附录的数字签名 第3部分:基于离散对数的机制》。
SM3算法纳入ISO/IEC10118-3:2018《信息安全技术 杂凑函数 第3部分:专用杂凑函数》。
SM4算法纳入ISO/IEC 18033-3:2010/AMD1:2021《信息技术 安全技术 加密算法 第3部分:分组密码 补篇1:SM4》。
SM9算法纳入ISO/IEC 14888-3:2018《信息安全技术 带附录的数字签名 第3部分:基于离散对数的机制》、ISO/IEC 18033-5:2015/ADM1:2021《信息技术安全技术 加密算法 第5部分:基于标识的密码补篇1:SM9》、ISO/IEC 11770-3:2021《信息安全 密钥管理 第3部分:使用非对称技术的机制》。
ZUC算法被3GPP采纳为4G和5G网络的加密算法和完整性保护算法,并且纳入ISO/IEC 18033-4:2011/Amd 1:2020《信息技术 安全技术 加密算法 第4部分:序列算法-补篇1》。