harrison314/BouncyHsm

GitHub: harrison314/BouncyHsm

基于 .NET 和 BouncyCastle 的软件级 HSM/智能卡模拟器,通过 PKCS#11 接口、Web UI 和 REST API 简化密码学应用的开发与测试。

Stars: 162 | Forks: 25

# Bouncy Hsm ![GitHub release (with filter)](https://img.shields.io/github/v/release/harrison314/BouncyHsm) [![NuGet Status](http://img.shields.io/nuget/v/BouncyHsm.Client.svg?style=flat)](https://www.nuget.org/packages/BouncyHsm.Client/) ![GitHub License](https://img.shields.io/github/license/harrison314/BouncyHsm) _Bouncy Hsm_ 是一个通过 PKCS#11 接口访问的加密存储的开发者友好实现。 它可以模拟 HSM(硬件安全模块)和智能卡(也可包含合格区域),还包括一个 Web 管理界面和一个 REST 接口。 创建 _Bouncy Hsm_ 旨在促进使用 PKCS#11 设备的应用程序的开发和测试。 它不适用于生产数据,因为它在存储或网络调用期间未实现任何数据和密钥保护。 创建 _BouncyHsm_ 项目是作为 SoftHSMv2 的替代方案,因为我在使用 SoftHSMv2 时经常遇到问题。 ![Screenshots - BouncyHsm web UI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/89c90295a0092341.gif) (截图来自 2.0.0 版本) ## 功能 _Bouncy Hsm_ 实现了标准版本 2.40、3.1 和版本 3.2 的 PKCS#11 接口。 * 通过 PKCS#11 接口进行多应用程序和用户访问。 * 使用 Web 界面和 REST API 进行 Slot 和加密对象管理。 * 创建/移除 Slot。 * 插入和拔出设备(Token)。 * 编辑对象属性。 * 导入 P12/PFX 文件。 * 以 PEM 格式导入加密对象。 * 生成 CSR,生成自签名证书,从文件导入证书。 * 生成密钥。 * ... * 可以模拟具有合格区域和签名 PIN 的卡。 * 可以使用 Web 界面模拟 _保护认证路径_。 * 可以模拟可移动设备(Token)。 * 支持 RSA 密钥(大小为 2-6K)。 * 支持 [80 种命名椭圆曲线](/Doc/SupportedAlgorithms.md#elliptic-curves) 和用户定义的椭圆曲线。 * Edwards 曲线(Ed25519, Ed448)。 * Montgomery 曲线(X25519, X448)。 * 后量子密码学(ML-DSA, SLH-DSA, ML-KEM) * 支持 Secret(HMAC, derive,...) * 支持 AES 密钥。 * 支持 Salsa20 密钥。 * 支持 ChaCha20 密钥(以及 ChaCha20Poly1305 算法)。 * 支持 Camellia 密钥。 * [支持的机制](/Doc/SupportedAlgorithms.md) * [支持的 PKCS#11 函数](/Doc/SupportedFunctions.md) * 支持 [机制的自定义配置文件](/Doc/Profiles.md)(限制机制以模拟特定类型的 HSM 或卡)。 * 跨平台和 Linux 操作系统版本具有相同的行为和算法支持。 * 无依赖的原生 PKCS#11 库(无依赖地狱,无需权限配置)。 * _BouncyHsm_ 可在 [.Net 10.0](https://github.com/dotnet/core/blob/main/release-notes/10.0/supported-os.md) 支持的所有平台上运行。此外,它可以作为 _Windows 服务_ 运行,并且也可以在 _Raspberry Pi Zero 2 W_ 上运行。原生库 _BouncyHsm.Pkcs11Lib_ 适用于 Windows x86 和 x64、Linux x64、RHEL 类 x64([也可以为其他平台编译](/Doc/BuildPkcs11Lib.md))。 * 用于管理的 CLI 工具。 * Nuget([BouncyHsm.Client](https://www.nuget.org/packages/BouncyHsm.Client))包含 REST API 客户端和用于单元测试的原生 PKCS#11 库。(参见[示例项目](/Examples/BouncyHsmTestExample)。) ## 快速入门与部署指南 * [快速入门指南](/Doc/QuickstartGuide.md) * [部署指南](/Doc/Deployment.md) * [Docker 支持](/Doc/DockerSupport.md) ## 贡献与问题 欢迎提交 Pull Request。如果您不确定更改是否合适,请先开启一个 issue。 如果发现的错误或更改涉及 PKCS#11 标准,请填写标准的链接部分。 在 [CONTRIBUTING](/.github/CONTRIBUTING.md) 中查看更多规则。 ## 链接 ### 技术 * [Dotnet 10.0](https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-10/overview) * [BouncyCastle](https://github.com/bcgit/bc-csharp) * [Pkcs11Interop](https://github.com/Pkcs11Interop) * [LiteDb](https://www.litedb.org/) * [Blazor WebAssembly](https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor) * [cmp](https://github.com/camgunz/cmp) * [MessagePack-CSharp](https://github.com/neuecc/MessagePack-CSharp) ### 其他链接 * [PKCS #11 Cryptographic Token Interface Base Specification Version 2.40](https://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/os/pkcs11-curr-v2.40-os.pdf) * [PKCS #11 Cryptographic Token Interface Base Specification Version 3.1](https://docs.oasis-open.org/pkcs11/pkcs11-spec/v3.1/os/pkcs11-spec-v3.1-os.pdf) * [PKCS #11 Cryptographic Token Interface Base Specification Version 3.2](https://docs.oasis-open.org/pkcs11/pkcs11-spec/v3.2/pkcs11-spec-v3.2.pdf) * [Software Ideas Modeler](https://www.softwareideas.net/) - 用于绘制文档中图表的工具 * [NSwag studio](https://github.com/RicoSuter/NSwag/wiki/NSwagStudio) - 用于生成 OpenApi 客户端的工具 * [Ako som robil BouncyHsm](https://harrison314.github.io/BouncyHsm.html) - 我关于 BouncyHsm 开发、技术决策和开发原因的博客文章 - 斯洛伐克语
标签:Bouncy Castle, CVE, Ed25519, HSM模拟器, PKCS#11, REST API, RSA, SIEM, SoftHSM替代, TCP SYN 扫描, Web UI, XML 请求, 云安全, 加密工具, 后量子密码, 威胁情报, 安全开发, 密码学, 开发者工具, 手动系统调用, 数字签名, 智能卡模拟器, 椭圆曲线加密, 测试环境, 网络测绘, 证书生成, 请求拦截