OpenSSL против Windows Capi - PullRequest
       41

OpenSSL против Windows Capi

6 голосов
/ 12 марта 2010

Что лучше использовать openssl или windows capi для проблем с шифрованием, каковы списки за и против для обоих. и если это возможно, написать мою программу шифрования на openssl и расшифровать ее с Windows Capi без проблем, или есть некоторые проблемы с этим.

1 Ответ

9 голосов
/ 12 марта 2010

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

CryptoAPI предлагает API для доступа к ключам, которые хранятся в произвольных местах, через драйвер («CSP»), зарегистрированный в операционной системе. OpenSSL может предложить нечто подобное с помощью OpenSC , но драйвер должен затем поддерживать API PKCS # 11. В любом случае драйвер - это своего рода DLL, предоставляемая тем, кто создал устройство хранения (при условии, что ключ хранится и используется на аппаратном устройстве).

Если вы хотите иметь возможность использовать ключи, хранящиеся на аппаратных устройствах (где устройство может быть смарт-картой, HSM, ... всем, что может сделать некоторую криптографию, но не отдает сам ключ), тогда у вас будет пройти либо CryptoAPI или PKCS # 11. CryptoAPI по своей природе предназначен только для Windows, поэтому PKCS # 11 - это то, что нужно, если вы хотите, чтобы ваш код потенциально выполнялся в системах, отличных от Windows (MacOS, Linux, Solaris ...). Если вы идете по пути PKCS # 11, вы можете попробовать NSS вместо OpenSSL. NSS - это библиотека, используемая в браузере, производном от Netscape (например, Firefox). Это с открытым исходным кодом.

С другой стороны, если вы ориентируетесь только на системы Windows, CryptoAPI облегчает распространение, так как он уже существует, и нет необходимости в дополнительной DLL.

Если вы готовы отказаться от аппаратного обеспечения и хотите использовать только программную криптографию с ключами, хранящимися в ОЗУ, то вам, вероятно, не захочется использовать CryptoAPI, который обладает недостаточным количеством реализованных алгоритмов и вариантов. он принимает (например, CryptoAPI настаивает на том, чтобы открытые показатели RSA были меньше 32 бит - это нормальный случай, но ограничение все еще произвольно и потенциально утомительно). Есть много криптографических библиотек там; Помимо OpenSSL и NSS, вы, возможно, захотите исследовать Crypto ++ , который является достаточно зрелым и предположительно C ++ - дружественным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...