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

[](https://www.nuget.org/packages/BouncyHsm.Client/)

_Bouncy Hsm_ 是一个通过 PKCS#11 接口访问的加密存储的开发者友好实现。
它可以模拟 HSM(硬件安全模块)和智能卡(也可包含合格区域),还包括一个 Web 管理界面和一个 REST 接口。
创建 _Bouncy Hsm_ 旨在促进使用 PKCS#11 设备的应用程序的开发和测试。
它不适用于生产数据,因为它在存储或网络调用期间未实现任何数据和密钥保护。
创建 _BouncyHsm_ 项目是作为 SoftHSMv2 的替代方案,因为我在使用 SoftHSMv2 时经常遇到问题。

(截图来自 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 请求, 云安全, 加密工具, 后量子密码, 威胁情报, 安全开发, 密码学, 开发者工具, 手动系统调用, 数字签名, 智能卡模拟器, 椭圆曲线加密, 测试环境, 网络测绘, 证书生成, 请求拦截