2010-03-12 16 views
6

Które lepiej użyć openssl lub windows capi do problemów z ecnryption, co jest listą pro i con dla obu. i jeśli to możliwe, aby napisać mój program szyfrujący na openssl i odszyfrować go z windows capi bez problemu lub jest jakiś problem z tym.openssl versus windows capi

Odpowiedz

9

W celach kryptograficznych łatwiej jest najpierw przemyśleć kluczowe zarządzanie. Gdzie klucze są przechowywane, w jaki sposób są tworzone, kto je używa i w jaki sposób są bezpiecznie niszczone. Z mojego doświadczenia wynika, że ​​kluczowe zarządzanie ogranicza strukturę aplikacji.

CryptoAPI oferuje interfejs API do uzyskiwania dostępu do kluczy przechowywanych w dowolnych miejscach za pośrednictwem sterownika ("CSP") zarejestrowanego w systemie operacyjnym. OpenSSL może oferować coś podobnego przy pomocy OpenSC, ale sterownik powinien następnie obsługiwać API PKCS # 11. Tak czy inaczej, sterownik jest jakimś DLL dostarczonym przez każdego, kto zbudował urządzenie pamięci masowej (zakładając, że klucz jest przechowywany i używany w urządzeniu sprzętowym).

Jeśli chcesz mieć możliwość używania kluczy przechowywanych na urządzeniach sprzętowych (gdzie urządzeniem może być karta inteligentna, HSM, ... wszystko, co może zrobić kryptografię, ale odmówi podania klucza), muszą przejść przez CryptoAPI lub PKCS # 11. CryptoAPI jest z natury tylko systemem Windows, więc PKCS # 11 jest sposobem, aby kod mógł zostać uruchomiony na systemach innych niż Windows (MacOS, Linux, Solaris ...). Jeśli wybierzesz metodę PKCS # 11, możesz zamiast tego wypróbować numer NSS zamiast OpenSSL. NSS jest biblioteką używaną w przeglądarce opartej na Netscape (np. Firefox). To jest open-source.

Z drugiej strony, jeśli kierujesz tylko do systemów Windows, CryptoAPI ułatwia dystrybucję, ponieważ już istnieje, nie ma potrzeby dodatkowej biblioteki DLL.

Jeśli jesteś gotów na utratę sprzętu i chcesz użyć kryptografii tylko programowej, z kluczami przechowywanymi w pamięci RAM, prawdopodobnie nie będziesz chciał używać CryptoAPI, który jest dość słabo wykorzystywany w liczbie algorytmów, które implementuje, i warianty, które akceptuje (np. CryptoAPI nalega, aby publiczne wykładniki RSA były mniejsze niż 32 bity - jest to normalne, ale ograniczenie jest nadal arbitralne i potencjalnie uciążliwe). Istnieje wiele bibliotek kryptograficznych; oprócz OpenSSL i NSS, możesz chcieć sprawdzić Crypto++, co jest dość dojrzałe i podobno przyjazne dla C++.

+1

[Byłem zmagający się] (http://stackoverflow.com/q/43802185/267874) aby OpenSSL na Windows działał z HSM już od tygodni i muszę powiedzieć, że twoja prosta odpowiedź wyjaśniła cały obraz dla mnie! Jesteś moim przyjacielem, naprawdę wiesz, jak zapewnić jasne i istotne informacje. Dziękuję Ci! Off Idę teraz, próbując drogi PKCS # 11, być może teraz na różnych platformach! –