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

标签 c# encryption hsm hardware-security-module

我将如何整合 Hardware Security Module encryption使用 C# 应用程序?

最佳答案

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

可以通过一些 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 库代码。

关于c# - 如何将 HSM 加密与 C# 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5582903/

相关文章:

java - PKCS11 deriveKey() 和 encrypt() 为 3DES 返回不同的结果

encryption - pkcs#11 内存错误 - 常见原因可能是什么?

c# - 为什么我无法在 visual studio 2012 pro 中将用户控件加载到我的工具箱?

C# - 如何制作 'chance of success' 方法

c# - 日志文件, “Padding is invalid and cannot be removed”

java - 组合多个加密 key 以生成加密 key

java - HSM 错误 |私钥必须是 RSAPrivate(Crt)Key 的实例或具有 PKCS#8

c# - Windows 应用商店应用程序应用栏按钮文本绑定(bind)

c# - Twitter OAuth 请求 token 返回未授权

ruby-on-rails - 无法在 Ruby on Rails 应用程序中使用 openssl