本文由NetworkFox分享,来源于华三通信,原题“什么是国密算法?”,本文有修订和改动。
1、引言
最近几年经常能听到IM应用的开发者讨论国产信创方面的技术问题,在某些场景下,国密算法是硬性要求,所以学习一下国密算法还是很有必要的。国密算法是指由中国国家密码管理局发布的密码算法标准,旨在保障国家信息安全。目前,国家密码管理局已发布了一系列国产商用密码标准算法,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9以及祖冲之密码算法(ZUC)等。通过在金融、电子政务及安防等领域广泛应用国密算法,在对敏感数据进行机密性、完整性和可用性保护的同时,减少对外部密码产品的依赖,提升国家信息安全水平。本文将尽量以通俗易懂的文字,为你分享国密算法的种类、技术原理和应用场景等。
技术交流:
- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》
- 开源IM框架源码:https://github.com/JackJiang2011/MobileIMSDK(备用地址点此)
(本文已同步发布于:http://www.52im.net/thread-4552-1-1.html)
2、系列文章
本文是IM通讯安全知识系列文章中的第12篇,此系列总目录如下:
《即时通讯安全篇(一):正确地理解和使用Android端加密算法》
《即时通讯安全篇(二):探讨组合加密算法在IM中的应用》
《即时通讯安全篇(三):常用加解密算法与通讯安全讲解》
《即时通讯安全篇(四):实例分析Android中密钥硬编码的风险》
《即时通讯安全篇(五):对称加密技术在Android平台上的应用实践》
《即时通讯安全篇(六):非对称加密技术的原理与应用实践》
《即时通讯安全篇(七):用JWT技术解决IM系统Socket长连接的身份认证痛点》
《即时通讯安全篇(八):如果这样来理解HTTPS原理,一篇就够了》
《即时通讯安全篇(九):你知道,HTTPS用的是对称加密还是非对称加密?》
《即时通讯安全篇(十):为什么要用HTTPS?深入浅出,探密短连接的安全性》
《即时通讯安全篇(十一):IM聊天系统安全手段之通信连接层加密技术》
《即时通讯安全篇(十二):IM聊天系统安全手段之传输内容端到端加密技术》
《即时通讯安全篇(十三):信创必学,一文读懂什么是国密算法》(* 本文)
3、为什么需要国密算法?
3.1国密算法的产生背景
在网络信息传输和存储过程中,数据的保密性和安全性是一项重要的需求。传统的国际标准加密算法虽然安全可靠,但由于无法保证源代码的安全性,因此存在着源代码被外部恶意攻击者渗透或篡改的风险。为了构建安全的行业网络环境并增强国家行业信息系统的“安全可控”能力,中国积极开展了针对信息安全需求的研究和探索。自2007年开始,中国制定了国密算法标准,并于2010年正式发布。经过多年的发展、改进和完善,国密算法已成为中国自主研发的密码算法标准,并在各行业得到广泛应用。它的诞生不仅显著提升了中国在密码技术领域的核心竞争力,还为国家信息安全建设作出了重要贡献。
3.2国密算法的特点
国密算法具备如下特点:
1)安全性高:国密算法采用了严密的密码学原理和复杂的运算方式,具有较高的安全性。它在加密、数字签名和哈希等功能上都能提供可靠的保护,抵抗了各种传统和现代密码攻击手段。
2)高效性与灵活性:国密算法在保证安全性的同时,注重算法的效率。它的加密速度和运行效率相对较高,同时也能适应不同的密码长度和密钥长度,以满足不同场景的需求。
3)标准化广泛:国密算法已被国家标准化机构认可和采用。它符合国际密码学标准的基本要求,具备与国际算法相媲美的能力。同时,国密算法也在国内推广和应用广泛,成为中国信息安全领域的基础核心算法之一。
4)自主创新:国密算法是中国自主研发的密码算法,所以对于算法的实现和推广都具有独立的掌控能力。这意味着中国可以更好地保护自己的国家信息安全,减少对外依赖,提高自主抵抗能力。
5)面向多领域应用:国密算法不仅局限于某个特定领域的应用,它适用于金融业、电子商务、通信、物联网、区块链等不同领域的信息安全保护。它的广泛应用范围使得国密算法可以满足不同行业的安全需求。
4、国密算法应用概述
国密算法包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9以及祖冲之密码算法(ZUC)等。
其中:
1)SM1、SM4、SM7、祖冲之密码(ZUC)属于对称算法;
2)SM2、SM9属于非对称算法;
3)SM3属于杂凑算法。
下文将主要介绍国密算法中的常用算法SM1、SM2、SM3和SM4的实现和应用。
5、SM1算法的原理和应用场景
SM1算法是国密算法中的一种对称加密算法,其特点是加解密使用相同密钥。利用SM1对称加密算法加解密数据的过程。
SM1算法未公开,仅以IP核(Intellectual Property Core,一种预先做好的集成电路功能模块)的形式存在于芯片中。
SM1算法主要用于小数据量的加密保护,因此被广泛用于研制智能IC卡、智能密码钥匙、门禁卡、加密卡等安全产品。
6、SM2算法的实现和应用场景
6.1概述
SM2算法是基于ECC(Elliptic Curve Cryptography)椭圆曲线的非对称加密算法,包括了SM2-1椭圆曲线数字签名算法、SM2-2椭圆曲线密钥交换协议和SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名、密钥协商和数据加密等功能。SM2算法在许多领域都有广泛的应用。在电子商务领域:SM2算法被用于保护用户个人信息的安全传输,确保用户在网上交易过程中的隐私和财产的安全。在互联网金融领域:SM2算法被用于数字支付、电子银行等场景,实现用户身份认证和交易的安全性。此外,SM2算法还适用于物联网领域,保护物联网设备之间的通信安全,确保数据的可靠传输。
6.2数据加密
在非对称加密算法中,可对外公布的密钥称为“公钥”,只有持有者所知的密钥称为“私钥”。发送者使用接收者的公钥来加密消息,接收者用自己的私钥解密和读取该消息。利用SM2非对称加密算法加解密数据的过程:
6.3密钥协商
由于椭圆曲线的计算复杂性高,破解难度大,因此SM2算法在密钥协商技术领域也起着关键作用。
利用SM2算法进行密钥协商的过程:
1)会话双方生成自己的私钥(随机数);
2)会话双方由私钥、ECC椭圆曲线参数G各自计算出公钥;
3)会话双方将自己的公钥传递给对方,传递过程公开。由于椭圆曲线的计算复杂性高,破解难度大,因此攻击者难以通过公钥和椭圆曲线参数G反推出私钥;
4) 双方将自己的私钥与对方的公钥进行运算,最终得到相同的会话密钥,该会话密钥可作为共享密钥用于对称加密(例如SM4算法)通信。
6.4数字签名
数字签名是一种用于验证信息完整性、真实性和来源的技术手段。它通常用于确保数据在传输或存储过程中没有被篡改,并且可以追溯到特定的发送方。发送方使用自己的私钥对消息进行加密,生成数字签名。接收方使用发送方的公钥对签名进行解密和验证,以验证消息的完整性和真实性。在数字签名应用中,SM2算法通常与SM3摘要算法一起使用。
7、SM3算法的实现和应用场景
SM3杂凑(Hashing)算法是国密算法中的一种摘要算法。SM3算法通过哈希函数将任意长度的消息压缩成固定长度的摘要。摘要具有唯一性,即不同信息生成的摘要不同,且无法由摘要恢复出原始信息,更无法伪造信息获得相同摘要,因此SM3算法被广泛用于实现数字签名、数据完整性检测及消息验证等功能。基于SM3算法的特点,在信息安全领域,SM3算法被用于保护密码学协议、数字证书和电子签名等数据的完整性。在区块链领域,SM3算法被用于加密货币的区块生成和链上交易的校验,确保区块链的安全性。此外,SM3算法还可以应用于密码学随机数的生成和伪随机序列的校验等领域,增加了数据的安全性和可靠性。
利用SM2算法和SM3算法对用户数据进行数字签名认证及完整性校验的过程:
1) 用户A发送的数据A经过SM3哈希算法运算生成摘要A。
2) 摘要A经过用户A的私钥加密生成数字签名。
3) 用户A的明文数据和数字签名经加密算法(SM1/SM2/SM4)加密成密文后发送给用户B。加密算法以非对称加密算法SM2为例,即加解密使用不同密钥。
4)密文到达用户B处,经加密算法(SM1/SM2/SM4)解密后,还原成明文数据和数字签名。
5)用户B使用用户A的公钥解密数据包中的数字签名:
解密成功,数据来源合法,得到摘要A;
解密失败,数据来源非用户A,丢弃本次数据。
6)收到的数据包中的明文数据经过SM3哈希运算生成摘要A’。对比摘要A和摘要A’:
摘要A’=摘要A,数据完整;
摘要A’≠摘要A,数据被篡改,丢弃本次数据。
8、SM4算法的实现和应用
8.1概述
与SM1算法分类相同,SM4算法同样为分组对称加密算法,但SM4算法实现公开。分组加密算法是将明文数据按固定长度进行分组,用同一密钥逐组加密,密文解密时同样使用相同密钥逐组解密。SM4算法实现简单,因此加解密速度较快,消耗资源少,主要用于大数据量的加密和解密,例如静态储存或数据信号传输通道中数据的加解密。在网络安全领域,SM4算法被用于保护网络传输和存储的敏感数据,如银行卡信息、密码等。在物联网领域,SM4算法被用于物联网设备之间的通信和数据加密,确保物联网数据的隐私安全。此外,SM4算法还可以应用于区块链领域,保护加密货币的交易安全等领域,为相关系统和数据的安全提供了保障。SM4算法支持ECB、CBC、CFB等多种分组模式,下文将介绍ECB和CBC两种基础模式。
8.2加解密模式:ECB模式SM4算法
基于ECB模式对数据加解密的过程:
1)发送端将明文按固定长度分组,对每个明文分组分别使用相同的密钥进行加密生成密文分组。完整的密文由所有密文分组按序排列组合而成;
2)接收端将密文按固定长度分组,对每个密文分组分别使用相同的密钥进行解密生成明文分组。所有明文分组按序排列组合而成完整的明文数据。ECB模式实现简单,各段数据间互不影响,有利于并行运算,但相同的明文块会被加密成相同的密文块,不能提供严格的数据保密性。
8.3加解密模式:CBC模式
SM4算法基于CBC模式对明文加密的过程:
1)将明文按固定长度分组;
2)明文分组1与初始向量IV进行异或运算,异或运算的结果经密钥加密后得到密文分组1;
3)剩余的明文分组依次与前一个密文分组进行异或运算后再加密,得到对应的密文分组;
4)完整的密文由所有密文分组按序排列组合而成。
SM4算法基于CBC模式对密文解密的过程:
1)将密文按固定长度分组后,对密文分组进行倒序处理;
2)对密文分组n先使用密钥进行解密,密文分组n解密后的数据与密文分组n-1进行逻辑逆运算,得到明文分组n;
3) 同理,剩余的密文分组解密后再与前一个密文分组进行逻辑逆运算,得到对应的明文分组;
4)最后,密文分组1用密钥解密后的数据是与初始向量进行逻辑逆运算,然后得到明文分组1;
5)完整的明文由所有明文分组按序排列组合而成。CBC模式安全性高于ECB,但明文块不能并行计算,且误差会传递下去。
9、国密算法与国际标准算法的对比
国密算法和国际标准算法都是现代密码学中常用的加密算法,但在技术和优劣方面存在一些区别。常见国密算法与国际标准算法各参数性能的对比如下:
10、国密算法的典型应用场景有哪些?
10.1AD-WAN纵向IP/MPLS组网
国密算法可以与AD-WAN技术结合,应用于IP/MPLS纵向网场景。通过AD-WAN智能运维平台,实现国密配置一键下发,在网络中构建国密数据加密通道,实现基于国密的端到端的IPsec隧道保护。
国密算法在端到端的IPsec隧道中的工作原理如下:
1)在IKE密钥协商阶段,使用IKE协议进行密钥协商过程中,采用SM2算法生成会话密钥。
2)在身份认证阶段,本端使用SM2和SM3算法生成身份信息的数字签名,并使用SM1或SM4算法和会话密钥对身份信息和数字签名进行加密;对端收到加密的身份信息后,使用相同的会话密钥解密,然后通过SM2和SM3算法进行身份认证。
3)在数据传输阶段,本端使用SM2和SM3算法生成用户数据的数字签名,并使用SM1或SM4算法以及会话密钥对用户数据和数字签名进行加密;对端收到加密的用户数据后,使用相同的会话密钥解密,然后通过SM2和SM3算法进行数据完整性检查。
10.2 4G/5G VPDN业务组网
4G/5G VPDN(Virtual Private Dialup Network,虚拟专有拨号网络)业务是在4G/5G无线网络中采用拨号方式实现的一种虚拟专有网络业务。它利用L2TP技术为客户构建与互联网隔离的隧道,以满足客户分支和总部内网通信的需求。VPDN组网同时支持将L2TP和IPsec技术结合,通过L2TP完成用户认证确保接入安全,并利用IPsec保障通信数据安全。
1)4G/5G VPDN组网中分支网关由4G/5G路由设备担任,通过拨号接入运营商网络。
2)运营商对4G/5G路由设备的APN(Access Point Name,接入点名称)、账户、SIM/USIM卡信息进行认证。
3)4G/5G路由设备认证通过后被运营商判断是VPDN用户,同时由运营商AAA服务器向LAC(L2TP Access Concentrator,L2TP访问集中器)设备下发L2TP隧道属性,LAC设备将基于下发的L2TP隧道属性信息向该VPDN用户所属总部的LNS(L2TP Network Server,L2TP网络服务器)设备发起隧道建立请求。
4)L2TP隧道建立后,LAC设备会通过此隧道向LNS设备透传用户的认证信息。LNS设备向总部内网的AAA服务器发起对VPDN用户的二次认证,认证通过后为VPDN用户分配一个企业内网IP地址。分支终端用户和总部可以开始通信。
5)分支网关与总部网关设备上均安装有国密板卡,通过IPsec协商建立起端到端的IPsec隧道,使用国密算法对传输的数据报文进行加密保护和数据完整性检查。
6)经IPsec加密后的数据报文在LAC设备处进行L2TP封装后,通过L2TP隧道传输到LNS。
7)LNS收到数据报文后首先对L2TP报文进行解封装,然后经过IPsec解密还原出数据报文,根据报文目的IP地址转发报文。
11、相关文章
[1] 常用加解密算法与通讯安全讲解
[2] 非对称加密技术的原理与应用实践
[3] IM聊天系统安全手段之通信连接层加密技术
[4] IM聊天系统安全手段之传输内容端到端加密技术
[5] 通俗易懂:一篇掌握即时通讯的消息传输安全原理
[6] 基于Netty的IM聊天加密技术学习:一文理清常见的加密概念、术语等
[7] 理论联系实际:一套典型的IM通信协议设计详解(含安全层设计)
[8] 微信新一代通信安全解决方案:基于TLS1.3的MMTLS详解
[9] 手把手教你为基于Netty的IM生成自签名SSL/TLS证书
(本文已同步发布于:http://www.52im.net/thread-4552-1-1.html)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。