如何将HSM加密与c#集成

本文关键字:集成 加密 HSM | 更新日期: 2023-09-27 17:49:27

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

如何将HSM加密与c#集成

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

访问HSM的加密能力可以通过少数api。包括pkcs# 11,儿童(OpenSSL)。MSCAPI和天然气供应商也可以使用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库代码。

如果它是pkcs# 11兼容的设备,您可以使用NCryptoki。来自他们的网站:

NCryptoki是一个。net库框架,实现pkcs# 11规范并提供APIc#, 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

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