Криптографический ускоритель и .NET - PullRequest
4 голосов
/ 13 февраля 2012

Обнаруживает ли .NET и использует ли аппаратный криптографический ускоритель для своих операций криптографии (то, как он обнаруживает графический процессор и использует его для графических операций)?

Если нет, какую управляемую библиотеку вы предлагаете?

Ответы [ 3 ]

5 голосов
/ 13 февраля 2012

.NET довольно большой.

В Microsoft .NET под Windows вы найдете типы с именем:

  • *Managed, например, SHA1Managed это полностью управляемые реализации. На не будет аппаратного ускорения,

  • *CryptoServiceProvider, например, SHA1CryptoServiceManager, который будет использовать CryptoAPI (нативный) код. Если нативный CSP имеет аппаратное ускорение, вы его получите.

  • в новых версиях фреймворков, *CNG ( Криптография следующего поколения ). Это замена CryptoAPI - применяются те же правила (если нативный код может использовать аппаратное ускорение, вы его получите).

В Mono на всех платформах вы будете иметь полностью управляемые реализации (независимо от имени типа) по по умолчанию .

Теперь в обоих случаях (MS и Mono) вы также можете использовать собственную (или стороннюю) реализацию. Это может быть даже полностью прозрачно для вашего приложения, когда вы используете CryptoConfig.CreateFrom (прямо или косвенно, например, SHA1.Create), а ваш файл machine.config содержит ссылку на альтернативную реализацию. Это позволяет вам (или кому-либо еще) добавлять (или заменять) любую реализацию другой (включая аппаратно ускоренную) реализацию.

Примечание: версия 4.0 фреймворка делает это еще проще с помощью нового метода AddAlgorithm.

2 голосов
/ 13 февраля 2012

Это зависит. Некоторые HSM (аппаратный модуль безопасности) поставляются с дополнительными реализациями поставщика для CAPI и / или CNG . Все они обычно поставляются с драйвером PKCS # 11 (на основе C).

Современное оборудование заменит ваших поставщиков СПГ по умолчанию их индивидуальной реализацией, что практически приведет к тому типу автоматического обнаружения, о котором вы просили.

Для HSM, которые не поддерживают это, вам нужно будет либо зарегистрировать провайдеров вручную, либо, в худшем случае, если пользовательский провайдер не предлагается, вам придется вручную подключиться к PKCS # 11 или использовать что-то вроде * 1009. * это .

1 голос
/ 13 февраля 2012

Некоторым поставщикам оборудования удается заменить SChannel по умолчанию и других поставщиков своими собственными. Если они это сделают, тогда .NET будет использовать замены вместо поставщиков акций. Но нет способа автоматически обнаруживать и использовать криптографическое оборудование.

Большинство ускорителей можно использовать через интерфейс PKCS # 11. В общем, вы можете использовать наш SecureBlackbox, который будет использовать такие ускорители через PKCS # 11, но вам придется «вручную» указывать DLL-библиотеку PKCS # 11 для вызова (автоопределение невозможно, так как такие DLL не зарегистрированы в системе).

...