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