GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具。
GmSSL 是一个开源的密码工具箱,支持 SM2/SM3/SM4/SM9/ZUC 等国密(国家商用密码)算法、SM2 国密数字证书及基于 SM2 证书的 SSL/TLS 安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建 PKI/CA、安全通信、数据加密等符合国密标准的安全应用。GmSSL 项目是 OpenSSL 项目的分支,并与 OpenSSL 保持接口兼容。因此 GmSSL 可以替代应用中的 OpenSSL 组件,并使应用自动具备基于国密的安全能力。GmSSL 项目采用对商业应用友好的类 BSD 开源许可证,开源且可以用于闭源的商业应用。
GmSSL 项目由北京大学关志副研究员的密码学研究组开发维护,项目源码托管于 GitHub。自 2014 年发布以来,GmSSL 已经在多个项目和产品中获得部署与应用,并获得 2015 年度“一铭杯”中国 Linux 软件大赛二等奖(年度最高奖项)与开源中国密码类推荐项目。GmSSL 项目的核心目标是通过开源的密码技术推动国内网络空间安全建设。
关键特性支持 SM2/SM3/SM4/SM9/ZUC 等全部已公开国密算法
支持国密 SM2 双证书 SSL 套件和国密 SM9 标识密码套件
高效实现在主流处理器上可完成 4.5 万次 SM2 签名[^注 1]
支持动态接入具备 SKF/SDF 接口的硬件密码模块[^注 2]
支持门限签名、秘密共享和白盒密码等高级安全特性[^注 2]
支持 Java、Go、PHP 等多语言接口绑定和 REST 服务接口
路线图
更快、更小、更安全是下一个大版本升级(GmSSL v3.0)的主要目标,我们将从下列方向进行改进:采用 CMake 替代目前基于 Perl 的构建系统
支持 Linux/Windows/macOS/Android/iOS 等主流操作系统,移除对嵌入式 OS 等其他系统的支持
支持 X86/ARM/RISC-V,针对上述平台 64 位指令集做汇编层面的优化
将 C 语言标准由目前的 C89 更新为最新的 C99 或 C11,及部分 GCC 特性,移除对 Perl 的依赖
移除不安全的算法和协议,仅支持国密算法和主流国际算法,提升对 AEAD、TLS 1.3 等新标准的默认支持力度
提升密码算法抗木马、抗侧信道攻击的安全性
降低运行时堆内存的使用量,降低总体二进制代码体积
提供特定于国密算法和协议的统一的多语言(支持 Rust/Java/Go/PHP)封装
保持和 OpenSSL 最新版本的兼容性,实现 GmSSL 和 OpenSSL 在同一个软件中的共存
国密算法
国密算法是国家商用密码算法的简称。自 2012 年以来,国家密码管理局以《中华人民共和国密码行业标准》的方式,陆续公布了 SM2/SM3/SM4 等密码算法标准及其应用规范。其中“SM”代表“商密”,即用于商用的、不涉及国家秘密的密码技术。其中 SM2 为基于椭圆曲线密码的公钥密码算法标准,包含数字签名、密钥交换和公钥加密,用于替换 RSA/Diffie-Hellman/ECDSA/ECDH 等国际算法;SM3 为密码哈希算法,用于替代 MD5/SHA-1/SHA-256 等国际算法;SM4 为分组密码,用于替代 DES/AES 等国际算法;SM9 为基于身份的密码算法,可以替代基于数字证书的 PKI/CA 体系。通过部署国密算法,可以降低由弱密码和错误实现带来的安全风险和部署 PKI/CA 带来的开销。
子项目
本项目包括一些相对独立的子项目:国密浏览器:基于 Chromium 的支持国密 SSL 和证书的通用浏览器
SDF ENGINE:支持提供 SDF 接口的 PCI-E 密码卡和服务器密码机
SKF ENGINE:支持提供 SKF 接口的 USB-KEY、TF 卡等智能密码钥匙
SM9 密钥服务:为个人用户提供基于电子邮件地址的 SM9 标识密钥服务
自助 CA 服务:提供自助式的网站 DV 证书服务和 S/MIME 邮件证书服务
国密标准文本:提供全面的国密 GM/T 系列标准文本