国密SM2算法SSL证书的加密原理详解

peco · 2天之前 · 83 次点击 · 预计阅读时间 4 分钟 · 大约8小时之前 开始浏览    

国密 S

M2 算基础

SM2 算法概述

SM2 是由国家密码管理局于 2010 年 12 月 17 日发布的公开密钥加密标准,相关标准为 “GM/T 0003 - 2012《SM2 椭圆曲线公钥密码算法》”,并在 2016 年成为中国国家密码标准(GB/T 32918 - 2016)。它主要用于替换 RSA 加密算法,随着密码技术和计算机技术的发展,常用的 1024 位 RSA 算法面临严重的安全威胁,而 SM2 算法以其更先进安全的特性被选用。

算法组成

  1. 签名算法:SM2 签名算法已被收录于国际标准 ISO/IEC 14888 - 3:2018《信息安全技术带附录的数字签名第 3 部分:基于离散对数的机制》。签名过程涉及私钥对消息摘要进行运算生成签名,验证时使用公钥对签名进行验证,确保消息的完整性和不可抵赖性。
  1. 密钥交换算法:用于通信双方协商共享密钥,在不安全的网络环境中,通过密钥交换算法,双方可以基于各自的私钥和对方的公钥,计算出相同的共享密钥,该密钥用于后续的数据加密。
  1. 加密算法:使用公钥对数据进行加密,只有对应的私钥才能解密。加密过程将明文数据通过特定的数学运算转换为密文,在传输过程中,即使密文被窃取,没有私钥也无法还原出明文,从而保证数据的保密性。

与 RSA 算法对比优势

对比项 SM2
算法结构 基于基本椭圆曲线(ECC),利用椭圆曲线上点的运算构建密码体系
计算复杂度 完全指数级,相比 RSA 的亚指数级,在同等安全强度下,破解难度更大
存储空间 密钥长度一般为 192 - 256bit,占用存储空间小
密钥生成速度 较 RSA 算法快百倍以上,能快速生成密钥对,提高系统运行效率
解密加密速度 较快,在处理加密和解密操作时,能更高效地完成任务

SSL 协议中的国密 SM2 算法应用

申请国密SSL证书https://www.joyssl.com/certificate/select/national_secret_algorithm.html?nid=7

填写注册码(230907)即可优惠申请SSL证书

e8db99848ad1cfa3e971fe623c91e93.png

SSL 协议基本流程

SSL 协议位于传输层和应用层之间,其基本流程如下:

  1. 握手阶段:客户端和服务器交换 Hello 消息,协商密码套件(包括加密算法、哈希算法等),交换随机数,决定是否重用会话。接着交换必要参数,协商预主密钥,再交换证书信息用于验证对方身份。法密钥生成阶段:双方使用预主密钥和交换的随机数生成主密钥,该主密钥用于后续的数据加密和解密。
  1. 数据传输阶段:在记录层,使用主密钥和其他安全参数对数据进行加密传输,并验证数据的完整性。

国密 SM2 算法在 SSL 协议中的作用

  1. 身份认证:服务器向客户端发送包含 SM2 公钥的 SSL 证书,客户端通过验证证书的真实性(证书由受信任的 CA 颁发)以及证书中的公钥与服务器的对应关系,确认服务器的身份。同样,在双向认证场景下,客户端也向服务器发送证书,服务器验证客户端身份。
  1. 密钥协商:基于 SM2 的密钥交换算法,客户端和服务器在握手阶段协商出共享密钥。双方各自拥有私钥和对方的公钥,通过特定的计算,得到相同的共享密钥,用于后续的数据加密。
  1. 数据加密:在数据传输阶段,使用协商好的共享密钥,结合 SM4 等对称加密算法(SM2 算法主要用于非对称加密,在实际数据传输中,由于对称加密算法效率更高,常采用对称加密算法对大量数据进行加密)对数据进行加密。SM2 算法生成的密钥用于保护对称加密密钥的传输安全。

国密 SM2 算法 SSL 证书加密过程详解

证书颁发过程

  1. 申请:网站运营者向工信部许可的权威电子认证机构(CA)提交证书申请,包括相关的身份信息、域名信息等。
  1. 审核:CA 对申请信息进行审核,确保申请主体的真实性和合法性。
  1. 密钥生成

    • 服务器端生成 SM2 密钥对,私钥由服务器妥善保管,公钥发送给 CA。
    • CA 生成自己的 SM2 密钥对,用于对服务器证书进行签名。
  • 证书签发:CA 使用自己的私钥对服务器的公钥以及其他相关信息(如域名、有效期等)进行签名,生成国密 SM2 算法 SSL 证书,并将证书颁发给服务器。

c142d505547b53aede5b318d3b90289.png

加密通信过程

  1. 客户端发起请求:客户端(如浏览器)向服务器发送 HTTPS 请求,请求中包含客户端支持的密码套件列表等信息。
  1. 服务器响应:服务器收到请求后,选择双方都支持的包含 SM2 算法的密码套件,并将自己的国密 SM2 算法 SSL 证书发送给客户端。
  1. 客户端验证证书

    • 客户端检查证书是否由受信任的 CA 颁发,通过内置的 CA 根证书列表进行验证。
    • 验证证书的有效期、域名是否与访问的域名一致等。
    • 使用 CA 的公钥验证证书签名的有效性,确保证书未被篡改。
  • 密钥协商

    • 客户端生成一个随机数(预主密钥),使用服务器证书中的 SM2 公钥对预主密钥进行加密,并发送给服务器。
    • 服务器使用自己的 SM2 私钥解密,得到预主密钥。
    • 客户端和服务器根据预主密钥以及之前交换的随机数,通过特定的算法计算出主密钥。
  • 数据加密传输

    • 双方使用主密钥和对称加密算法(如 SM4)对数据进行加密传输。例如,客户端将请求数据加密后发送给服务器,服务器接收后解密;服务器将响应数据加密后发送给客户端,客户端接收后解密。
    • 在传输过程中,通过哈希算法(如 SM3)计算数据的哈希值,对数据进行完整性校验,确保数据未被篡改。

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

83 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传