关于GmSSL
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 3.0的基本功能已经开发完毕,并在GmSSL develop 分支发布,预计于今年内发布正式版本。
基于GmSSL 3.0的Nginx已经修改完毕,并在国密Nginx发布,欢迎大家使用。
GmSSL 3.0版本具有更快、更小、更安全的特点,相比于GmSSL 2.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带来的开销。
子项目
本项目包括一些相对独立的子项目:
- 国密Nginx:提供支持国密SSL和证书的Nginx服务器
- 国密浏览器:基于Chromium的支持国密SSL和证书的通用浏览器
- SDF ENGINE:支持提供SDF接口的PCI-E密码卡和服务器密码机
- SKF ENGINE:支持提供SKF接口的USB-KEY、TF卡等智能密码钥匙
- SM9密钥服务:为个人用户提供基于电子邮件地址的SM9标识密钥服务
- 自助CA服务:提供自助式的网站DV证书服务和S/MIME邮件证书服务
- 国密标准文本:提供全面的国密GM/T系列标准文本
快速上手
参见快速上手指南
项目文档
参见项目文档索引
本项目受网络空间安全专项2018YFB0803601和Intel计划支持。