GmSSL 国产密码库使用教程
【免费下载链接】GmSSL 支持国密SM2/SM3/SM4/SM9/SSL的密码工具箱 项目地址: https://gitcode.com/gh_mirrors/gm/GmSSL
1. 项目介绍
GmSSL是由北京大学自主开发的国产商用密码开源库,实现了对国密算法、标准和安全通信协议的全面功能覆盖。该项目支持包括移动端在内的主流操作系统和处理器,支持密码钥匙、密码卡等典型国产密码硬件,提供功能丰富的命令行工具及多种编程语言接口。
2. 主要特性
超轻量设计
GmSSL 3 大幅度降低了内存需求和二进制代码体积,不依赖动态内存,可以用于无操作系统的低功耗嵌入式环境(MCU、SOC等),开发者可以更容易地将国密算法和SSL协议嵌入到现有项目中。
合规性保证
GmSSL 3 可以配置为仅包含国密算法和国密协议(TLCP协议),依赖GmSSL的密码应用更容易满足密码产品型号检测的要求,避免由于混杂非国密算法、不安全算法等导致的安全问题和合规问题。
安全性提升
TLS 1.3在安全性和通信延迟上相对之前的TLS协议有巨大提升,GmSSL 3 支持TLS 1.3协议和RFC 8998的国密套件。同时支持密钥的加密保护,提升了密码算法的抗侧信道攻击能力。
跨平台支持
GmSSL 3 更容易跨平台,构建系统不再依赖Perl,默认的CMake构建系统可以容易地和Visual Studio、Android NDK等默认编译工具配合使用。
3. 项目快速启动
安装依赖
确保系统已安装以下基础软件:
- Git
- CMake
- GCC 或其他兼容的C编译器
克隆仓库及构建GmSSL
打开终端,执行以下命令:
git clone https://gitcode.com/gh_mirrors/gm/GmSSL.git
cd GmSSL
mkdir build
cd build
cmake ..
make
sudo make install
测试GmSSL
安装完成后,可以运行测试来验证GmSSL是否正确安装:
make test
在make install完成后,GmSSL会在默认安装目录中安装gmssl命令行工具,在头文件目录中创建gmssl目录,并且在库目录中安装libgmssl.a、libgmssl.so等库文件。
4. 主要功能
密码算法支持
- 分组密码:SM4 (CBC/CTR/GCM/ECB/CFB/OFB/CCM/XTS), AES (CBC/CTR/GCM)
- 序列密码:ZUC/ZUC-256, ChaCha20
- 哈希函数: SM3, SHA-1, SHA-224/256/384/512
- 公钥密码:SM2加密/签名, SM9加密/签名
- MAC算法:HMAC, GHASH, CBC-MAC
- 密钥导出函数:PBKDF2、HKDF
- 随机数生成器:Intel RDRAND, HASH_DRBG (NIST.SP.800-90A)
证书和数字信封
- 数字证书:X.509证书, CRL证书注销列表, CSR (PKCS #10) 证书签名请求
- 私钥加密:基于SM4/SM3口令加密的PEM格式私钥 (PKCS #8)
- 数字信封:SM2密码消息 (GM/T 0010-2012)
SSL协议支持
- TLCP 1.1,支持密码套
TLS_ECC_SM4_CBC_SM3 {0xE0,0x13}(GB/T 38636-2020、GM/T 0024-2014) - TLS 1.2,支持密码套件
TLS_ECDHE_SM4_CBC_SM3 {0xE0,0x11}(GB/T 38636-2020、GM/T 0024-2014) - TLS 1.3,支持密码套件
TLS_SM4_GCM_SM3 {0x00,0xC6}(RFC 8998)
5. 多语言接口支持
GmSSL通过子项目提供多种编程语言绑定:
- Java绑定:以JNI方式实现的Java语言绑定
- PHP绑定:以PHP扩展方式实现的PHP语言绑定
- Go绑定:以CGO方式实现的Go语言绑定
- Python绑定:以ctypes方式实现的Python语言绑定
- JavaScript实现:纯JavaScript实现的国密算法库
6. 国密硬件支持
GmSSL内置支持国密SDF密码硬件(通常为PCI-E接口的密码卡或者服务器密码机)和SKF密码硬件(通常为小型USB密码钥匙)。开发者也可以用软件SDF模块来进行开发和测试,正式部署的时候再替换为硬件SDF。
7. 应用案例和最佳实践
构建国密SSL/TLS服务器
利用GmSSL的SSL/TLS支持,可以为你的应用程序搭建支持国密算法的服务器,确保通信安全。
密码硬件集成
如果你的应用需要使用国密硬件设备,GmSSL提供了对SDF和SKF的支持,可以帮助轻松实现硬件安全策略。
OpenSSL兼容层
提供了OpenSSL的兼容层,Nginx等应用可以通过兼容层调用GmSSL功能,支持Nginx 1.16 ~ 1.25 之间的版本。
8. 性能测试
GmSSL提供了丰富的性能测试工具,可以通过以下命令启用性能测试:
cmake .. -DENABLE_TEST_SPEED=ON
make
./bin/sm4test
./bin/sm3test
./bin/sm2_signtest
./bin/sm2_enctest
./bin/sm9test
./bin/zuctest
测试结果显示,在不同硬件平台上GmSSL都能提供优秀的性能表现,满足各种应用场景的需求。
9. 配置选项
GmSSL支持多种配置选项来优化性能和功能:
生成动态库或静态库
cmake .. -DBUILD_SHARED_LIBS=ON
启用优化实现
可以显式地指定采用针对特定硬件和处理指令集的密码算法优化实现:
cmake .. -DENABLE_SM3_AVX_BMI2=ON
cmake .. -DENABLE_SM4_AESNI_AVX=ON
编译不安全的密码算法(教学用途)
cmake .. -DENABLE_BROKEN_CRYPTO=ON
10. 跨平台编译支持
GmSSL支持在多种平台上编译:
Windows Visual Studio环境
mkdir build
cd build
cmake .. -G "NMake Makefiles" -DWIN32=ON
nmake
Cygwin环境
mkdir build
cd build
cmake ..
make
Android交叉编译
mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-23
make
iOS交叉编译
mkdir build
cd build
cmake .. -G Xcode -DCMAKE_TOOLCHAIN_FILE=../ios.toolchain.cmake -DPLATFORM=OS64
cmake --build . --config Release
这个简单的指南将帮助你开始使用GmSSL库。更多详细信息和进阶功能,请参考官方文档和示例代码。
【免费下载链接】GmSSL 支持国密SM2/SM3/SM4/SM9/SSL的密码工具箱 项目地址: https://gitcode.com/gh_mirrors/gm/GmSSL
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



