如何将 HSM 加密与 C# 集成?

发布于 2024-10-31 04:07:35 字数 98 浏览 4 评论 0原文

如何将硬件安全模块加密与 C# 应用程序集成?

How would I integrate Hardware Security Module encryption with a C# application?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风吹雨成花 2024-11-07 04:07:35

HSM 通常表示硬件安全模块。这是一种通常会物理保护私钥或秘密密钥的设备,以便它们永远不会进入您计算机的 RAM。大多数 HSM 会为您进行加密和签名,而不仅仅是保存密钥。

可以通过一些 API 来访问 HSM 的加密功能。包括 PKCS#11Chil (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 库代码。

HSM typically means Hardware Security Module. This is a device that will usually physically protect private or secret keys such that they don't ever get into your computer's RAM. Most HSMs will do encryption and signatures for you rather than just holding keys.

Access to a HSM's crypto powers can be via a handful of APIs. Including PKCS#11, Chil (OpenSSL). MSCAPI and CNG provders also exist to use HSMs.

Most HSM vendors will provide you with a PKCS#11 library or CAPI/CNG provider. Once you have this, it is a matter of programming against a published API.

Generally, using a HSM goes somthing along these lines:

provider = HSM.Connect()
keyhandle = provider.LoadKey("my_rsa_key")
signature = provider.Sign( keyhandle, "Sha1WithRSA", "myData" )
provider.UnloadKey( keyhandle )

Unfortunately, It the managed portion of CAPI and CNG do not allow for access to third-party providers which you would need to use a CAPI/CNG HSM via C#. You will have to call directly into the unmanaged CAPI/CNG or a PKCS#11 library code using PInvoke calls.

得不到的就毁灭 2024-11-07 04:07:35

如果它是兼容 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

If its a PKCS #11 compliant device, you can use NCryptoki. From their website:

NCryptoki is a library for .NET
framework that implements the PKCS#11
specifications and supplies an API for
C#, VB.NET, Visual Basic 6, Delphi and
other COM interop languages for
integrating a PKCS#11 compliant token
in any application.

[...]

Main Features:

  • Compliant with PKCS#11 2.20 specifications
  • Compliant with any PKCS#11 smart card/token/HSM
  • 32 or 64 bit platform
  • .NET Framework 2.0, 3.0, 3.5 and 4.0
手心的温暖 2024-11-07 04:07:35

我们使用了 Pkcs11Interop 并且效果非常好。它是一个 Apache 2.0 许可的开源库。据我所知,它是最新的并且仍在维护中。

We used Pkcs11Interop and it worked really well. It is an Apache 2.0 licensed open source library. As far as i see it is quite up to date and still being maintained.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文