SM2在TLS协议中的应用主要是作为非对称加密算法,用于TLS握手阶段的密钥交换和数字签名。TLS协议通常会结合多种加密技术来保护通信的安全,SM2作为中国商用密码算法标准之一,常被用于国产加密场景下的TLS实现。

以下是SM2在TLS协议中的具体应用场景:

0.定义与作用

TLS加密(Transport Layer Security)

定义:TLS是一种通信协议,它定义了加密数据的方式和顺序,用于保护计算机网络中的通信安全。它工作在传输层,常用于网页浏览、电子邮件传输和其他网络应用。TLS协议可以对通信内容进行加密、验证身份和确保数据完整性。

  • 加密机制:TLS协议并不依赖于某种单一的加密算法,它使用的是一个混合加密系统。在握手阶段,TLS协议使用非对称加密(如RSA或SM2)进行密钥交换,之后使用对称加密(如AES或SM4)来加密传输的数据。整个加密过程还包括哈希算法(如SHA或SM3)来保证数据的完整性。

主要作用:保护数据在网络传输过程中的安全,防止数据被窃取、篡改或伪造。应用包括HTTPS、电子邮件(SMTP、IMAP、POP3)、VPN……

SM2加密

定义:SM2是一种基于椭圆曲线的非对称加密算法,是中国国家密码管理局发布的商用密码标准之一。它用于公钥加密、数字签名和密钥交换。

主要作用:提供加密、签名和密钥交换功能,用于保护数据的机密性、验证发送者身份和防止数据篡改。应用包括数字证书、密钥交换、数字签名。

  • 公钥加密:使用接收方的公钥对数据加密,接收方用自己的私钥解密。
  • 数字签名:用发送方的私钥生成签名,接收方用发送方的公钥验证签名,以确认数据的真实性。
  • 密钥交换:用于在不安全的通信信道中交换对称加密密钥,确保双方通信的安全。

1. TLS握手阶段中的密钥交换

在TLS握手过程中,客户端和服务器之间需要建立一个安全的通信通道。为了实现这个目标,必须在握手过程中安全地交换会话密钥。密钥交换可以通过多种非对称加密算法完成,如传统的RSA、ECDHE等。在中国的国密标准中,SM2被用于替代RSA或ECDHE算法进行密钥交换。

SM2密钥交换流程:

  • 客户端生成随机数并加密:客户端首先生成一个随机数,并使用服务器的SM2公钥对这个随机数进行加密。
  • 服务器解密并生成共享密钥:服务器使用自己的SM2私钥解密客户端发送的随机数。随后,服务器也生成一个随机数,并与客户端的随机数结合生成一个对称密钥(通常是SM4的会话密钥)。
  • 双方确认对称密钥:双方都通过SM2公钥加密和解密完成随机数交换,并使用它们生成的会话密钥用于后续的对称加密通信。

总结:SM2在TLS握手过程中替代RSA或ECDHE,负责安全地进行密钥交换,确保双方能够安全共享会话密钥(例如SM4密钥)以加密后续通信数据。

2. TLS握手中的数字签名

数字签名是TLS握手的一个重要步骤,用于确保通信双方的身份是可信的。服务器通过数字签名来证明其身份,防止中间人攻击。

SM2数字签名在TLS中的应用:

  • 服务器发送证书:服务器向客户端发送包含SM2公钥的数字证书。数字证书通常由权威的证书颁发机构(CA)签名,客户端通过验证这个签名来确认服务器身份。
  • 服务器签名数据:在握手过程中,服务器会使用自己的SM2私钥对一些协商的握手数据进行签名,客户端则使用服务器的SM2公钥来验证签名。
  • 客户端验证服务器身份:客户端通过验证签名来确保服务器确实是它声称的实体,防止中间人冒充服务器。

总结:SM2数字签名在TLS协议中用于身份验证,服务器通过SM2私钥对信息进行签名,客户端通过SM2公钥来验证签名,从而确认通信的合法性。

3. 会话密钥的加密和传输

在握手过程中生成的会话密钥(通常是SM4密钥)需要通过安全的方式进行加密和传输。在国产TLS协议中,SM2用于加密会话密钥,以确保会话密钥在传输过程中不会被第三方截取或破解。

流程:

  • 客户端生成会话密钥:客户端生成一个会话密钥(SM4密钥),并使用服务器的SM2公钥对其进行加密。
  • 服务器解密会话密钥:服务器使用自己的SM2私钥解密会话密钥,并用于后续通信的加密。

总结:SM2在TLS握手中的会话密钥加密环节起到了确保密钥传输安全的作用,使用非对称加密技术保护会话密钥在传输过程中的机密性。

4. 国密SSL/TLS(GM/T 0024标准)

中国在TLS的基础上发展出了国密版本的SSL/TLS协议,其中的加密算法都基于国密算法族,如SM2、SM3和SM4。这个标准明确规定了在TLS协议中的加密、签名和哈希算法的使用:

  • SM2:用于握手阶段的密钥交换和数字签名。
  • SM3:用于生成消息摘要,确保数据完整性。
  • SM4:作为对称加密算法,使用会话密钥加密数据。

总结:在国密版本的TLS协议中,SM2在握手过程中扮演了密钥交换和数字签名的双重角色(公钥加密),确保数据传输的机密性、完整性和双方身份的真实性(身份认证)。SM3作为哈希算法,适合在数据完整性验证、数字签名和密码存储中使用,尤其适合区块链等需要大量数据处理的场景。SM4作为对称加密算法,适用于需要快速高效加密的数据传输和存储,如通信、数据库和设备加密。

特性 SM2 SM3 SM4
算法类型 非对称加密 哈希算法 对称加密
功能 加密、签名、密钥交换 消息摘要、数据完整性验证 数据加密、解密
密钥长度 256位椭圆曲线 不适用 128位
安全性 安全性高,相当于3072位RSA 优于MD5、SHA-1,类似SHA-256 相当于AES-128,安全性高
性能 相对较高,适合密钥交换等场景 轻量级,适合大规模数据处理 高效,适用于大数据量的加密
主要应用场景 数字签名、密钥交换、电子认证 数据完整性、密码存储、区块链 数据加密、无线通信、设备加密

5. 安全性优势

  • 高效性:SM2基于椭圆曲线密码学(ECC),与传统的RSA相比,SM2能在更小的密钥长度下提供更高的安全性。它的256位密钥可以提供相当于3072位RSA密钥的安全性,具有计算效率高、通信开销小的特点。
  • 国密标准合规:SM2是中国自主研发的商用密码算法,符合国家密码管理局的标准,确保在国产系统和应用中使用时具有合规性和高安全性。

6. SM2在TLS协议中的典型应用场景

  • 电子政务:政府系统中的安全通信需要确保通信双方的身份合法性和数据传输的机密性,国密TLS协议基于SM2来实现这些功能。
  • 金融支付:金融系统中的敏感数据传输需要高安全性,SM2在TLS中的应用可确保交易过程中密钥交换和数字签名的安全。
  • 企业级应用:企业内部或对外提供的敏感数据传输(如VPN连接、文件传输)可以通过使用SM2的TLS握手来保护数据。

总结

SM2在TLS协议中的应用主要集中在握手阶段的密钥交换和数字签名,通过SM2公钥加密和私钥解密来完成安全的密钥交换,并通过SM2签名验证来确保通信双方的身份合法性。SM2结合其他国密算法(如SM3和SM4)构建了一个完整的国产安全通信体系,用于保障数据传输的机密性、完整性和身份认证。