如何将 HSM 加密与 C# 集成?
Posted
技术标签:
【中文标题】如何将 HSM 加密与 C# 集成?【英文标题】:How do I integrate HSM encryption with C#? 【发布时间】:2011-07-31 18:33:33 【问题描述】:如何将Hardware Security Module encryption 与 C# 应用程序集成?
【问题讨论】:
这是***.com/questions/812894/…的副本吗? 假设:HSM => 硬件安全模块。 【参考方案1】:HSM 通常表示硬件安全模块。这是一种通常会物理保护私钥或秘密密钥的设备,以使它们永远不会进入您计算机的 RAM。大多数 HSM 会为您进行加密和签名,而不仅仅是持有密钥。
可以通过少数 API 访问 HSM 的加密能力。包括PKCS#11、Chil(OpenSSL)。 MSCAPI 和 CNG 供应商也存在使用 HSM。
大多数 HSM 供应商都会为您提供 PKCS#11 库或 CAPI/CNG 提供程序。一旦你有了这个,它就是针对已发布的 API 进行编程的问题。
通常,使用 HSM 大致如下:
provider = HSM.Connect()
keyhandle = provider.LoadKey("my_rsa_key")
signature = provider.Sign( keyhandle, "Sha1WithRSA", "myData" )
provider.UnloadKey( keyhandle )
不幸的是,CAPI 和 CNG 的托管部分不允许访问第三方提供商,您需要通过 C# 使用 CAPI/CNG HSM。您必须使用 PInvoke 调用直接调用非托管 CAPI/CNG 或 PKCS#11 库代码。
【讨论】:
【参考方案2】:如果它是符合 PKCS #11 的设备,您可以使用 NCryptoki。从他们的网站:
NCryptoki 是一个用于 .NET 的库 实现 PKCS#11 的框架 规范并提供 API C#、VB.NET、Visual Basic 6、Delphi 和 其他 COM 互操作语言 集成符合 PKCS#11 的令牌 在任何应用程序中。
[...]
主要特点:
符合 PKCS#11 2.20 规范 符合任何 PKCS#11 智能卡/令牌/HSM 32 或 64 位平台 .NET Framework 2.0、3.0、3.5 和 4.0
【讨论】:
【参考方案3】:我们使用了Pkcs11Interop,效果非常好。它是一个 Apache 2.0 许可的开源库。据我所知,它是最新的并且仍在维护中。
【讨论】:
以上是关于如何将 HSM 加密与 C# 集成?的主要内容,如果未能解决你的问题,请参考以下文章