GmSSL是什么

子凡问答2020-08-28 10:36:09阅读(...)

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 开源许可证,开源且可以用于闭源的商业应用。

ssl 证书

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 系列标准文本
收藏0个人收藏
走进科技生活方式

评论交流

泪雪默认头像请「登录」后参与评论
  1. 加载中..