如何将Hardware Security Module encryption与C#应用程序集成?
答案 0 :(得分:4)
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库代码。
答案 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