Welches ist besser zu verwenden OpenSSL oder Windows Capi für Encryption Probleme, was ist die Pro-und Con-Liste für beide. und wenn es möglich ist, mein Verschlüsslerprogramm auf openssl zu schreiben und es mit Windows capi ohne Probleme zu entschlüsseln oder es gibt ein Problem damit.openssl versus windows capi
Antwort
Für kryptografische Zwecke finde ich es einfacher, zuerst über die Schlüsselverwaltung nachzudenken. Wo Schlüssel gespeichert werden, wie sie erstellt werden, wer sie benutzt und wie sie sicher vernichtet werden. Meiner Erfahrung nach ist die Schlüsselverwaltung das, was die Anwendungsstruktur am meisten einschränkt.
CryptoAPI bietet eine API für den Zugriff auf Schlüssel, die über einen im Betriebssystem registrierten Treiber ("CSP") an beliebigen Stellen gespeichert werden. OpenSSL kann mit Hilfe von OpenSC etwas ähnliches anbieten, aber der Treiber sollte dann die PKCS # 11 API unterstützen. In jedem Fall ist der Treiber eine Art von DLL, die von demjenigen bereitgestellt wird, der das Speichergerät erstellt hat (unter der Annahme, dass der Schlüssel in einem Hardwaregerät gespeichert und verwendet wird).
Wenn Sie Schlüssel in Hardware-Geräten (wo das Gerät möglicherweise eine Smartcard, ein HSM, ... alles, was einige Krypto tun können, aber den Schlüssel selbst verweigern kann) verwenden wollen, dann werden Sie müssen entweder CryptoAPI oder PKCS # 11 durchlaufen. CryptoAPI ist von Natur aus nur Windows, daher ist PKCS # 11 der richtige Weg, wenn Sie möchten, dass Ihr Code möglicherweise auf Nicht-Windows-Systemen (MacOS, Linux, Solaris ...) ausgeführt wird. Wenn Sie den PKCS # 11-Weg gehen, können Sie versuchen, NSS anstelle von OpenSSL zu versuchen. NSS ist die Bibliothek, die in dem von Netscape abgeleiteten Browser (z. B. Firefox) verwendet wird. Es ist Open-Source.
Auf der anderen Seite, wenn Sie nur Windows-Systeme zielen, erleichtert CryptoAPI Verteilung, da es bereits da ist, keine Notwendigkeit für eine zusätzliche DLL.
Wenn Sie bereit sind, Hardware zu verlieren, und wollen nur Software-only-Kryptografie mit Schlüsseln im RAM, dann werden Sie wahrscheinlich nicht CryptoAPI verwenden wollen, die in der Anzahl der implementierten Algorithmen und die Variationen, die es akzeptiert (zB CryptoAPI besteht darauf, dass RSA Public Exponenten kleiner als 32 Bits sind - das ist der Normalfall, aber die Begrenzung ist immer noch willkürlich und möglicherweise lästig). Es gibt viele kryptographische Bibliotheken da draußen; abgesehen von OpenSSL und NSS, möchten Sie möglicherweise Crypto++ untersuchen, die ziemlich ausgereift und angeblich C++ - freundlich ist.
[Ich habe gekämpft] (http://StackOverflow.com/q/43802185/267874), um OpenSSL auf Windows mit einem HSM seit Wochen arbeiten zu lassen, und ich muss sagen, Ihre eine einfache Antwort hier räumte das ganze auf Bild für mich! Du, mein Freund, weißt wirklich, wie man klare und relevante Informationen zur Verfügung stellt. Vielen Dank! Ich gehe jetzt los und versuche den PKCS # 11 Weg, möglicherweise plattformübergreifend jetzt! –