Сравнение библиотек криптографии

редактировать

В приведенных ниже таблицах сравниваются библиотеки криптографии, которые имеют дело с алгоритмами криптографии и имеют вызовы функций API для каждой из поддерживаемые функции.

Содержание

  • 1 Библиотеки криптографии
  • 2 Проверка FIPS 140
  • 3 Операции с ключами
    • 3.1 Генерация ключей и обмен ими
    • 3.2 Поддержка криптографии на эллиптических кривых (ECC)
    • 3.3 Стандарты криптографии с открытым ключом
  • 4 Хеш-функции
  • 5 MAC-алгоритмы
  • 6 Блочные шифры
    • 6.1 Алгоритмы блочного шифрования
    • 6.2 Режимы шифрования
  • 7 Потоковые шифры
  • 8 Аппаратная поддержка
    • 8.1 Смарт-карта, Поддержка протоколов SIM и HSM
    • 8.2 Поддержка ускорения ЦП / платформы общего назначения
    • 8.3 Поддержка криптографического ускорителя микроконтроллеров
  • 9 Размер кода и соотношение кода и комментариев
  • 10 Переносимость
  • 11 Ссылки

Библиотеки криптографии

РеализацияКомпанияЯзык разработкиОткрытый исходный кодЛицензия на программное обеспечениеПоследнее обновление
Botan Джек ЛлойдC ++ДаУпрощенный BSD 2.16.0 (6 октября 2020 г.; 28 дней назад (2020-10-06))
Бодрый Castle Легион Bouncy Castle Inc.Java, C #ДаЛицензия MIT
Java1.67 / 1 ноября 2020 г.; 2 дня назад (2020-11-01)
Java FIPSBC-FJA 1.0.2 / 24 августа 2019 г.; 14 месяцев назад (2019-08-24)
C#1.8.8 / 22 сентября 2020 г.; 42 дня назад (2020-09-22)
C # FIPSBC-FNA 1.0.1 / 28 декабря 2016 г.; 3 года назад (28 декабря 2016 г.)
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 FoundationCДаЛицензия Apache 1.0 15 июня 2020 г.
Libgcrypt GnuPG сообщество и g10codeCДа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 v33.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 Проект OpenSSLCДаЛицензия Apache 1.0 и лицензия BSD с 4 пунктами1.1.1h (22 сентября 2020 г.; 42 дня назад (2020-09-22))
RSA BSAFE Crypto-C Micro EditionDell, ранее RSA Security CNoСобственный4.1.4 (11 сентября 2019 г.; 13 месяцев назад (11.09.2019))
RSA BSAFE Crypto-JDell, ранее RSA Security JavaNoСобственный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

В этом разделе описывается статус Сертификация 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 ДаДаДаДаНетНетНет

Криптография на основе эллиптических кривых (ECC) поддержка

Реализация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 lementationPKCS # 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). MAC - это короткий фрагмент информации, используемый для аутентификации сообщения, другими словами, чтобы подтвердить, что сообщение пришло от указанного отправителя (его подлинность) и не было изменено при передаче (его целостность).

РеализацияHMAC-MD5 HMAC-SHA1 HMAC -SHA2Poly1305-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 ДаНетНетНетНетНетНетНетНетНетНет

Аппаратная поддержка

В таблице сравнивается возможность использования аппаратной улучшенной криптографии. С помощью специального оборудования библиотека может достичь большей скорости и / или большей безопасности, чем в противном случае.

Смарт-карта, SIM и Поддержка протокола HSM

Реализация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 CubeMXNordic nRF51
wolfCrypt ДаДаДаДаДаДаДаДаДа

Размер кода и код для комментария соотношение

РеализацияРазмер исходного кода.

(kSLOC = 1000 строк исходного кода)

Отношение строк кода к строкам комментариев
Botan 1334,55
Надувной замок 13595,26
cryptlib 2412,66
Crypto++ 1155,74
Libgcrypt 2166,27
libsodium 4421,92
Крапива 1114,08
OpenSSL 4724.41
RSA BSAFE Crypto-C Micro Edition11174.04
RSA BSAFE Crypto-J2711.3
wolfCrypt 395.69
mbed TLS 10533.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 EditionSolaris, HP-UX, Tru64, Linux, Android, FreeBSD, AIX, 32- и 64-разрядная Windows (Visual Studio), macOS (Дарвин), iOS, VxWorksДа
RSA BSAFE Crypto-JSolaris, 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?

Ссылки

Последняя правка сделана 2021-05-15 08:03:08
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте