wolfSSL
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 | |
---|---|
Тип | Библиотека |
Разработчик | Тодд Оуска |
Написана на | язык Си |
Операционная система | кроссплатформенное ПО |
Первый выпуск | февраль 19, 2006[1] |
Последняя версия | |
Лицензия | GNU General Public License или Лицензия на коммерческое распространение |
Сайт | wolfssl.com |
Предшественник 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 использует следующие криптографические библиотеки:
wolfCrypt
По умолчанию, 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] (где его можно включить с помощью опции сборки).
NTRU
CyaSSL+ включает шифрование открытым ключом NTRU[12]. Добавление NTRU в CyaSSL+ стало результатом партнерства между компаниями yaSSL и Security Innovation.[12] NTRU хорошо работает в мобильных и встраиваемых системах, благодаря уменьшенному количеству бит, необходимых для обеспечения такой же безопасности, как и в других системах с открытым ключом. Кроме того, не подтверждено, что он уязвим для квантовых атак. В пакете CyaSSL+ доступны несколько наборов шифров, использующих NTRU, включая AES-256, RC4 и HC-128.
SGX
wolfSSL поддерживает использование Intel SGX (Software Guard Extensions)[13]. Intel SGX позволяет уменьшить площадь атаки и, как было показано, обеспечивает более высокий уровень безопасности для выполнения кода без существенного негативного влияния на производительность.
Поддерживаемые платформы аппаратного ускорения
Поддержка проверенных элементов
В настоящее время, wolfSSL поддерживает следующие проверенные элементы:
- STSAFE
- ATECC508A
Поддержка аппаратного шифрования
В нижеприведенных таблицах перечислены возможности wolfSSL для использования аппаратного шифрования различных устройств с различными алгоритмами.
Устройство | 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 бит.
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 бит |
Устройство | 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]
См. также
References
- wolfSSL ChangeLog .
- wolfSSL Release 5.1.1 (Jan 3rd, 2022) — 2022.
- wolfSSL - Embedded Communications Products
- What You Need to Know About the TLS 1.3 Protocol and wolfSSL’s SSL/TLS Libraries (англ.). www.allaboutcircuits.com. Дата обращения: 28 декабря 2018.
- OpenSSL: Source, License
- wolfSSL - License
- MySQL, Building MySQL with Support for Secure Connections (недоступная ссылка). Дата обращения: 13 января 2019. Архивировано 6 июля 2017 года.
- wolfSSL - Docs | CyaSSL Manual - Chapter 4 (Features)
- "wolfSSL 3.6.6 is Now Available".
- wolfSSL - Docs | wolfSSL Manual - Chapter 10 (wolfCrypt Usage Reference)
- Kerberos: The Network Authentication Protocol
- NTRU CryptoLabs Архивировано 2 февраля 2013 года.
- wolfSSL — wolfSSL with Intel® SGX
- GNU License