乐于分享
好东西不私藏

2026年下半年首款开源软件版服务器密码机,夯爆了

2026年下半年首款开源软件版服务器密码机,夯爆了

2026年下半年首款开源软件版服务器密码机,夯爆了

01

先问大家一个问题

今天,我想跟大家聊一款特别的产品。聊它之前,先问大家一个问题。

做密码应用开发的朋友,做信创项目的朋友,做密评整改的朋友,你们有没有算过一笔账:想联调 GM/T 0018 的 SDF 接口,得先有一台服务器密码机。这台机器多少钱?入门款几万块起步,主流型号五到十万,好一点的十几万,还得机房、机架、专用网络、专人运维。代码还没写一行,几十万先砸下去了。

高校老师更委屈。一个班四十个学生学密码应用开发,总不能买四十台密码机吧?结果就是老师讲 PPT,学生纸上谈兵,到毕业都没摸过一次真机。

这个难题,困扰行业太多年了。

我们的工程师跟我说:能不能用纯软件,做一台兼容 GM/T 0018-2023 SDF 接口的“密码机”?让每个开发者、每个学生,一台笔记本就能拥有一台。

我说:好,做!而且——开源

2026 年 7 月 30 日,CryptoKit SoftHSM 正式开源。今天,我要骄傲地向大家介绍这款产品:CryptoKit SoftHSM,2026 年下半年首款开源软件版服务器密码机

https://github.com/sawanolin/cryptokit-soft-hsm

02

它到底是什么

一句话:这是一台跑在 Docker 里的“服务器密码机”。

它基于 SDFX 和 openHiTLS 构建,兼容 GM/T 0018-2023 SDF 接口规范。Linux 上一个容器跑服务端,Windows 上一个 DLL 调接口,浏览器里一个 Web 管理端管全部。三件套,齐了。

它的架构非常干净:

...Code

Windows C/C++ 应用

 │ SDF_* API

 ▼

sdfapi_x64.dll

 │ TCP 18081

 ▼

┌────────────────────────────────────────┐

│ Docker: CryptoKit SoftHSM              │

│                                        │

│  sdfxd ── openHiTLS                    │

│   ├─ SDF TCP 服务 :18081               │

│   └─ 私有 Web 管理命令(随机令牌鉴权) │

│                                        │

│  Web 管理服务 :18080                   │

│   └─ Supervisor 套接字控制 sdfxd 启停  │

│                                        │

│  持久化卷 /var/lib/sdfx                │

└────────────────────────────────────────┘

标准 SDF 接口进,密码运算出,中间的密钥、会话、用户文件,全部落盘持久化。这就是一台密码机该有的样子。

03

接口覆盖:把 GM/T 0018-2023 卷干净

做密码设备,最怕什么?接口不全。你买一台设备回来,文档写得好好的,一调用,返回不支持。坑不坑?

我们做了一个决定:除附录 B 的 SM9 接口外,基础接口、扩展接口和附录 C VPN 接口,全部实现

看这张表:

能力
覆盖情况
设备与会话
Open/Close Device、Open/Close Session、GetDeviceInfo
随机数
SDF_GenerateRandom,1–4096 字节
摘要
SM3、SHA-256(SDFX 扩展 SHA-1/224/384/512),分段流式,SM2 ZA 预处理
SM2
外部密钥生成、加解密、签名验签、密钥协商
RSA
1024–2048 位,内外部运算、IPK/EPK/ISK
内部密钥
SM2/RSA 签名密钥、加密密钥,会话级私钥权限
对称密钥
SDF KEK 封装、导入、销毁
SM4
ECB、CBC、CFB、OFB、CTR、XTS、GCM、CCM、CBC-MAC、HMAC-SM3,单包与流式
附录 C VPN
IKE、IPSEC、SSL 及三个 EPK 包装接口
用户文件
Create、Read、Write、Delete,偏移读写

Windows 那个 DLL,一共导出 94 个公开 SDF 函数。什么概念?你手头存量代码里的 SDF 调用,基本不用改,换个链接库直接跑。

SM9 呢?我特别要说明一下。SM9 目前没有实现,调用就直接返回 SDR_NOTSUPPORT,绝不伪造成功。有些设备遇到不支持的接口,文档里查不到,错误码靠猜。我们明明白白写进 API 矩阵文档:SM9 未实现。做技术,不忽悠。

04

国密算法,全家桶

再来看算法。很多人觉得软件模拟器嘛,能跑个 SM4 加密就不错了。我们偏不信这个邪。

SM4,一口气支持八种模式:ECB、CBC、CFB、OFB、CTR、XTS、GCM、CCM。XTS 做了双密钥和密文窃取,GCM/CCM 完整支持 AAD、Nonce 和认证标签——篡改标签,立刻返回 SDR_VERIFYERR。再加上 CBC-MAC 和 HMAC-SM3,MAC 家族也齐了。

SM2,签名、加密、密钥协商一个不落。签名密钥和加密密钥严格分离,签名输入严格限定 32 字节摘要,SM2 签名、密钥交换、加密和 SM4-XTS 的算法标识严格按 GM/T 0006-2023 执行。密钥协商支持静态和临时密钥,能派生 64 到 512 位的会话密钥——要用的内部 SM2 加密密钥,提前由安全管理员预置授权。

RSA,1024 到 2048 位,内部密钥、外部密钥、会话密钥包装全支持。

索引空间给到 1 到 1024。一千多个索引位,教学和联调场景,管够。

05

密钥安全:软件密码机,也要有密码机的尊严

有人会问:软件实现的密码机,密钥安全怎么保证?

这个问题,我们的工程师是掰开了揉碎了做的。

  • 没有默认密码
  • 首次初始化只创建超级管理员、设备信息和设备完整性密钥,不会自动生成任何业务密钥,出厂口令想赖都赖不了。
  • 管理员口令用 PBKDF2-SHA256 存储摘要,明文?不存在的。
  • 所有内部私钥,用 SM4-CTR 加密后落盘持久化。
  • 每条 SM2、RSA、SM4 密钥记录,连同算法、类型、索引、元数据,全部用 HMAC-SM3 做完整性保护。HMAC 的密钥来自初始化时自动生成的设备完整性密钥,Web 上改不了、也导不出。校验失败的记录,直接拒绝参与密码运算。
  • Web 管理命令走容器启动时随机生成的令牌鉴权,令牌只保存在容器内的运行时目录 /run/sdfx,不落业务数据卷。

改个索引,记录重新做完整性保护;备份包恢复前,逐条校验路径、类型、校验和、大小。这台“软件密码机”,把该较真的地方全较真了。

06

四权分立:把商用密码管理的规矩搬进来

大家知道,商密领域的密码机讲究权限分离。很多软件模拟器一个管理员账号包打天下,这在真实场景里是要出大事的。

我们把商用密码管理的规矩原样搬了进来,四角色分权

功能
超级管理员
系统管理员
安全管理员
审计管理员
系统初始化、管理员管理
系统维护、服务管理、备份恢复、设备配置
按矩阵授权
SM2/RSA/对称密钥管理
日志配置、查询和导出

超级管理员管初始化,系统管理员管运维,安全管理员管密钥,审计管理员管日志。密钥的操作和密钥的审计,分在两个人手里。页面只显示授权模块,服务端 API 强制校验角色,手工构造请求也越不了权。

审计日志支持按级别、分类、管理员、来源、时间段组合筛选,一键导出 TXT、CSV、JSONL。密钥还带有效期管理,30 天内到期、已到期都会告警;教学模式下到期仅告警,不会自动停用。

这就是规矩。

07

Web 管理端:好看,好用,在线自检

Web 管理端(18080 端口)能干什么?

设备状态、活动会话、累计请求,一屏尽览。SM2、RSA、对称密钥的生成、启停、删除、公钥导出、口令修改、改索引,点几下就完成。SDF 会话可以直接查看、强制终止。系统管理员还能从 Web 上真正启停、重启容器里的 sdfxd 服务进程——Web 本身保持在线,操作要求输入确认文字,动作全部进审计。

我最喜欢的功能,是在线密码自检:随机数、SM3、SM4、SM2、RSA,浏览器里点一下,当场验证算法活儿干得对不对。

部署呢?一条命令:

...Code

docker run -d \

  --name cryptokit-soft-hsm \

  -p 0.0.0.0:18081:18081 \

  -p 0.0.0.0:18080:18080 \

  -v cryptokit-sdfx-data:/var/lib/sdfx \

  --restart unless-stopped \

  --security-opt no-new-privileges:true \

  sawanolin/cryptokit-soft-hsm:latest

一台云主机、一台实验室服务器,甚至你自己的开发机,几分钟,密码机上线。

08

Windows SDK:极简到只剩一个 DLL

最后说说 Windows x64 SDK。我给团队提了一个要求:交付包必须极简。

最终交付物长这样:

...Code

bin/sdfapi_x64.dll       ← 唯一的运行时

lib/sdfapi_x64.lib       ← MSVC 导入库

lib/sdfapi_x64.dll.a     ← MinGW 导入库

include/                 ← 三个公开头文件

config/sdfapi.ini        ← 一份配置模板

licenses/                ← 授权与第三方声明

SHA256SUMS               ← 全包校验和

一个 DLL,两个导入库,三个头文件,一份配置、一份授权、一份校验清单。MSVC、MinGW 双编译器支持,线程运行库静态链接,不让你再到处找 libwinpthread-1.dll。测试 EXE、OBJ、示例源码、构建元数据,统统不进 SDK 包。每份交付附 SHA256SUMS,校验到字节级。

不服?拿你手头的 SDF 存量代码跑一遍。

09

发布节奏与工程态度

这个项目 2026 年 7 月 30 日首次开源,短短三周,已经迭代到 v1.1.3。86.3% 的 C 代码、10.5% 的汇编,底下一层是 openHiTLS。

发布审核规则我们一点没松:Linux C SDK 的设备、随机数、摘要、SM2 与 0018 扩展回归,Web 初始化、四角色 RBAC、CSRF、密钥与审计的端到端测试,随机数到 RSA 的全套自检,备份恢复与完全重置验证,Windows DLL 的 94 个公开导出,SM2 封装回环和 RSA 真实连接测试。全绿,才发版。

10

多少钱

好,到了大家最关心的环节。

一台入门的硬件服务器密码机,几万块起步。

CryptoKit SoftHSM,多少钱?

我跟同事说,这个定价一定要厚道。同事问:老板,要多厚道?

我说:免费!开源!AGPL-3.0 协议,代码全部放在 GitHub 上。个人学习、开发、课堂教学、接口联调、密码应用测试,随便用。

按 AGPL 第 13 条的规矩,你要是改了代码还对外提供网络服务,就得把对应源码也亮出来——开源的契约,咱们认。

感动人心,价格厚道。这就是我们的态度。

11

几句掏心窝的话

最后,我必须诚实地跟大家说清楚几件事。这也是我们和很多“吹牛产品”最大的区别。

第一,它是软件模拟器,没有商用密码产品认证、FIPS 认证,也没有硬件防拆能力。生产环境的密钥托管、合规场景,请老老实实用认证过的硬件密码机。它的主场是学习、开发、教学、联调和密码应用测试。

第二,TCP 18081 和 Web 18080 默认没有 TLS 和双向认证,请部署在受控网络里,别直接裸奔到公网。

第三,备份包本身没有整包加密,下载下来请放进受控存储。

把这些边界明明白白写出来,恰恰是我们对这个行业的尊重。安全产品,来不得半点含糊。

12

写在最后

很多年前,一台逻辑分析仪贵得离谱,后来开源仪器把整个行业的价格打了下来。今天,服务器密码机的门槛,也该有人来降一降了。

让每一个学密码学的学生,每一支做信创的团队,都能零成本摸到完整的 GM/T 0018 SDF 接口。让“纸上谈兵”彻底成为历史。

项目地址:https://github.com/sawanolin/cryptokit-soft-hsm

在线演示环境的地址和体验账号就写在项目首页,点开就能玩。

2026 年,首款开源软件版服务器密码机。

夯,爆,了。

永远相信美好的事情即将发生。

我是利刃信安,网络安全和密码安全、数据安全领域的小白。

如果你觉得今天这篇有收获,欢迎点赞、在看、转发三连,我们下篇见

点赞
在看
转发

如有疑问,请联系:Mannix6