使用没有PKCS11的HSM在.NET中进行加密

时间:2016-11-03 16:06:55

标签: c# .net random cryptography hsm

我正在开发一个应用程序,在c#(Cryptography命名空间)中使用不带PKCS#11的.NET 3.5中的HSM执行加密操作(用于客户演示)

  1. 我找到了HSM的CSP支持的算法(certutil -csp "HSM's CSP Provider name found in regedit" -csptest),其中一些算法在Cryptography namespace中没有CryptoServiceProvider(RC2,RC4,DESX对称算法) ; MD4,MD2,AES-GMAC哈希算法),但它们在MS文档中列为支持:https://msdn.microsoft.com/en-us/library/windows/desktop/bb931354(v=vs.85).aspx。有人会知道如何使用这些来执行操作吗?换句话说,是否有可能选择一种没有特殊CSP classe的算法?

  2. 我有一个类似的随机数生成问题。我的HSM支持这些RNG算法:RNG,FIPS186DSARNG,DUALECRNG(与1中的算法相同。)有没有办法用C#中的指定算法生成随机数?

  3. 我最后想直接在HSM上保存生成的对称密钥,但是Cryptography命名空间只有非对称密钥的KeyContainers。

  4. 提前感谢任何对这些问题有任何想法的人! 编辑:添加了.NET framework的版本,3.5

1 个答案:

答案 0 :(得分:0)

与CSP接口相比,PKCS#11接口更优越,例如,CSP接口不支持对称密钥的持久性。有some improvements in .NET 4.6.2 cryptography classes但它们都与CNG有关。

我的建议:如果你需要RSA以外的任何东西,请使用PKCS#11。