2010-03-12 5 views
6

Quelle est préférable d'utiliser openssl ou windows capi pour les problèmes d'ecnryption? Quelles sont les listes pro et con pour les deux. et s'il est possible d'écrire mon programme de chiffrement sur openssl et le décrypter avec Windows capi sans problème ou il y a un problème avec cela.openssl versus windows capi

Répondre

9

À des fins de cryptographie, je trouve d'abord plus facile de penser à la gestion des clés. Où les clés sont stockées, comment elles sont créées, qui les utilise, et comment elles doivent être détruites en toute sécurité. Dans mon expérience, la gestion des clés est ce qui contraint le plus la structure de l'application. CryptoAPI offre une API pour accéder aux clés qui sont stockées dans des endroits arbitraires, grâce à un pilote (un «CSP») enregistré dans le système d'exploitation. OpenSSL peut offrir quelque chose de similaire avec l'aide de OpenSC, mais le pilote doit alors prendre en charge l'API PKCS # 11. De toute façon, le pilote est une sorte de DLL fournie par celui qui a construit le périphérique de stockage (en supposant que la clé est stockée et utilisée dans un périphérique matériel). Si vous voulez pouvoir utiliser des clés stockées dans des périphériques matériels (où l'appareil peut être une carte à puce, un HSM, ... tout ce qui peut faire du cryptage mais refusera de donner la clé elle-même) alors vous doivent passer par CryptoAPI ou PKCS # 11. CryptoAPI est, par nature, uniquement pour Windows, donc PKCS # 11 est le chemin à parcourir si vous voulez que votre code fonctionne potentiellement sur des systèmes non-Windows (MacOS, Linux, Solaris ...). Si vous utilisez la méthode PKCS # 11, vous pouvez essayer NSS au lieu d'OpenSSL. NSS est la bibliothèque utilisée dans le navigateur dérivé de Netscape (par exemple Firefox). C'est open-source. D'autre part, si vous ne ciblez que les systèmes Windows, alors CryptoAPI facilite la distribution, puisqu'il est déjà là, pas besoin d'une DLL supplémentaire. Si vous êtes prêt à confisquer le matériel, et que vous voulez utiliser la cryptographie logicielle uniquement, avec des clés en RAM, vous ne voudrez probablement pas utiliser CryptoAPI, qui est assez peu puissant dans le nombre d'algorithmes qu'il implémente et le les variations acceptées (par exemple, CryptoAPI insiste pour que les exposants publics RSA soient plus petits que 32 bits - c'est le cas normal, mais la limitation est toujours arbitraire et potentiellement ennuyeuse). Il y a beaucoup de bibliothèques cryptographiques là-bas; En dehors de OpenSSL et NSS, vous pourriez vouloir enquêter sur Crypto++, qui est assez mature et supposément compatible avec C++.

+1

[J'ai lutté] (http://stackoverflow.com/q/43802185/267874) pour faire fonctionner OpenSSL sous Windows avec un HSM depuis des semaines maintenant et je dois dire, votre réponse simple ici a effacé l'ensemble photo pour moi! Vous mon ami, sais vraiment comment fournir des informations claires et pertinentes. Je vous remercie! Off je vais maintenant, en essayant la voie PKCS # 11, peut-être multi-plateforme maintenant! –