4

.NET 是否检测并使用硬件加密加速器进行加密操作(检测 GPU 并将其用于图形操作的方式)?

如果没有,您建议使用什么托管库?

4

3 回答 3

5

.NET 相当大。

在 Microsoft .NET 中,在 Windows 下,您会发现名为:

  • *Managed,例如SHA1Managed完全托管的实现。它们不会有任何硬件加速;

  • *CryptoServiceProvider,例如SHA1CryptoServiceManager将使用 CryptoAPI(本机)代码。如果本机 CSP 具有硬件加速功能,那么您将得到它。

  • 在较新的框架版本上,*CNG下一代密码学)。这是 CryptoAPI 的替代品——同样的规则适用(如果本机代码可以使用硬件加速,你会得到它)。

在 Mono 中,所有平台都默认拥有完全托管的实现(无论类型的名称如何) 。

现在,在(MS 和 Mono)这两种情况下,您也可以使用自己的(或第三方)实现。CryptoConfig.CreateFrom当您使用(直接或间接,例如SHA1.Create)并且您的machine.config文件包含对替代实现的引用时,这甚至可以对您的应用程序完全透明。这允许您(或其他任何人)用另一个(包括硬件加速)实现添加(或替换)任何实现。

注意:框架的 4.0 版使用新AddAlgorithm方法使这变得更加容易。

于 2012-02-13T13:39:21.433 回答
2

这取决于。一些 HSM(硬件安全模块)带有额外的CAPI和/或CNG提供程序实现。它们通常都带有 PKCS#11 驱动程序(基于 C)。

现代硬件将用他们的自定义实现替换您的默认 CNG 提供程序,实际上会产生您要求的那种自动检测。

对于不支持此功能的 HSM,您必须手动注册提供程序,或者在最坏的情况下,如果没有提供自定义提供程序,您将不得不手动连接到 PKCS#11 或使用类似的东西

于 2012-02-13T13:46:59.063 回答
1

一些硬件供应商设法用他们自己的替换默认的 SChannel 和其他供应商。如果他们这样做,那么 .NET 将使用替代品而不是库存提供者。但是没有办法自动检测和使用加密硬件。

大多数加速器都可以通过 PKCS#11 接口使用。通常,您可以使用我们的 SecureBlackbox,它将通过 PKCS#11 使用此类加速器,但您必须“手动”指定要调用的 PKCS#11 DLL(无法进行自动检测,因为此类 DLL 未在系统中注册)。

于 2012-02-13T13:38:56.420 回答