Porównanie bibliotek kryptograficznych

Poniższe tabele porównują biblioteki kryptograficzne , które zajmują się algorytmami kryptograficznymi i mają wywołania funkcji API dla każdej z obsługiwanych funkcji.

Biblioteki kryptograficzne

Nazwa wdrożenia Inicjatywa Główny język implementacji Oprogramowanie open source Licencja oprogramowania Najnowsze wydanie
botan Jacka Lloyda C++ Tak Uproszczony BSD 2.19.3 (16 listopada 2022 ; 3 miesiące temu ( 16.11.2022 ) )
Dmuchany zamek Legion dmuchanego zamku Inc. Java, C# Tak Licencja MIT
Jawa 1.72 / 25 września 2022 ; 4 miesiące temu ( 2022-09-25 )
FIPS Javy BC-FJA 1.0.2.3 / 9 lutego 2022 r. ; 12 miesięcy temu ( 2022-02-09 )
C# 2.1.1 / 18 lutego 2023 r. ; 4 dni temu ( 2023-02-18 )
C# FIPS BC-FNA 1.0.1.1 / 21 kwietnia 2021 ; 22 miesiące temu ( 21.04.2021 )
BEZPIECZNY Dell , dawniej RSA Security Java, C, montaż NIE Prawnie zastrzeżony Crypto-C Micro Edition : 4.1.5 (17 grudnia 2020 r. ; 2 lata temu ( 17.12.2020 ) )



Pakiet Micro Edition : 5.0 (13 października 2022 ; 4 miesiące temu ( 13.10.2022 ) ) Crypto-J : 7.0 (7 września 2022 ; 5 miesięcy temu ( 07.09.2022 ) )

6.2.6.2 (7 listopada 2022 ; 3 miesiące temu ( 07.11.2022 ) )

kryptlib Piotra Gutmanna C Tak Licencja Sleepycat lub licencja komercyjna 3,4,5 (2019 ; 4 lata temu ( 2019 ) )
Crypto++ Projekt Crypto++ C++ Tak Licencja na oprogramowanie Boost (wszystkie pojedyncze pliki są w domenie publicznej ) 7 sierpnia 2022 (8.7.0)
GnuTLS Nikos Mavrogiannopoulos, Simon Josefsson C Tak LGPL-2.1-lub nowszy Edit this on Wikidata 3.6.16 2021-05-24
Domyślni dostawcy JCA / JCE Wyrocznia Jawa Tak GNU GPL v2 i licencja komercyjna 19.0.2 (18 lutego 2023 ; 4 dni temu ( 18.02.2023 ) )



17.0.6 LTS (18 lutego 2023 ; 4 dni temu ( 18.02.2023 ) ) 11.0.17 LTS (18 października 2022 ; 18.10.2022 ) 4 miesiące temu ( ) 8u351 LTS (18 października 2022 ; 4 miesiące temu ( 18.10.2022 ) )

LibreSSL Fundacji OpenBSD C Tak Apache-1.0 Edit this on Wikidata 3.6.2 2023-02-06
Libgcrypt GnuPG i g10code C Tak GNU LGPL v2.1+
stabilny 1.10.1 / 28 marca 2022 ; 10 miesięcy temu ( 2022-03-28 )
LTS 1.8.10 / 5 stycznia 2023 ; 48 dni temu ( 05.01.2023 )


libsod Franka Denisa C Tak Licencja ISC 30 maja 2019 (1.0.18)
Mbed TLS Arm Limited C Tak Licencja Apache 2.0 3.0.0 (7 lipca 2021 ; 19 miesięcy temu ( 07.07.2021 ) )


2.27.0 (7 lipca 2021 ; 19 miesięcy temu ( 7.07.2021 ) ) 2.16.11 (7 lipca 2021 ; 19 miesięcy temu ( 7.07.2021 ) )

NaCl Daniel J. Bernstein , Tanja Lange , Peter Schwabe C Tak Domena publiczna 21 lutego 2011 r
Pokrzywa C Tak GNU GPL v2+ lub GNU LGPL v3 3.5.1 (27 czerwca 2019 ; 3 lata temu ( 27.06.2019 ) )
Usługi bezpieczeństwa sieci (NSS) Mozilla C Tak MPL 2.0
Standard 3.84 / 12 października 2022 ; 4 miesiące temu ( 2022-10-12 )
Rozszerzona wersja pomocy technicznej 3.79.1 / 18 sierpnia 2022 ; 6 miesięcy temu ( 2022-08-18 )
OpenSSL Projekt OpenSSL C Tak Apache-2.0 Edit this on Wikidata 3.0.8 2023-02-07
wilkCrypt WolfSSL, Inc. C Tak GNU GPL v2 lub licencja komercyjna 5.5.4 (21 grudnia 2022 ; 2 miesiące temu ( 21.12.2022 ) )

FIPS 140

Ta tabela wskazuje, czy biblioteka kryptograficzna spełnia wymagania techniczne dla FIPS 140 i status jej certyfikacji FIPS 140 (zgodnie z wyszukiwaniem CMVP NIST , moduły na liście procesów i implementacja na liście testów ).

Realizacja Tryb FIPS 140-2 Zweryfikowano FIPS 140-2 Zweryfikowano FIPS 140-3
botan NIE NIE NIE
Dmuchany zamek Tak Tak NIE
BEZPIECZNY Tak Tak W trakcie
kryptlib Tak NIE NIE
Crypto++ NIE NIE NIE
GnuTLS NIE Tak W trakcie
Domyślni dostawcy JCA / JCE NIE NIE NIE
Libgcrypt Tak Tak W trakcie
libsod NIE NIE NIE
Mbed TLS NIE NIE NIE
NaCl NIE NIE NIE
Pokrzywa NIE NIE NIE
Usługi bezpieczeństwa sieci (NSS) Tak Tak W trakcie
OpenSSL Tak Tak W trakcie
wilkCrypt Tak Tak W trakcie

Kluczowe operacje

Kluczowe operacje obejmują algorytmy generowania kluczy, umowy wymiany kluczy i standardy kryptograficzne klucza publicznego.

Algorytmy klucza publicznego

Realizacja RSA DSA ECDSA EdDSA Ed448 DH ECDH ECIES El Gamal
NTRU ( IEEE P1363.1 )
DSS
botan Tak Tak Tak Tak
Tak Tak Tak Tak NIE Tak
Dmuchany zamek Tak Tak Tak Tak
Tak Tak Tak Tak Tak Tak
BEZPIECZNY Tak Tak Tak NIE NIE Tak Tak Tak NIE NIE NIE
kryptlib Tak Tak Tak NIE NIE Tak Tak NIE Tak NIE Tak
Crypto++ Tak Tak Tak NIE NIE Tak Tak Tak Tak NIE Tak
GnuTLS Tak
Domyślni dostawcy JCA / JCE Tak Tak Tak Tak Tak Tak Tak NIE NIE NIE Tak
Libgcrypt Tak Tak Tak Tak Tak Tak Tak NIE Tak NIE Tak
libsod NIE NIE NIE Tak
NIE NIE NIE NIE NIE NIE
Mbed TLS Tak Tak Tak NIE
Tak Tak NIE NIE NIE NIE
Pokrzywa Tak Tak NIE Tak
NIE NIE NIE NIE NIE NIE
OpenSSL Tak Tak Tak Tak Tak Tak Tak NIE NIE NIE NIE
wilkCrypt Tak Tak Tak Tak Tak Tak Tak Tak NIE Tak Tak

Obsługa kryptografii krzywych eliptycznych (ECC).

Realizacja NIST SECG ECC Brainpool Krzywa25519 Krzywa448 GOST R 34.10 SM2
botan Tak Tak Tak Tak
Tak
Dmuchany zamek Tak Tak Tak Tak
Tak
BEZPIECZNY Tak Tak NIE NIE NIE NIE NIE
kryptlib Tak Tak Tak NIE NIE NIE NIE
Crypto++ Tak Tak Tak Tak
NIE
GnuTLS Tak
Domyślni dostawcy JCA / JCE Tak Tak NIE Tak Tak NIE NIE
Libgcrypt Tak Tak Tak Tak Tak Tak Tak
libsod Tak NIE NIE Tak Tak NIE NIE
Mbed TLS Tak Tak Tak Tak
NIE
Pokrzywa Tak Częściowy NIE Tak
NIE
OpenSSL Tak Tak Tak Tak Tak Tak
wilkCrypt Tak Tak Tak Tak Tak NIE NIE

Standardy kryptografii klucza publicznego

Realizacja PKCS nr 1 PKCS #5 / PBKDF2 PKCS nr 8 PKCS nr 12 IEEE P1363 ASN.1
botan Tak Tak Tak NIE Tak Tak
Dmuchany zamek Tak Tak Tak Tak Tak Tak
BSAFE Crypto-J Tak Tak Tak Tak NIE Tak
kryptlib Tak Tak Tak Tak NIE Tak
Crypto++ Tak Tak Tak NIE Tak Tak
Domyślni dostawcy JCA / JCE Tak Tak Tak Tak Tak Tak
Libgcrypt Tak Tak Tak Tak Tak Tak
libsod NIE NIE NIE NIE NIE NIE
Mbed TLS Tak NIE Tak Tak NIE Tak
Pokrzywa Tak Tak NIE NIE NIE NIE
OpenSSL Tak Tak Tak Tak NIE Tak
wilkCrypt Tak Tak Tak Tak NIE Tak

Funkcje skrótu

Porównanie obsługiwanych kryptograficznych funkcji skrótu . Tutaj funkcje skrótu są zdefiniowane jako pobieranie wiadomości o dowolnej długości i generowanie danych wyjściowych o stałym rozmiarze, których użycie do odtworzenia oryginalnej wiadomości jest praktycznie niemożliwe.

Realizacja MD5 SHA-1 SHA-2 SHA-3 RIPEMD-160 Tygrys Wir BLAKE2
GOST R 34.11-94 (inaczej GOST 34.311-95 )

GOST R 34.11-2012 (Stribog)
SM3
botan Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak
Dmuchany zamek Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak
BSAFE Crypto-J Tak Tak Tak Tak Tak NIE NIE NIE NIE NIE NIE
kryptlib Tak Tak Tak Tak Tak NIE Tak NIE NIE NIE
Crypto++ Tak Tak Tak Tak Tak Tak Tak Tak Tak NIE
Domyślni dostawcy JCA / JCE Tak Tak Tak Tak NIE NIE NIE NIE NIE NIE NIE
Libgcrypt Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak
libsod NIE NIE Tak NIE NIE NIE NIE Tak NIE NIE NIE
Mbed TLS Tak Tak Tak Tak Tak NIE NIE NIE NIE NIE
Pokrzywa Tak Tak Tak Tak Tak NIE NIE NIE Tak NIE
OpenSSL Tak Tak Tak Tak Tak Tak Tak Tak Tak NIE
wilkCrypt Tak Tak Tak Tak Tak NIE NIE Tak NIE NIE

Algorytmy MACa

Porównanie implementacji algorytmów kodów uwierzytelniania wiadomości (MAC). MAC to krótka informacja używana do uwierzytelnienia wiadomości — innymi słowy do potwierdzenia, że ​​wiadomość pochodzi od określonego nadawcy (jej autentyczność) i nie została zmieniona podczas przesyłania (jej integralność).

Realizacja HMAC - MD5 HMAC- SHA1 HMAC- SHA2 poli1305 BLAKE2-MAC
botan Tak Tak Tak Tak Tak
Dmuchany zamek Tak Tak Tak Tak Tak
BSAFE Crypto-J Tak Tak Tak Tak NIE
kryptlib Tak Tak Tak NIE NIE
Crypto++ Tak Tak Tak Tak Tak
Domyślni dostawcy JCA / JCE Tak Tak Tak NIE NIE
Libgcrypt Tak Tak Tak Tak Tak
libsod NIE NIE Tak Tak Tak
Mbed TLS Tak Tak Tak NIE NIE
Pokrzywa Tak Tak Tak Tak NIE
OpenSSL Tak Tak Tak Tak Tak
wilkCrypt Tak Tak Tak Tak Tak

Szyfry blokowe

Tabela porównuje implementacje szyfrów blokowych. Szyfry blokowe są definiowane jako deterministyczne i działające na określonej liczbie bitów (nazywanej blokiem) przy użyciu klucza symetrycznego. Każdy szyfr blokowy można podzielić na możliwe rozmiary kluczy i tryby szyfrowania blokowego, z którymi można go uruchomić.

Algorytmy szyfrowania blokowego

Realizacja AES 3DES Kamelia Rozdymka Dwie ryby POMYSŁ CAST5 ARIA

GOST 28147-89 / GOST R 34.12-2015 (Magma i Kuznyechik)
SM4
botan Tak Tak Tak Tak Tak Tak Tak Tak Tak
Dmuchany zamek Tak Tak Tak Tak Tak Tak Tak Tak Tak
BSAFE Crypto-J Tak Tak NIE NIE NIE NIE NIE NIE NIE NIE
kryptlib Tak Tak NIE Tak
Tak Tak
Crypto++ Tak Tak Tak Tak Tak Tak Tak Tak Częściowy
GnuTLS Tak
Tak
Domyślni dostawcy JCA / JCE Tak Tak NIE Tak NIE NIE NIE NIE NIE NIE
Libgcrypt Tak Tak Tak Tak Tak Tak Tak NIE Tak Tak
libsod Częściowy NIE NIE NIE NIE NIE NIE NIE NIE NIE
Mbed TLS Tak Tak Tak Tak NIE NIE NIE NIE NIE
Pokrzywa Tak Tak Tak Tak
OpenSSL Tak Tak Tak Tak NIE Tak Tak Tak Tak
wilkCrypt Tak Tak Tak NIE NIE Tak NIE NIE NIE

Tryby szyfrowania

Realizacja EBC CBC OFB CFB CTR CCM GCM OCB XTS Zawijanie AES Strumień EAX
botan NIE Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak
Dmuchany zamek Tak Tak Tak Tak Tak Tak Tak Tak
Tak Tak
BEZPIECZNY Tak Tak Tak Tak Tak Tak Tak NIE Tak Tak Tak NIE
kryptlib Tak Tak Tak Tak
NIE Tak
Crypto++ Tak Tak Tak Tak Tak Tak Tak NIE NIE NIE Tak
Domyślni dostawcy JCA / JCE Tak Tak Tak Tak Tak NIE Tak NIE NIE Tak Tak NIE
Libgcrypt Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak
libsod NIE NIE NIE NIE Tak NIE Tak NIE NIE NIE NIE NIE
Mbed TLS Tak Tak NIE Tak Tak Tak Tak NIE NIE NIE NIE
Pokrzywa Tak Tak NIE NIE Tak Tak Tak NIE NIE NIE NIE NIE
OpenSSL Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak
wilkCrypt Tak Tak Tak Tak Tak Tak Tak NIE Tak Tak Tak

Szyfry strumieniowe

Poniższa tabela przedstawia obsługę różnych szyfrów strumieniowych . Szyfry strumieniowe są zdefiniowane jako używające cyfr zwykłego tekstu, które są połączone ze strumieniem cyfr szyfru pseudolosowego. Szyfry strumieniowe są zwykle szybsze niż szyfry blokowe i mogą mieć mniejszą złożoność sprzętową, ale mogą być bardziej podatne na ataki.

Realizacja RC4 HC-256 Królik Salsa20 ChaCha FOKA Panama BUDZIĆ Ziarno VMPC ISAAC
botan Tak NIE NIE Tak Tak NIE NIE NIE NIE NIE NIE
Dmuchany zamek Tak Tak NIE Tak Tak NIE NIE NIE Tak Tak Tak
BSAFE Crypto-J Tak NIE NIE NIE Tak NIE NIE NIE NIE NIE NIE
kryptlib Tak NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE
Crypto++ Tak Tak Tak Tak Tak Tak Tak Tak NIE NIE NIE
Domyślni dostawcy JCA / JCE Tak NIE NIE NIE Tak NIE NIE NIE NIE NIE NIE
Libgcrypt Tak NIE NIE Tak Tak NIE NIE NIE NIE NIE NIE
libsod NIE NIE NIE Tak Tak NIE NIE NIE NIE NIE NIE
Mbed TLS Tak NIE NIE NIE NIE NIE NIE NIE NIE NIE NIE
Pokrzywa Tak NIE NIE Tak Tak NIE NIE NIE NIE NIE NIE
OpenSSL Tak NIE NIE NIE Tak NIE NIE NIE NIE NIE NIE
wilkCrypt Tak Tak Tak Tak Tak NIE NIE NIE NIE NIE NIE

Wsparcie sprzętowe

Te tabele porównują możliwość korzystania z kryptografii wspomaganej sprzętowo. Korzystając z pomocy określonego sprzętu, biblioteka może osiągnąć większe prędkości i/lub lepsze bezpieczeństwo niż w innym przypadku.

Obsługa protokołów Smartcard , SIM i HSM

Realizacja PKCS nr 11 PC/SC CCID
botan Tak NIE NIE
Dmuchany zamek Tak NIE NIE
BEZPIECZNY Tak NIE NIE
kryptlib Tak NIE NIE
Crypto++ NIE NIE NIE
GnuTLS Tak NIE NIE
Domyślni dostawcy JCA / JCE Tak NIE NIE
Libgcrypt Tak Tak Tak
libsod NIE NIE NIE
Mbed TLS Tak NIE NIE
OpenSSL Tak NIE NIE
wilkCrypt Tak NIE NIE

Ogólne wsparcie akceleracji procesora /platformy

Realizacja AES-NI SSSE3 / SSE4.1 AVX / AVX2 AVX-512 RDRAND VIA kłódka Szybka pomoc Intela ARMv7-A NEON Instrukcje kryptograficzne ARMv8-A Power ISA v2.03 ( AltiVec ) Power ISA v2.07 (np. POWER8 i nowsze)
botan Tak Tak Tak
Tak NIE NIE Tak Tak Tak
BEZPIECZNY Tak Tak Tak
Tak NIE NIE NIE Tak NIE NIE
kryptlib Tak Tak Tak
Tak Tak NIE NIE NIE NIE NIE
Crypto++ Tak Tak Tak
Tak Tak NIE Tak Tak Tak
GnuTLS Tak
Tak
Domyślni dostawcy JCA / JCE Tak Tak Tak Tak Tak NIE NIE
Tak
Tak
Libgcrypt Tak Tak Tak Tak Tak Tak NIE Tak Tak NIE Tak
libsod Tak Tak Tak
NIE NIE NIE NIE NIE NIE NIE
OpenSSL Tak Tak Tak
Tak Tak NIE Tak Tak Tak
wilkCrypt Tak Tak Tak
Tak NIE Tak Tak Tak NIE NIE

Rozmiar kodu i stosunek kodu do komentarza

Realizacja Rozmiar kodu źródłowego

(kSLOC = 1000 linii kodu źródłowego)

Stosunek linii kodu do linii komentarza
botan 133 4,55
Dmuchany zamek 1359 5.26
BSAFE Crypto-J 271 1.3
kryptlib 241 2.66
Crypto++ 115 5.74
GnuTLS 363 7.30
Libgcrypt 216 6.27
libsod 44 21.92
Mbed TLS 105 33,9
Pokrzywa 111 4.08
OpenSSL 472 4.41
wilkCrypt 39 5,69

Ruchliwość

Realizacja Obsługiwany system operacyjny Bezpieczny wątek
botan Linux, Windows, macOS, Android, iOS, FreeBSD, NetBSD, OpenBSD, DragonflyBSD, AIX, QNX, Haiku, IncludeOS Tak
Dmuchany zamek Ogólne API Java: J2ME, Java Runtime Environment 1.1+, Android. Interfejs API Java FIPS: Java Runtime 1.5+, Android. C# API (ogólne i FIPS): CLR 4.
BSAFE Crypto-J Solaris, Linux, Android, FreeBSD, AIX, 32- i 64-bitowy Windows, macOS (Darwin) Tak
kryptlib AMX, ARINC 653, BeOS, ChorusOS, CMSIS-RTOS/mbed-rtos, DOS, DOS32, eCOS, embOS, FreeRTOS/OpenRTOS, uItron, MQX, MVS, Nucleus, OS/2, Palm OS, QNX Neutrino, RTEMS, SMX , Tandem NonStop, Telit, ThreadX, uC/OS II, Unix (AIX, FreeBSD, HP-UX, Linux, macOS, Solaris itp.), VDK, VM/CMS, VxWorks, Win16, Win32, Win64, WinCE/PocketPC /etc, XMK Tak
Crypto++ Unix (AIX, OpenBSD, Linux, MacOS, Solaris itp.), Win32, Win64, Android, iOS, ARM Tak
GnuTLS Działa na większości platform Unix i Windows ?
Libgcrypt Wszystkie 32- i 64-bitowe systemy Unix (Linux, FreeBSD, NetBSD, macOS itp.), Win32, Win64, WinCE i inne Tak
libsod macOS, Linux, OpenBSD, NetBSD, FreeBSD, DragonflyBSD, Android, iOS, 32- i 64-bitowy Windows (Visual Studio, MinGW, C++ Builder), NativeClient, QNX, JavaScript, AIX, MINIX, Solaris Tak
Mbed TLS Win32/64, systemy Unix, wbudowany Linux, µC/OS firmy Micrium, FreeRTOS ?
OpenSSL Solaris, IRIX, HP-UX, MPE/iX, Tru64, Linux, Android, BSD (OpenBSD, NetBSD, FreeBSD, DragonflyBSD), NextSTEP, QNX, UnixWare, SCO, AIX, 32- i 64-bitowy Windows (Visual Studio, MinGW , UWIN, CygWin), UEFI, macOS (Darwin), iOS, HURD, VxWorks, uClinux, VMS, DJGPP (DOS), Haiku Tak
wilkCrypt Win32/64, Linux, macOS, Solaris, ThreadX, VxWorks, FreeBSD, NetBSD, OpenBSD, wbudowany Linux, WinCE, Haiku, OpenWRT, iPhone (iOS), Android, Nintendo Wii i Gamecube przez DevKitPro, QNX, MontaVista, NonStop, TRON /ITRON/µITRON, µC/OS firmy Micrium, FreeRTOS, SafeRTOS, Freescale MQX, Nucleus, TinyOS, HP-UX Tak