Высокопроизводительная реализация RSA для C# или C

У меня есть веб-сервис, который выполняет множество операций с RSA-подписью. Я использую CryptograhyProvider из .net. При этом используется неуправляемый CyptoAPI из Windows.

У меня часто возникает эта ошибка:

System.Security.Cryptography.CryptographicException: Der RPC-Server ist für diesen Vorgang zu ausgelastet. [=Сервер rpc слишком занят для завершения транзакции]

в System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr) в System.Security.Cryptography.Utils._ImportKey(SafeProvHandle hCSP, Int32 keyNumber, CspProviderFlags flags, Object cspObject, SafeKeyHandle& hKey) в System.Security.Cryptography.RSACryptoParametersProvider.ImporttoServiceProvider. (параметры RSAParameters)

Вместо того, чтобы пытаться исправить это, я предпочел бы заменить свою операцию подписи RSA на DLLImport на высокопроизводительную реализацию RSA C.

Может кто знает или может порекомендовать?

OpenSSL быстрее, чем MS CryptoApi? Я также подозреваю, что загрузка ключа может привести к серьезным накладным расходам.

Спасибо!


person Christian    schedule 20.07.2010    source источник
comment
Для меня это звучит как преждевременная оптимизация. Если вы считаете, что вам нужна более высокая производительность, вы должны сначала измерить производительность существующей реализации RSA. Затем определите производительность, которая вам нужна. Вы вряд ли найдете программную реализацию RSA, которая даже в 2 раза лучше, чем у MS.   -  person President James K. Polk    schedule 20.07.2010
comment
Аппаратное обеспечение здесь тоже имеет значение. Модули криптоускорения — это хорошо (хотя, если вы только что-то подписываете, ГСЧ в них не будут иметь значения). Компиляция вашей криптобиблиотеки с некоторыми флагами оптимизации, установленными для вашего целевого процессора, также будет иметь значение.   -  person nmichaels    schedule 20.07.2010


Ответы (3)


Я бы порекомендовал OpenSSL, но я не знаю сравнения с MS CryptoAPI. Он прост в использовании, обширна документация и примеры исходного кода.

Ознакомьтесь с подробным описанием API здесь.

person Praveen S    schedule 20.07.2010

Вы также можете рассмотреть возможность использования NSS. Этому 2 года, но его все еще стоит прочитать.

person nmichaels    schedule 20.07.2010
comment
Спасибо! Но, к сожалению, они тестируют только симметричные алгоритмы, а не RSA. - person Christian; 20.07.2010

http://www.cryptopp.com/ может быть хорошей библиотекой.

Он использовался в этом тесте скорости: http://www.cryptopp.com/benchmarks.html

К сожалению, сравнения с OpenSSL нет.

person Christian    schedule 20.07.2010