WolfSSL

wolfSSL
Тип Библиотека
Разработчик Тодд Оуска
Написана на язык Си
Операционная система кроссплатформенное ПО
Первый выпуск февраль 19, 2006 (2006-02-19)[1]
Последняя версия
Репозиторий github.com/wolfSSL/wolfs…
Лицензия GNU General Public License или Лицензия на коммерческое распространение
Сайт wolfssl.com

wolfSSL (более раннее название: CyaSSL, or yet another SSL) - это небольшая, портативная, встроенная библиотека SSL / TLS, предназначенная для разработчиков встраиваемых систем. Это реализация TLS с открытым исходным кодом (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3 и DTLS 1.0 и 1.2), написанная на языке Си. Включает в себя клиентские библиотеки SSL / TLS и реализацию сервера SSL / TLS, а также поддержку нескольких API, в том числе определенных SSL и TLS. wolfSSL также включает интерфейс совместимости OpenSSL с наиболее часто используемыми функциями OpenSSL.[3][4]

Предшественник wolfSSL yaSSL - это библиотека SSL на основе C++ для встраиваемых сред и операционных систем реального времени с ограниченными ресурсами.

В настоящее время wolfSSL доступна для Win32/64, Linux, macOS, Solaris, Threadx, VxWorks, FreeBSD, NetBSD, OpenBSD, встраиваемый Linux, Yocto Project, OpenEmbedded, WinCE, Haiku, OpenWrt, iPhone, Android, Nintendo Wii и Gamecube при поддержке DevKitPro, QNX, MontaVista Linux, вариантов системы Tron, NonStop, OpenCL, Micrium's MicroC/OS-II, FreeRTOS, SafeRTOS, Freescale MQX, Nucleus, TinyOS, TI-RTOS, HP-UX, uTasker, uT-kernel, embOS, INtime, mbed, RIOT, CMSIS-RTOS, FROSTED, Green Hills INTEGRITY, Keil RTX, TOPPERS, PetaLinux и Apache Mynewt.

История создания

[править | править код]

Создание yaSSL, or yet another SSL, датируется 2004 годом. В то время уже существовала OpenSSL, которая распространялась под двойной лицензией OpenSSL License и SSLeay license.[5] В качестве альтернативы, yaSSL получил двойную коммерческую и GPL лицензию.[6] yaSSL предложил более современный API, поддержку для коммерческого ПО и был дополнен уровнем совместимости с OpenSSL.[3] MySQL стала первым крупным клиентом wolfSSL/CyaSSL/yaSSL.[7] Благодаря поддержке MySQL, yaSSL достигла чрезвычайно больших объемов распространения в миллионы копий.

Легкая SSL-библиотека wolfSSL реализует следующие протоколы:[8]

  • SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3
  • DTLS 1.0, DTLS 1.2

Дополнительные замечания по протоколам:

  • SSL 2.0 - протокол SSL 2.0 устарел и, согласно RFC 6176, запрещен к использованию с 2011 года. wolfSSL ее не поддерживает.
  • SSL 3.0 - протокол SSL 3.0 устарел и, согласно RFC 7568, запрещен к использованию с 2015 года. SSL 3.0 был отключен по умолчанию, начиная с wolfSSL 3.6.6 в ответ на атаку POODLE, но его можно включить при помощи параметра времени компиляции.[9]

wolfSSL использует следующие криптографические библиотеки:

По умолчанию, wolfSSL использует криптографические сервисы библиотеки wolfCrypt.[10] wolfCrypt предоставляет RSA, ECC, DSS, Diffie–Hellman, EDH, NTRU, DES, Triple DES, AES (CBC, CTR, CCM, GCM), Camellia, IDEA, ARC4, HC-128, ChaCha20, MD2, MD4, MD5, SHA-1, SHA-2, SHA-3, BLAKE2, RIPEMD-160, Poly1305, генерацию случайных чисел, поддержку больших целых чисел, и Base16/64 кодирование/декодирование. Также включены экспериментальный шифр Rabbit и поточный шифр для ПО в общественном достоянии из проекта eSTREAM. Rabbit потенциально полезен для тех, кто шифрует потоковое мультимедиа в высокопроизводительных средах с высокими требованиями.

wolfCrypt также включает в себя поддержку последних алгоритмов Curve25519 и Ed25519.

wolfCrypt выступает в качестве программно-аппаратной (бекенд) криптографической реализации для нескольких популярных пакетов программного обеспечения и библиотек, включая MIT Kerberos[11] (где его можно включить с помощью опции сборки).

CyaSSL+ включает шифрование открытым ключом NTRU[12]. Добавление NTRU в CyaSSL+ стало результатом партнерства между компаниями yaSSL и Security Innovation.[12] NTRU хорошо работает в мобильных и встраиваемых системах, благодаря уменьшенному количеству бит, необходимых для обеспечения такой же безопасности, как и в других системах с открытым ключом. Кроме того, не подтверждено, что он уязвим для квантовых атак. В пакете CyaSSL+ доступны несколько наборов шифров, использующих NTRU, включая AES-256, RC4 и HC-128.

wolfSSL поддерживает использование Intel SGX (Software Guard Extensions)[13]. Intel SGX позволяет уменьшить площадь атаки и, как было показано, обеспечивает более высокий уровень безопасности для выполнения кода без существенного негативного влияния на производительность.

Поддерживаемые платформы аппаратного ускорения

[править | править код]

Поддержка проверенных элементов

[править | править код]

В настоящее время, wolfSSL поддерживает следующие проверенные элементы:

  • STSAFE
  • ATECC508A

Поддержка аппаратного шифрования

[править | править код]

В нижеприведенных таблицах перечислены возможности wolfSSL для использования аппаратного шифрования различных устройств с различными алгоритмами.

Режимы шифрования AES
Устройство AES-GCM AES-CCM AES-CBC AES-ECB AES-CTR
Intel AES-NI

(Семейства процессоров Xeon и Core)

Все Все Все Все Все
Freescale

Cryptographic Accelerator and Assurance Module (CAAM)

Все Все Все Все
Freescale Coldfire SEC

(NXP MCF547X и MCF548X)

Все
Freescale Kinetis MMCAU

K50, K60, K70, и K80 (ARM Cortex-M4 core)

Все Все Все Все
STMicroelectronics STM32

F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)

Все Все
Cavium NITROX

(процессоры III/V PX)

Все
Microchip PIC32 MX/MZ

(встраиваемое подключение)

Все Все Все
Texas Instruments TM4C1294

(ARM Cortex-M4F)

Все Все Все Все Все
Nordic NRF51

(Series SoC family, 32-bit ARM Cortex M0 processor core)

128-bit
ARMv8 Все Все Все
Intel QuickAssist Technology Все Все
Freescale NXP LTC Все Все Все Все Все

"Все" означает, что поддерживаются размеры блоков 128, 192 и 256 бит.

Режимы шифрования DES/3DES
Device DES-CBC DES-ECB 3DES-CBC
Freescale Coldfire SEC

(NXP MCF547X и MCF548X)

64 бит 192 бит
Freescale Kinetis MMCAU

K50, K60, K70 и K80 (ядро ARM Cortex-M4)

64 бит 192 бит
STMicroelectronics STM32

F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)

64 бит 64 бит (кодирование) 192 бит
Cavium NITROX

(Процессоры III/V PX)

192 бит
Microchip PIC32 MX/MZ

(Встраиваемое подключение)

64 бит 192 бит
Texas Instruments TM4C1294

(ARM Cortex-M4F)

64 бит 192 бит
Потоковые шифры
Устройство RC4 ChaCha20
AVX1/AVX2

(Intel и AMD x86)

Поддерживается
Cavium NITROX

(Процессоры III/V PX)

2048 бит максимум
Поддержка хеширования
Устройство MD5 SHA1 SHA2 SHA-256 SHA-384 SHA-512
AVX1/AVX2

(Intel и AMD x86)

Поддерживается Поддерживается Поддерживается
Freescale Kinetis MMCAU

K50, K60, K70 и K80 (ядро ARM Cortex-M4)

Поддерживается Поддерживается Поддерживается
STMicroelectronics STM32

F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)

Поддерживается Поддерживается
Microchip PIC32 MX/MZ

(Встраиваемое подключение)

Поддерживается Поддерживается Поддерживается
ARMv8 Поддерживается
Intel QuickAssist Technology Поддерживается Поддерживается Поддерживается
Freescale NXP LTC Поддерживается Поддерживается
Ключевые операции: генерация и обмен, эллиптическая криптография
Устройство RSA ECC ECC-DHE Curve25519 Ed25519
Cavium NITROX

(Процессоры III/V PX)

512 - 4096 бит NIST Prime

192, 224, 256, 384, 521

Microchip/Atmel

ATECC508A (совместим с любыми MPU или MCU, включая Atmel SMART и AVR MCU)

256 бит

(NIST-P256)

Intel QuickAssist Technology 512 - 4096 бит 128, 256 бит
Freescale NXP LTC 512 - 4096 бит 128, 256 бит 128, 256 бит 256 бит 256 бит
Алгоритмы MAC
Устройство HMAC-MD5 HMAC-SHA1 HMAC-SHA2 HMAC-SHA256 SHA-3 Poly1305
AVX1/AVX2

(Intel and AMD x86)

Поддерживается
Cavium NITROX

(Процессоры III/V PX)

Поддерживается Поддерживается Поддерживается Поддерживается
Microchip PIC32 MX/MZ

(Встраиваемое подключение)

Поддерживается Поддерживается Поддерживается
Intel QuickAssist Technology Поддерживается Поддерживается
Генерация случайных чисел
Устройство RNG
STMicroelectronics STM32

F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)

Поддерживается
Cavium NITROX

(III/V PX processors)

Поддерживается
Nordic NRF51

(Series SoC family, 32-bit ARM Cortex M0 processor core)

Поддерживается

Лицензирование

[править | править код]

wolfSSL - это ПО с открытым исходным кодом, распространяемое по лицензии GNU General Public License GPLv2.[14]

Примечания

[править | править код]
  1. wolfSSL ChangeLog. Дата обращения: 13 января 2019. Архивировано 16 марта 2016 года.
  2. Release 5.7.4 — 2024.
  3. 1 2 wolfSSL - Embedded Communications Products. Дата обращения: 13 января 2019. Архивировано 8 сентября 2017 года.
  4. What You Need to Know About the TLS 1.3 Protocol and wolfSSL’s SSL/TLS Libraries (англ.). www.allaboutcircuits.com. Дата обращения: 28 декабря 2018. Архивировано 29 декабря 2018 года.
  5. OpenSSL: Source, License. Дата обращения: 13 января 2019. Архивировано 18 января 2019 года.
  6. wolfSSL - License. Дата обращения: 13 января 2019. Архивировано 12 июля 2017 года.
  7. MySQL, Building MySQL with Support for Secure Connections. Дата обращения: 13 января 2019. Архивировано из оригинала 6 июля 2017 года.
  8. wolfSSL - Docs | CyaSSL Manual - Chapter 4 (Features). Дата обращения: 13 января 2019. Архивировано 29 мая 2015 года.
  9. "wolfSSL 3.6.6 is Now Available" Архивная копия от 14 марта 2017 на Wayback Machine.
  10. wolfSSL - Docs | wolfSSL Manual - Chapter 10 (wolfCrypt Usage Reference). Дата обращения: 13 января 2019. Архивировано 3 июля 2017 года.
  11. Kerberos: The Network Authentication Protocol. Дата обращения: 13 января 2019. Архивировано 5 августа 2019 года.
  12. 1 2 NTRU CryptoLabs Архивировано 2 февраля 2013 года.
  13. wolfSSL — wolfSSL with Intel® SGX. Дата обращения: 13 января 2019. Архивировано 13 января 2019 года.
  14. GNU License. Дата обращения: 13 января 2019. Архивировано 24 июля 2010 года.