Email:2225994292@qq.com
CNY
国密SSL证书SM2算法在非对称加密通信中的工作机制
更新时间:2026-05-19 作者:国密SSL证书

SSL/TLS协议是互联网通信安全的基础,而国密SSL证书则是将SM2算法融入传统SSL/TLS体系的关键载体。本文将深入剖析SM2算法的核心原理,详细阐述其在SSL/TLS非对称加密通信中的完整工作机制,对比分析其与国际主流算法的技术差异,并探讨其实际应用价值。

一、SM2算法基础原理

1. 椭圆曲线密码学(ECC)基础

SM2算法基于椭圆曲线密码学(ECC)构建。与RSA算法基于大整数分解难题不同,ECC的安全性依赖于椭圆曲线离散对数问题(ECDLP)的计算困难性。在有限域Fp上,椭圆曲线通常定义为满足以下方程的点集:

y² = x³ + ax + b

其中a,b∈Fp,且满足4a³+27b²≠0(mod p)。

椭圆曲线离散对数问题可描述为:给定椭圆曲线上的点G(基点)和点P,寻找整数k使得P=kG。在数学上,已知k和G计算P非常容易,但已知P和G反求k则极其困难,这一单向性构成了ECC算法的安全基础。

2. SM2算法的核心组成

SM2算法由国家密码管理局于2010年12月发布,2012年成为国家标准(GB/T 32918-2016),2016年被纳入ISO/IEC国际标准。它包含三个核心功能模块:

  • 数字签名算法:用于身份认证和数据完整性验证
  • 密钥交换协议:用于通信双方安全协商会话密钥
  • 公钥加密算法:用于加密传输少量敏感数据

SM2算法采用了国家密码管理局推荐的256位素数域椭圆曲线参数(SM2p256v1),其安全强度相当于3072位RSA算法,但计算效率和资源消耗远优于RSA。

3. SM2算法的密钥生成

SM2算法的密钥生成过程如下:

  • 选择有限域Fp上的椭圆曲线E和基点G,G的阶为n
  • 用户随机生成私钥d,其中1≤d≤n-1
  • 计算公钥P=dG
  • 私钥d由用户秘密保存,公钥P可公开分发

与国际ECC算法不同,SM2算法在签名和加密过程中引入了用户标识ID,将用户身份与公钥绑定,增强了系统的安全性和可管理性。

二、SM2在SSL/TLS协议中的工作机制

1. 国密SSL/TLS协议概述

传统SSL/TLS协议使用RSA或国际ECC算法进行身份认证和密钥交换。国密SSL/TLS协议在保持原有协议框架基本不变的前提下,引入了SM2、SM3、SM4等国密算法,形成了符合中国密码标准的安全通信协议。

国密SSL/TLS协议支持两种工作模式:

  • 单证书模式:服务器仅使用一张SM2签名证书,适用于仅需身份认证的场景
  • 双证书模式:服务器同时使用SM2签名证书和SM2加密证书,分别用于身份认证和密钥交换,这是国密SSL/TLS的推荐模式

2. SM2 SSL握手过程详解

SSL/TLS握手是建立安全连接的核心过程,SM2算法在其中主要参与身份认证和密钥交换两个关键环节。以下是国密SSL/TLS完整握手流程:

阶段1:客户端问候(Client Hello)

客户端向服务器发送Client Hello消息,包含以下关键信息:

  • 支持的最高TLS版本
  • 随机数Client Random
  • 会话ID
  • 支持的密码套件列表(包含国密密码套件,如ECC-SM2-WITH-SM4-SM3)
  • 支持的压缩方法
  • 扩展信息(如服务器名称指示SNI)

阶段2:服务器问候与证书发送

服务器收到Client Hello消息后,进行以下操作:

  • 发送Server Hello消息,确认使用的TLS版本、会话ID、密码套件和压缩方法,并生成服务器随机数Server Random
  • 发送Certificate消息,包含服务器的SM2证书链。在双证书模式下,服务器会同时发送签名证书和加密证书
  • 发送Server Key Exchange消息(仅在使用临时密钥交换时需要),包含服务器生成的临时公钥和SM2签名
  • 发送Certificate Request消息(可选),要求客户端提供证书进行双向认证
  • 发送Server Hello Done消息,表示服务器问候阶段结束

阶段3:客户端认证与密钥交换

客户端验证服务器证书的有效性后,进行以下操作:

  • 发送Certificate消息(仅在服务器要求客户端认证时),包含客户端的SM2证书
  • 发送Client Key Exchange消息,这是SM2算法发挥核心作用的环节:

a. 在双证书模式下,客户端生成随机预主密钥(Pre-master Secret)

b. 使用服务器SM2加密证书的公钥对预主密钥进行SM2公钥加密

c. 将加密后的预主密钥发送给服务器

  • 发送Certificate Verify消息(仅在客户端认证时),使用客户端SM2私钥对握手过程中的所有消息进行签名,证明自己拥有证书对应的私钥
  • 发送Change Cipher Spec消息,表示后续消息将使用协商好的加密算法和密钥进行加密
  • 发送Finished消息,包含对整个握手过程的哈希值,用于验证握手过程的完整性

阶段4:服务器完成握手

服务器收到客户端消息后,进行以下操作:

  • 使用自己的SM2加密私钥解密Client Key Exchange消息,得到预主密钥
  • 与客户端相同,使用预主密钥、Client Random和Server Random计算出会话密钥(Master Secret)
  • 验证客户端的Certificate Verify签名(如果有)
  • 发送Change Cipher Spec消息
  • 发送Finished消息,包含对整个握手过程的哈希值

当客户端收到并验证服务器的Finished消息后,SSL/TLS握手过程完成,双方开始使用SM4对称加密算法和SM3哈希算法进行安全数据传输。

3. SM2数字签名在身份认证中的作用

身份认证是SSL/TLS协议的核心目标之一,SM2数字签名算法在其中扮演着关键角色:

  • 服务器证书由可信CA使用SM2私钥签名,客户端使用CA的SM2公钥验证签名,确认服务器身份的真实性
  • 在双向认证场景下,客户端证书同样由CA签名,服务器验证客户端证书的签名,确认客户端身份
  • 服务器和客户端在握手过程中使用自己的SM2私钥对握手消息进行签名,证明自己拥有证书对应的私钥,防止证书冒用

SM2数字签名算法的流程如下:

  • 签名者计算待签名消息的SM3哈希值Z=SM3(ID||a||b||Gx||Gy||Px||Py||M)
  • 生成随机数k,1≤k≤n-1
  • 计算点(x1,y1)=kG,r=(e+x1)mod n
  • 计算s=(1+dA)⁻¹·(k-r·dA)mod n
  • 签名结果为(r,s)

验证者收到签名(r,s)和消息M后,使用签名者的公钥PA进行验证:

  • 计算消息的哈希值e
  • 计算t=(r+s)mod n
  • 计算点(x1,y1)=sG+tPA
  • 计算R=(e+x1)mod n
  • 若R=r,则签名有效,否则无效

4. SM2密钥交换与会话密钥生成

密钥交换是SSL/TLS协议中最关键的安全环节,其目标是在不安全的信道上安全协商出只有通信双方知道的会话密钥。国密SSL/TLS协议支持两种SM2密钥交换方式:

(1)静态密钥交换方式

这是双证书模式下的默认密钥交换方式:

  • 服务器预先生成SM2加密密钥对,并将公钥包含在加密证书中
  • 客户端生成随机预主密钥,使用服务器加密公钥加密后发送给服务器
  • 服务器使用自己的加密私钥解密得到预主密钥
  • 双方使用预主密钥和随机数计算出会话密钥

这种方式的优点是实现简单、计算效率高,但不支持前向保密。如果服务器的加密私钥泄露,所有之前加密的通信内容都可能被解密。

(2)临时密钥交换方式(ECDHE_SM2)

为了支持前向保密,国密SSL/TLS协议还支持基于SM2的临时密钥交换方式:

  • 服务器为每次会话生成临时SM2密钥对
  • 服务器使用自己的签名私钥对临时公钥进行签名,发送给客户端
  • 客户端验证签名的有效性,确认临时公钥来自服务器
  • 客户端也生成临时SM2密钥对,将临时公钥发送给服务器
  • 双方使用自己的临时私钥和对方的临时公钥计算出共享密钥
  • 基于共享密钥计算出预主密钥,再进一步计算出会话密钥

这种方式的优点是支持前向保密,即使服务器的长期私钥泄露,之前的通信内容仍然安全。缺点是计算开销较大,因为每次会话都需要生成新的临时密钥对。

三、SM2与国际主流非对称加密算法的对比

1. 安全强度对比

在相同安全强度下,SM2算法的密钥长度远小于RSA算法,这意味着SM2算法在提供更高安全性的同时,具有更小的计算开销和存储需求。

安全强度 (位)RSA 密钥长度 (位)SM2 密钥长度 (位)密钥长度比
8010241606.4:1
11220482249.1:1
128307225612:1
192768038420:1
2561536051230:1

SM2算法采用的256位密钥长度提供了128位的安全强度,相当于3072位RSA算法的安全水平。而目前广泛使用的2048位RSA算法仅提供112位的安全强度,已被NIST建议在2030年前逐步淘汰。

2. 计算性能对比

SM2算法在计算性能上显著优于RSA算法,特别是在签名验证和密钥交换操作上:

  • 签名生成:SM2算法的签名生成速度比RSA算法快约10-20倍
  • 签名验证:SM2算法的签名验证速度比RSA算法快约5-10倍
  • 密钥交换:SM2算法的密钥交换速度比RSA算法快约10-15倍
  • 密钥生成:SM2算法的密钥生成速度比RSA算法快约100倍以上

这种性能优势在高并发的Web服务器、移动终端和物联网设备上尤为明显。使用SM2算法可以显著降低服务器的CPU负载,提高系统的并发处理能力,同时减少移动设备的电量消耗。

3. 自主可控性对比

RSA和国际ECC算法均由国外机构设计和控制,存在潜在的安全后门和技术垄断风险。而SM2算法是我国自主设计、自主研发、自主可控的密码算法,其算法设计、参数选择和实现标准均由国家密码管理局统一管理。

使用SM2算法可以从根本上摆脱对国外密码技术的依赖,保障国家关键信息基础设施的安全。同时,SM2算法通过了国家密码管理局的严格安全性审查,其安全性得到了国内密码学界的广泛认可。

四、SM2 SSL证书的部署与应用

1. SM2 SSL证书的申请与颁发

SM2 SSL证书的申请流程与传统SSL证书类似,但需要使用国密算法生成密钥对和证书请求(CSR):

  • 申请者在服务器上生成SM2密钥对
  • 生成包含SM2公钥和申请者信息的CSR文件
  • 将CSR文件提交给国密CA机构
  • CA机构验证申请者的身份信息
  • CA机构使用自己的SM2根证书私钥对申请者的公钥进行签名,生成SM2 SSL证书
  • 申请者将SM2 SSL证书和私钥安装到服务器上

目前,国内已有多家CA机构提供SM2 SSL证书服务,包括中国金融认证中心(CFCA)、上海数字证书认证中心(SHECA)、北京数字证书认证中心(BJCA)等。

2. 服务器端部署

主流的Web服务器如Nginx、Apache、Tomcat等均已支持国密SSL/TLS协议和SM2算法。以Nginx为例,部署SM2 SSL证书的主要步骤如下:

  • 安装支持国密算法的Nginx版本(如Tengine或国密改造后的Nginx)
  • 将SM2签名证书、加密证书和私钥文件上传到服务器
  • 修改Nginx配置文件,启用国密SSL/TLS协议和SM2密码套件
  • 重启Nginx服务,使配置生效

在双证书模式下,Nginx配置文件中需要同时指定签名证书和加密证书:

server {
    listen 443 ssl;
    server_name example.com;
    
    ssl_certificate /path/to/sm2_sign.crt;
    ssl_certificate_key /path/to/sm2_sign.key;
    ssl_certificate /path/to/sm2_enc.crt;
    ssl_certificate_key /path/to/sm2_enc.key;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-SM2-WITH-SM4-SM3:ECDHE-SM2-WITH-SM4-GCM-SM3;
    ssl_prefer_server_ciphers on;
}

3. 客户端支持

客户端对国密SSL/TLS协议的支持是SM2 SSL证书广泛应用的关键。目前:

  • 国产浏览器如360浏览器、QQ浏览器、搜狗浏览器等均已支持国密SSL/TLS协议
  • 主流移动操作系统如Android和iOS也已逐步增加对国密算法的支持
  • 国产操作系统如统信UOS、麒麟OS等原生支持国密算法

对于不支持国密算法的客户端,服务器可以配置为同时支持国密和国际算法,实现平滑过渡。当客户端支持国密算法时,优先使用国密算法建立连接;当客户端不支持时,自动降级使用RSA或国际ECC算法。

4. 典型应用场景

SM2 SSL证书已在多个关键领域得到广泛应用:

  • 政务领域:政府网站、电子政务系统、政务云平台
  • 金融领域:网上银行、手机银行、证券交易系统、支付平台
  • 能源领域:电力监控系统、石油天然气管道控制系统
  • 交通领域:铁路调度系统、城市轨道交通控制系统
  • 医疗领域:电子病历系统、远程医疗平台

SM2算法作为我国自主研发的椭圆曲线公钥密码算法,在安全强度、计算性能和自主可控性等方面均优于国际主流的RSA算法。将SM2算法应用于SSL/TLS协议,构建国密SSL证书安全通信体系,是保障我国网络空间安全的重要举措。


Dogssl.cn拥有20年网络安全服务经验,提供构涵盖国际CA机构SectigoDigicertGeoTrustGlobalSign,以及国内CA机构CFCA沃通vTrus上海CA等数十个SSL证书品牌。全程技术支持及免费部署服务,如您有SSL证书需求,欢迎联系!
相关文档
立即加入,让您的品牌更加安全可靠!
申请SSL证书
0.197582s