1、背景
SM系列国密算法是由中国国家密码管理局于2007年颁布的一组密码算法标准,是中国自主研发的一种新一代密码技术。密码算法是保障信息安全的核心技术,尤其是最关键的银行业核心领域长期以来都是沿用3DES、SHA-1、RSA等国际通用的密码算法体系及相关标准。
在一些行业,国密算法已经成为一种强制性政策,其他行业也开始陆续推广:
1、2014年国务院办公厅第6号文件,提出2020年实现国产密码在金融领域的全面应用。
2、2014年9月3日,银监会发文《关于应用安全可控信息技术加强银行网络安全和信息化建设的指导意见》指出“优先应用安全可控信息技术”,并从2015年起,各银行金融机构对安全可控信息技术的应用不低于15%的比例逐年增加,2019年达到不低于75%。
3、2015年1月13日,人民银行印发《关于推动移动金融技术创新健康发展的指导意见》中指出“优先采用自主可控的产品和密码算法”。
4、中共中央办公厅、国务院办公厅和人民银行2020年140号文《金融领域信息系统国产密码改造基线要求》和《金融领域国产密码改造评价指标体系》相关要求,所有交易保护必须使用国密算法进行保护。
2、概述
SM系列算法主要包含SM1-SM9,其中SM2/SM9是非对称算法(公钥秘密)、SM3是单向散列函数,其余都为对称算法。
简单对比下以下几种算法:
SM系列密码 | 类型 | 说明 | 适用场景 | 替代的国际通用算法 | 是否公开 |
SM1 | 对称密码 | 密钥长度128比特,仅以 IP 核的形式存在于芯片中 | 系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机 | AES | 否 |
SM2 | 非对称加密 | 支持多种密钥长度,椭圆曲线(ECC)公钥加密算法 | 数字签名、密钥交换和公钥加密,速度慢,适用少量数据加密解密过程,一般适用于数据传输 | RSA/DH/ECDSA/ECDH | 是 |
SM3 | 单向散列函数 | 密钥长度256比特,密码杂凑算法,采用哈希算法 | 数字签名和验证、消息认证码的生成与验证以及随机数的生成 | MD5/SHA-1/SHA-2 | 是 |
SM4 | 对称密码 | 密钥长度分组长度128比特,无线局域网标准的分组加密算法 | 数据加密、数字签名、密钥交换,速度快,适用大量数据加密解密过程,一般适用于批量数据存储 | DES/3DES/AES | 是 |
SM7 | 对称密码 | 密钥长度138比特,是一种分组密码算法 | SM7适用于非接触式IC卡,应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通等)。 | 否 | |
SM9 | 非对称加密 | 不需要申请数字证书,将用户的标识作为公钥,省略了交换数字证书和公钥过程 | 端对端离线安全通讯、云端数据加密、基于属性加密、基于策略加密的各种场合。 | 替代基于数字证书的PKI/CA体系 | 是 |
首先来看下什么是对称算法和非对称算法。
2.1 对称算法
定义:同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
优点:加密、解密处理速度快,具有很高的数据吞吐率,硬件加密实现可达到几百兆字节每秒,软件也可以达到兆字节每秒的吞吐率。密钥相对较短。
缺点:
- 对称密钥算法的密钥分发过程十分复杂,所花代价高。
- 多人通信时密钥组合数量会出现爆炸性膨胀,使密钥分发更加复杂化,N个人进行两两通信,总共需要的密钥数为C2N=N(N-1)/2。
- 通信双方必须统一密钥,才能发送保密的信息。
- 对称密码算法还存在数字签名困难问题
对称加密算法工作流程图:
2.2 非对称算法
定义:非对称加密算法需要两个密钥
来进行加密和解密,这两个密钥其中一个是公开密钥(public key,简称公钥
),可以随意发布;另一个是私有密钥(private key,简称私钥
),只能自己持有。
传输过程:
- 接收方B首先生成一对密钥同时将其中的一把作为公开密钥
- 得到公开密钥的发送方A使用该密钥对需要加密的信息进行加密后再发送给接收方B
- 接收方B再使用另一把对应的私有密钥对加密后的信息进行解密,这样就实现了机密数据传输。
优点:
- 网络中每一个用户只需要保护自己的私钥,N个用户仅需要产生N对密钥,密钥少,便于管理。
- 密钥分配简单,不需要秘密的通道和复杂的协议来传送密钥。
- 可以完成数字签名和数字鉴别。
缺点:
- 公钥密码是对大数进行操作,计算量特别浩大,速度远比不上私钥密码体制。
- 公钥密码中要将相当一部分密码信息予以公布,势必对系统产生影响。
- 在公钥密码中,若公钥文件被更改,则公钥被攻破。
- 与对称密码体制相比,非对称密码体制加密、解密处理速度较慢,同等安全强度下,非对称密码体制的密钥位数要求多一些。
2.3 单项散列函数
定义:单向散列函数算法也称Hash(哈希)算法,是一种将任意长度的消息压缩到某一固定长度(消息摘要的)的函数(该过程不可逆)。
SM3是我国国家标准的商用密码体系中提供的一种密码学哈希算法,首版由国家密码管理局于2010年12月17日发布。目前最新版本为2016年发布的GB/T 32905-2016 信息安全技术 SM3密码杂凑算法。
SM3算法过程:
- 明文进行补位处理,使明文长度为512的整数倍。(散列算法是将任意长度的输入数据映射为固定长度输出)
- 将补位后的明文拆分为n个512位的块。
- 对n个块进行迭代,依次对每个块做SM3压缩运算,最终得到8个散列字(一个字4个字节)。
- 将最终的8个散列字拼接起来,得到最终的散列值,共32个字节,256位。
3、主要加密算法详解
目前我国主要使用公开的SM2、SM3、SM4作为商用密码算法。
3.1 SM2:
定义:SM2算法是一种基于椭圆曲线密码的公钥密码算法,其安全性主要基于椭圆曲线离散对数难题。。SM2算法包括密钥生成算法、加密算法、解密算法和数字签名算法等部分。常用的1024位RSA算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用SM2椭圆曲线算法替换RSA算法。
优势:
- 安全性高:SM2算法基于椭圆曲线离散对数难题,安全性较高,能够有效地防止黑客攻击。
- 效率高:SM2算法具有较高的运算效率,能够满足大量数据加密、解密和数字签名的需求。
- 灵活性好:SM2算法支持多种密钥长度,可根据实际需求灵活选择密钥长度,适用于不同的应用场景。
- 自主创新:SM2算法是我国自主创新的密码算法,具有独立的知识产权,能够保障国家关键信息系统的信息安全。
应用:
在实际应用中,一般由服务器端生成一对密钥,其中公钥发送给客户端,客户端使用公钥加密,服务器端使用私钥解密。
3.2 SM3:
定义:将输入的消息分成512位的分组,并对每个分组进行填充、分组、扩展、迭代压缩等操作,最后输出256位的摘要值。具体算法过程见2.3介绍。
适用场景:
电子支付与身份认证:在电子支付和身份认证领域,SM3 可用于对重要信息(如交易明细、用户身份)进行哈希计算,确保数据的完整性与不可篡改性。例如:
- 电子支付: 对交易数据进行 SM3 哈希计算,生成摘要并与交易一同传输。
- 身份认证: 使用 SM3 哈希存储用户密码或身份信息摘要,防止数据泄露。
3.3 SM4:
定义:
SM4算法是一种分组密码算法。其分组长度为128bit,密钥长度也为128bit。加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32位)为单位进行加密运算,每一次迭代运算均为一轮变换函数F。SM4算法加/解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序。
算法过程:
应用:
其在实现高强度加密的同时,保持了较高的加解密速度,适用于大量数据的实时加密与解密,如金融交易、在线支付等对时间敏感的应用场景。
4、总结
综上所述,国密算法中的SM2、SM3和SM4算法都具有较高的安全性,可以满足不同场景下的密码应用需求。在实际应用中,可以根据具体的需求和场景选择合适的算法进行使用。