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

时间:2011-04-07 14:41:40

标签: c# encryption hsm hardware-security-module

如何将Hardware Security Module encryption与C#应用程序集成?

3 个答案:

答案 0 :(得分:4)

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库代码。

答案 1 :(得分:3)

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

答案 2 :(得分: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
  •