В приведенных ниже таблицах сравниваются библиотеки криптографии, которые имеют дело с алгоритмами криптографии и имеют вызовы функций API для каждой из поддерживаемые функции.
Реализация | Компания | Язык разработки | Открытый исходный код | Лицензия на программное обеспечение | Последнее обновление | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Botan | Джек Ллойд | C ++ | Да | Упрощенный BSD | 2.16.0 (6 октября 2020 г.; 28 дней назад (2020-10-06)) | ||||||||
Бодрый Castle | Легион Bouncy Castle Inc. | Java, C # | Да | Лицензия MIT |
| ||||||||
cryptlib | Питер Гутманн | C | Да | Лицензия Sleepycat или коммерческая лицензия | 3.4.5 (2019; 1 год назад ( 2019)) | ||||||||
Crypto ++ | Проект Crypto ++ | C ++ | Да | Лицензия на программное обеспечение Boost (все отдельные файлы являются общественным достоянием ) | фев. 22, 2019 (8.1.0) | ||||||||
GnuTLS | Никос Маврогианнопулос, Саймон Йозефссон | C | Да | GNU LGPL v2.1 + | 3.6.14 (3 июня 2020 г. ; 5 месяцев назад (2020-06-03)) | ||||||||
LibreSSL | OpenBSD Foundation | C | Да | Лицензия Apache 1.0 | 15 июня 2020 г. | ||||||||
Libgcrypt | GnuPG сообщество и g10code | C | Да | GNU LGPL v2.1 + | 1.8.7 (23 октября 2020 г.; 11 дней назад (2020-10-23)) | ||||||||
libsodium | Фрэнк Денис | C | Да | Лицензия ISC | 30 мая 2019 г. (1.0.18) | ||||||||
NaCl | Дэниел Дж. Бернштейн, Таня Ланге, Питер Швабе | C | Да | Общественное достояние | 21 февраля 2011 г. | ||||||||
Nettle | C | Да | GNU GPL v2 + или GNU LGPL v3 | 3.5.1 (27 июня 2019 г.; 16 мин. несколько секунд назад (27.06.2019)) | |||||||||
Службы сетевой безопасности (NSS) | Mozilla | C | Да | MPL 2.0 | 3.58 (16 октября 2020 г.; 18 дней назад (2020-10-16)). 3.53.1 (16 июня 2020 г.; 4 месяца назад (2020-06-16)) | ||||||||
OpenSSL | Проект OpenSSL | C | Да | Лицензия Apache 1.0 и лицензия BSD с 4 пунктами | 1.1.1h (22 сентября 2020 г.; 42 дня назад (2020-09-22)) | ||||||||
RSA BSAFE Crypto-C Micro Edition | Dell, ранее RSA Security | C | No | Собственный | 4.1.4 (11 сентября 2019 г.; 13 месяцев назад (11.09.2019)) | ||||||||
RSA BSAFE Crypto-J | Dell, ранее RSA Security | Java | No | Собственный | 6.2.5 (15 августа 2019 г.; 14 месяцев назад (2019-08-15)) | ||||||||
wolfCrypt | wolfSSL, Inc. | C | Да | GPL v2 или коммерческая лицензия | 4.5.0 (19 августа 2020 г.; 2 месяцев назад (2020-08-19)) | ||||||||
mbed TLS | ARM Limited | C | Да | Лицензия Apache 2.0 | 2.16.2 (11 июня 2019 г.; 16 месяцев назад (2019-06- 11)). 2.7.10 (19 марта 2018 г.; 2 года назад (2018-03-19)). |
В этом разделе описывается статус Сертификация FIPS 140 для перечисленных криптографических графические библиотеки в соответствии с Программой проверки криптографических модулей NIST.
Реализация | Проверка FIPS 140-2 | Проверка FIPS 140-3 |
---|---|---|
Botan | No | Нет |
Bouncy Castle | Да | Нет |
cryptlib | No | Нет |
Crypto ++ | No | Нет |
GnuTLS | No | Нет |
Libgcrypt | No | Нет |
libsodium | No | Нет |
NaCl | No | Нет |
Крапива | No | Нет |
Службы сетевой безопасности (NSS) | No | Нет |
OpenSSL | No | Нет |
RSA BSAFE Crypto-C Micro Edition | Да | Нет |
RSA BSAFE Crypto-J | Да | Нет |
wolfCrypt | Да | Частичный |
mbed TLS | No | Нет |
Операции с ключами включают алгоритмы генерации ключей, соглашения об обмене ключами и стандарты криптографии с открытым ключом.
Реализация | ECDH | DH | DSA | RSA | ElGamal | NTRU | DSS |
---|---|---|---|---|---|---|---|
Botan | Да | Да | Да | Да | Да | Нет | Да |
Надувной замок | Да | Да | Да | Да | Да | Да | Да |
cryptlib | Да | Да | Да | Да | Да | Нет | Да |
Crypto ++ | Да | Да | Да | Да | Да | Нет | Да |
Libgcrypt | Да | Да | Да | Да | Да | Нет | Да |
libsodium | Да | Нет | Нет | Нет | Нет | Нет | Нет |
Крапива | Нет | Нет | Да | Да | Нет | Нет | Нет |
OpenSSL | Да | Да | Да | Да | Нет | Нет | Нет |
RSA BSAFE Crypto-C Micro Edition | Да | Да | Да | Да es | Нет | Нет | Нет |
RSA BSAFE Crypto-J | Да | Да | Да | Да | Нет | Нет | Нет |
wolfCrypt | Да | Да | Да | Да | Нет | Да | Да |
mbed TLS | Да | Да | Да | Да | Нет | Нет | Нет |
Реализация | NIST | SECG | ECC Brainpool | ECDSA | ECDH | Curve25519 | EdDSA | GOST R 34.10 |
---|---|---|---|---|---|---|---|---|
Botan | Да | Да | Да | Да | Да | Да | Да | Да |
Надувной замок | Да | Да | Да | Да | Да | Да | Да | Да |
cryptlib | Да | Да | Да | Да | Да | Нет | Нет | Нет |
Crypto ++ | Да | Да | Да | Да | Да | Да | Нет | Нет |
Ли bgcrypt | Да | Да | Да | Да | Да | Да | Да | Да |
libsodium | Да | Нет | Нет | Нет | Нет | Да | Да | Нет |
Крапива | Да | Частично | Нет | Нет | Нет | Да | Да | Нет |
OpenSSL | Да | Да | Да | Да | Да | Да | Да | Да |
RSA BSAFE Crypto-C Micro Edition | Да | Да | Нет | Да | Да | Нет | Нет | Нет |
RSA BSAFE Crypto-J | Да | Да | Нет | Да | Да | Нет | Нет | Нет |
wolfCrypt | Да | Нет | Да | Да | Да | Да | Да | Нет |
mbed TLS | Да | Да | Да | Да | Да | Да | Нет | Нет |
Imp lementation | PKCS # 1 | PKCS # 5 | PKCS # 8 | PKCS # 12 | IEEE P1363 | ASN.1 |
---|---|---|---|---|---|---|
Botan | Да | Да | Да | Нет | Да | Да |
Надувной замок | Да | Да | Да | Да | Да | Да |
cryptlib | Да | Да | Да | Да | Нет | Да |
Крипто ++ | Да | Да | Да | Нет | Да | Да |
Libgcrypt | Да | Да | Да | Да | Да | Да |
libsodium | Нет | Нет | Нет | Нет | Нет | Нет |
Крапива | Да | Да | Нет | Нет | Нет | Нет |
OpenSSL | Да | Да | Да | Да | Нет | Да |
RSA BSAFE Crypto-C Micro Edition | Да | Да | Да | Да | Да | Да |
RSA BSAFE Crypto-J | Да | Да | Да | Да | Нет | Да |
wolfCrypt | Да | Да | Да | Да | Нет | Да |
mbed TLS | Да | Нет | Да | Да | Нет | Да |
Сравнение поддерживаемых криптографические хеш-функции. На данный момент в этот раздел также включены шифры, которые используются для создания тега MAC для сообщения. Здесь хеш-функции определяются как берущие сообщение произвольной длины и выдающие выходные данные фиксированного размера, которые практически невозможно использовать для воссоздания исходного сообщения.
Реализация | MD5 | SHA-1 | SHA-2 | SHA-3 | RIPEMD-160 | Tiger | Whirlpool | ГОСТ | Stribog | BLAKE2 |
---|---|---|---|---|---|---|---|---|---|---|
Botan | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да |
Надувной замок | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да |
cryptlib | Да | Да | Да | Да | Да | Нет | Да | Нет | Нет | Нет |
Крипто ++ | Да | Да | Да | Да | Да | Да | Да | Да | Нет | Да |
Libgcrypt | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да |
libsodium | Нет | Нет | Да | Нет | Нет | Нет | Нет | Нет | Нет | Да |
Крапива | Да | Да | Да | Да | Да | Нет | Нет | Да | Нет | Нет |
OpenSSL | Да | Да | Да | Да | Да | Да | Да | Да | Нет | Да |
RSA BSAFE Crypto-C Micro Edition | Да | Да | Да | Да | Нет | Нет | Нет | Да | Нет | Нет |
RSA BSAFE Crypto-J | Да | Да | Да | Да | Да | Нет | Нет | Нет | Нет | Нет |
wolfCrypt | Да | Да | Да | Да | Да | Нет | Нет | Нет | Нет | Да |
mbed TLS | Да | Да | Да | Да | Да | Нет | Нет | Нет | Нет | Нет |
Сравнение реализаций алгоритмы кода аутентификации сообщения (MAC). MAC - это короткий фрагмент информации, используемый для аутентификации сообщения, другими словами, чтобы подтвердить, что сообщение пришло от указанного отправителя (его подлинность) и не было изменено при передаче (его целостность).
Реализация | HMAC-MD5 | HMAC-SHA1 | HMAC -SHA2 | Poly1305-AES | BLAKE2-MAC |
---|---|---|---|---|---|
Botan | Да | Да | Да | Да | Да |
Надувной замок | Да | Да | Да | Да | Да |
cryptlib | Да | Да | Да | Нет | Нет |
Crypto ++ | Да | Да | Да | Да | Да |
Libgcrypt | Да | Да | Да | Да | Да |
libsodium | Нет | Нет | Да | Да | Да |
Крапива | Да | Да | Да | Да | Нет |
OpenSSL | Да | Да | Да | Да | Нет |
RSA BSAFE Crypto-C Micro Edition | Да | Да | Да | Нет | Нет |
RSA BSAFE Crypto-J | Да | Да | Да | Да | Нет |
wolfCrypt | Да | Да | Да | Да | Да |
mbed TLS | Да | Да | Да | Нет | Нет |
В таблице сравниваются реализации блочных шифров. Блочные шифры определяются как детерминированные и работают с заданным количеством битов (называемых блоком) с использованием симметричного ключа. Каждый блочный шифр можно разбить на возможные размеры ключей и режимы блочного шифра, с которыми он может работать.
Реализация | AES | Camellia | 3DES | Blowfish | Twofish | CAST5 | IDEA | ГОСТ 28147-89 / ГОСТ R 34.12-2015 | ARIA |
---|---|---|---|---|---|---|---|---|---|
Botan | Да | Да | Да | Да | Да | Да | Да | Да | Да |
Надувной замок | Да | Да | Да | Да | Да | Да | Да | Да | Да |
cryptlib | Да | Нет | Да | Да | Да | Да | |||
Crypto ++ | Да | Да | Да | Да | Да | Да | Да | Частично | Да |
Libgcrypt | Да | Да | Да | Да | Да | Да | Да | Да | |
libsodium | Частично | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Крапива | Да | Да | Да | Да | |||||
OpenSSL | Да | Да | Да | Да es | Нет | Да | Да | Да | Да |
RSA BSAFE Crypto-C Micro Edition | Да | Да | Да | Нет | Нет | Нет | Нет | Частично | Да |
RSA BSAFE Crypto-J | Да | Нет | Да | Нет | Нет | Нет | Нет | Нет | Нет |
wolfCrypt | Да | Да | Да | Нет | Нет | Нет | Да | Нет | Нет |
mbed TLS | Да | Да | Да | Да | Нет | Нет | Нет | Нет | Нет |
Реализация | ECB | CBC | OFB | CFB | CTR | CCM | GCM | OCB | XTS | AES-Wrap | Stream |
---|---|---|---|---|---|---|---|---|---|---|---|
Botan | Нет | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да |
Надувной замок | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | |
cryptlib | Да | Да | Да | Да | Нет | Да | |||||
Крипто ++ | Да | Да | Да | Да | Да | Да | Да | Нет | Нет | Нет | Да |
Libgcrypt | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да |
libsodium | Нет | Нет | Нет | Нет | Да | Нет | Да | Нет | Нет | Нет | Нет |
Крапива | Да | Да | Нет | Нет | Да | Да | Да | Нет | Нет | Нет | Нет |
OpenSSL | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да |
RSA BSAFE Crypto-C Micro Edition | Да | Да | Да | Да | Да | Да | Да | Нет | Да | Да | Да |
RSA BSAFE Крипто- J | Да | Да | Да | Да | Да | Да | Да | Нет | Да | Да | Да |
wolfCrypt | Да | Да | Нет | Да | Да | Да | Да | Нет | Да | Нет | Да |
mbed TLS | Да | Да | Нет | Да | Да | Да | Да | Нет | Нет | Нет | Нет |
В таблице сравниваются реализации различные потоковые шифры. Потоковые шифры определяются как использующие простые текстовые цифры, которые комбинируются с потоком псевдослучайных цифр шифра. Потоковые шифры обычно быстрее, чем блочные шифры, и могут иметь меньшую аппаратную сложность, но могут быть более восприимчивыми к атакам.
Реализация | RC4 | HC-256 | Rabbit | Salsa20 | ChaCha | SEAL | Panama | WAKE | Grain | VMPC | ISAAC |
---|---|---|---|---|---|---|---|---|---|---|---|
Botan | Да | Нет | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет | Нет |
Надувной замок | Да | Да | Нет | Да | Да | Нет | Нет | Нет | Да | Да | Да |
cryptlib | Да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Крипто ++ | Да | Да | Да | Да | Да | Да | Да | Да | Нет | Нет | Нет |
Libgcrypt | Да | Нет | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет | Нет |
libsodium | Нет | Нет | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет | Нет |
Крапива | Да | Нет | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет | Нет |
OpenSSL | Да | Нет | Нет | Нет | Да | Нет | Нет | Нет | Нет | Нет | Нет |
RSA BSAFE Crypto-C Micro Edition | Да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
RSA BSAFE Crypto-J | Да | Нет | Нет | Нет | Да | Нет | Нет | Нет | Нет | Нет | Нет |
wolfCrypt | Да | Да | Да | Да | Да | Нет | Нет | Нет | Нет | Нет | Нет |
mbed TLS | Да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
В таблице сравнивается возможность использования аппаратной улучшенной криптографии. С помощью специального оборудования библиотека может достичь большей скорости и / или большей безопасности, чем в противном случае.
Реализация | PKCS # 11 | PC / SC | CCID |
---|---|---|---|
Botan | Да | Нет | Нет |
Надувной замок | Да | Нет | Нет |
cryptlib | Да | Нет | Нет |
Crypto ++ | Нет | Нет | Нет |
Libgcrypt | Да | Да | Да |
libsodium | Нет | Нет | Нет |
OpenSSL | Да | Нет | Нет |
RSA BSAFE Crypto-C Micro Edition | Да | Нет | Нет |
RSA BSAFE Crypto-J | Да | Нет | Нет |
wolfCrypt | Да | Нет | Нет |
mbed TLS | Да | Нет | Нет |
Реализация | AES-NI | SSSE3 / SSE4. 1 | AVX / AVX2 | RDRAND | VIA PadLock | Intel QuickAssist | AltiVec | ARMv7-A NEON | инструкции по криптографии ARMv8-A |
---|---|---|---|---|---|---|---|---|---|
Botan | Да | Да | Да | Да | Нет | Нет | Да | Да | Да |
cryptlib | Да | Да | Да | Да | Да | Нет | Нет | Нет | Нет |
Крипто ++ | Да | Да | Да | Да | Да | Нет | Да | Да | Да |
Libgcrypt | Да | Да | Да | Да | Да | Нет | Нет | Да | Да |
libsodium | Да | Да | Да | Нет | Нет | Нет | Нет | Нет | Нет |
OpenSSL | Да | Да | Да | Да | Да | Нет | Да | Да | Да |
RSA BSAFE Crypto-C Micro Edition | Да | Да | Да | Да | Нет | Нет | Нет | Нет | Да |
RSA BSAFE Crypto-J | Да | Да | Да | Да | Нет | Нет | Нет | Нет | Да |
wolfCrypt | Да | Да | Да | Да | Нет | Да | Нет | Да | Да |
Реализация | STM32F2 | STM32F4 | Cavium NITROX | Freescale CAU / mmCAU | Microchip PIC32MZ | Atmel ATECC508A | TI TivaC Series | CubeMX | Nordic nRF51 |
---|---|---|---|---|---|---|---|---|---|
wolfCrypt | Да | Да | Да | Да | Да | Да | Да | Да | Да |
Реализация | Размер исходного кода. (kSLOC = 1000 строк исходного кода) | Отношение строк кода к строкам комментариев |
---|---|---|
Botan | 133 | 4,55 |
Надувной замок | 1359 | 5,26 |
cryptlib | 241 | 2,66 |
Crypto++ | 115 | 5,74 |
Libgcrypt | 216 | 6,27 |
libsodium | 44 | 21,92 |
Крапива | 111 | 4,08 |
OpenSSL | 472 | 4.41 |
RSA BSAFE Crypto-C Micro Edition | 1117 | 4.04 |
RSA BSAFE Crypto-J | 271 | 1.3 |
wolfCrypt | 39 | 5.69 |
mbed TLS | 105 | 33.9 |
Реализация | Поддерживаемая операционная система | Поточная безопасность |
---|---|---|
Botan | Linux, Windows, macOS, Android, iOS, FreeBSD, NetBSD, OpenBSD, DragonflyBSD, AIX, QNX, Haiku, IncludeOS | Да |
Bouncy Castle | Общий API Java: J2ME, Java Runtime Environment 1.1+, Android. API Java FIPS: среда выполнения Java 1.5+, Android. C # API (общие и FIPS): CLR 4. | |
cryptlib | 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 и т. Д.), VDK, VM / CMS, VxWorks, Win16, Win32, Win64, WinCE / PocketPC / etc, XMK | Да |
Crypto ++ | Unix (AIX, OpenBSD, Linux, MacOS, Solaris и т. Д.), Win32, Win64, Android, iOS, ARM | Да |
Libgcrypt | Все 32- и 64-битные системы Unix (GNU / Linux, FreeBSD, NetBSD, macOS и т. Д.), Win32, Win64, WinCE и другие | Да |
libsodium | macOS, Linux, OpenBSD, NetBSD, FreeBSD, DragonflyBSD, Android, iOS, 32- и 64-разрядная Windows (Visual Studio, MinGW, C ++ Builder), NativeClient, QNX, JavaScript, AIX, MINIX, Solaris | Да |
OpenSSL | Solaris, IRIX, HP-UX, MPE / iX, Tru64, Linux, Android, BSD (OpenBSD, NetBSD, FreeBSD, DragonflyBSD), NextSTEP, QNX, UnixWare, SCO, AIX, 32- и 64-битная Windows (Visual Studio, MinGW, UWIN, CygWin), UEFI, macOS (Darwin), iOS, HURD, VxWorks, uClinux, VMS, DJGPP (DOS), Haiku | Да |
RSA BSAFE Crypto-C Micro Edition | Solaris, HP-UX, Tru64, Linux, Android, FreeBSD, AIX, 32- и 64-разрядная Windows (Visual Studio), macOS (Дарвин), iOS, VxWorks | Да |
RSA BSAFE Crypto-J | Solaris, Linux, Android, FreeBSD, AIX, 32- и 64-битная Windows, macOS (Darwin) | Да |
wolfCrypt | Win32 / 64, Linux, macOS, Solaris, ThreadX, VxWorks, FreeBSD, NetBSD, OpenBSD, встроенный Linux, WinCE, Haiku, OpenWRT, iPhone (iOS), Android, Nintendo Wii и Gamecube через DevKitPro, QNX, MontaVista, NonStop, TRON / ITRON / µITRON, Micrium µC / OS, FreeRTOS, SafeRTOS, Freescale MQX, Nucleus, TinyOS, HP-UX | Да |
mbed TLS | Win32 / 64, системы Unix, встроенный Linux, микроконтроллер Micrium / OS, FreeRTOS | ? |