.NET是否会检测并使用硬件加密加速器进行加密操作(就像它检测GPU并将其用于图形操作一样)?
如果不是,你有什么建议的托管库?
发布于 2012-02-13 21:39:21
.NET相当大。
在微软的.NET中,在Windows下,你可以找到名为:
完全托管实现的
*Managed,,例如SHA1Managed。在them;*CryptoServiceProvider,上不会有任何硬件加速,例如使用CryptoAPI (原生)代码的SHA1CryptoServiceManager。如果原生CSP有硬件加速,那么你会得到它。*CNG (Cryptography Next Generation)。这是CryptoAPI的替代品-同样的规则适用(如果原生代码可以使用硬件加速,您将获得它)。在所有平台的Mono中,默认情况下您将拥有完全托管的实现(无论类型的名称是什么)。
现在,在这两种情况下(MS和Mono),您也可以使用自己的(或第三方)实现。当您使用CryptoConfig.CreateFrom (直接或间接,例如SHA1.Create)并且您的machine.config文件包含对替代实现的引用时,这甚至对您的应用程序是完全透明的。这允许您(或其他任何人)添加(或替换)任何实现为另一个(包括硬件加速的)实现。
注意:该框架的4.0版通过新的AddAlgorithm方法使这一点变得更加容易。
发布于 2012-02-13 21:46:59
那得看情况。一些HSM(硬件安全模块)附带了针对CAPI和/或CNG的额外提供程序实现。它们通常都带有一个PKCS#11驱动程序(基于C语言)。
现代硬件将用它们的自定义实现替换您的默认CNG提供商,实际上导致了您所要求的那种自动检测。
对于不支持此功能的HSM,您要么必须手动注册提供程序,要么在最坏的情况下,如果没有提供自定义提供程序,您将不得不手动连接到PKCS#11或使用类似this的东西。
发布于 2012-02-13 21:38:56
一些硬件供应商设法将默认的SChannel和其他供应商替换为自己的供应商。如果他们这样做了,那么.NET将使用替代产品,而不是股票供应商。但是没有办法自动检测和使用加密硬件。
大多数加速器都可以通过PKCS#11接口使用。通常,您可以使用我们的SecureBlackbox,它将通过PKCS#11使用此类加速器,但您必须“手动”指定要调用的PKCS#11动态链接库(不可能进行自动检测,因为此类DLL未在系统中注册)。
https://stackoverflow.com/questions/9258472
复制相似问题