wolfSSL | |
---|---|
Тип | Библиотека |
Разработчик | Тодд Оуска |
Написана на | язык Си |
Операционная система | кроссплатформенное ПО |
Первый выпуск | февраль 19, 2006[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]
Дополнительные замечания по протоколам:
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 поддерживает следующие проверенные элементы:
В нижеприведенных таблицах перечислены возможности 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]