wolfSSL
Тип | Бібліотека |
---|---|
Розробник | Todd Ouska |
Перший випуск | 19 лютого 2006[1] |
Операційна система | багатоплатформне ПЗ |
Мова програмування | мова Сі |
Ліцензія | GNU General Public License або комерційна ліцензія |
Репозиторій | github.com/wolfSSL/wolfssl |
Вебсайт | www.wolfssl.com |
wolfSSL (рання назва: CyaSSL, or yet another SSL) — це невелика, портативна, вбудована бібліотека SSL / TLS, яка призначена для розробників вбудованих систем. Це реалізація TLS з відкритим вихідним кодом (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3 i DTLS 1.0, 1.2), яка написана на мові С. Включає в себе клієнтські бібліотеки SSL / TLS і реалізацію сервера SSL / TLS, а також підтримку декількох API, в тому числі певних SSL і TLS. wolfSSL також включає інтерфейс сумісності OpenSSL з найчастіше використовуваними функціями OpenSSL.[2][3]
Попередник 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.[4] Як альтернатива yaSSL отримав подвійну комерційну і GPL ліцензію.[5] yaSSL запропонував більш сучасний API, підтримку для комерційного ПЗ і був доповнений рівнем сумісності з OpenSSL.[2] MySQL стала першим великим клієнтом wolfSSL/yaSSL/yaSSL.[6] Завдяки підтримці MySQL, yaSSL досягла надзвичайного поширення об'ємом в мільйони копій.
Легка SSL-бібліотека wolfSSL реалізує наступні протоколи:[7]
- 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, але його можна включити за допомогою параметру часу компіляції.[8]
wolfSSL використовує такі криптографічні бібліотеки:
За замовчуванням, wolfSSL використовує криптографічні сервіси бібліотеки wolfCrypt.[9] 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[10] (де його можна включити за допомогою опції збірки).
CyaSSL+ включає шифрування відкритим ключем NTRU[11]. Додавання NTRU в CyaSSL+ стало результатом партнерства між компаніями yaSSL і Security Innovation.[11] NTRU добре працює в мобільних та вбудованих системах, завдяки зменшеній кількості біт, необхідних для забезпечення такого ж рівня безпеки, як і в інших системах з відкритим ключем. Крім того, не підтверджено, що він вразливий для квантових атак. У пакеті CyaSSL+ доступні кілька наборів шифрів, що використовують NTRU, включаючи AES-256, RC4 і HC-128.
wolfSSL підтримує використання Intel SGX (Software Guard Extensions).[12] Intel SGX дозволяє зменшити площу атаки і, як було показано, забезпечує вищий рівень безпеки для виконання коду без істотного негативного впливу на продуктивність.
В даний час, wolfSSL підтримує такі перевірені елементи:
- STSAFE
- ATECC508A
У наведених нижче таблицях перераховані можливості wolfSSL для використання апаратного шифрування різних пристроїв з різними алгоритмами.
Пристрій | AES-GCM | AES-CCM | AES-CBC | AES-ECB | AES-CTR |
---|---|---|---|---|---|
Intel AES-NI [Архівовано 18 листопада 2018 у Wayback Machine.]
(сімейства процесорів Xeon і Core) |
усі | усі | усі | усі | усі |
Freescale [Архівовано 22 березня 2021 у Wayback Machine.]
Cryptographic Accelerator and Assurance Module (CAAM) |
усі | усі | усі | усі | |
Freescale Coldfire SEC [Архівовано 16 березня 2017 у Wayback Machine.]
(NXP MCF547X і MCF548X) |
усі | ||||
Freescale Kinetis MMCAU [Архівовано 16 березня 2017 у Wayback Machine.]
K50, K60, K70, і K80 (ядро Cortex-M4 компанії ARM) |
усі | усі | усі | усі | |
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ядро Cortex-М3/M4 компанії ARM) |
усі | усі | |||
Cavium NITROX [Архівовано 8 грудня 2017 у Wayback Machine.]
(процесори III/V PX) |
усі | ||||
Microchip PIC32 MX/MZ [Архівовано 22 січня 2019 у Wayback Machine.]
(Вбудоване підключення) |
усі | усі | усі | ||
Texas Instruments TM4C1294 [Архівовано 5 грудня 2018 у Wayback Machine.]
(ARM Cortex-M4F) |
усі | усі | усі | усі | усі |
Nordic NRF51
(сімейство Series SoC, 32-бітне ядро Cortex-М0 компанії ARM) |
128-біт | ||||
ARMv8 [Архівовано 11 листопада 2011 у Wayback Machine.] | усі | усі | усі | ||
Intel QuickAssist Technology [Архівовано 23 березня 2019 у Wayback Machine.] | усі | усі | |||
Freescale NXP LTC [Архівовано 23 березня 2019 у Wayback Machine.] | усі | усі | усі | усі | усі |
«Усі» означає, що підтримуються розміри блоків 128, 192 і 256 біт.
Пристрій | DES-CBC | DES-ECB | 3DES-CBC |
---|---|---|---|
Freescale Coldfire SEC [Архівовано 16 березня 2017 у Wayback Machine.]
(NXP MCF547X і MCF548X) |
64 біт | 192 біт | |
Freescale Kinetis MMCAU [Архівовано 16 березня 2017 у Wayback Machine.]
K50, K60, K70 і K80 (ядро Cortex-М4 компанії ARM) |
64 біт | 192 біт | |
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ядро Cortex-М3/М4 компанії ARM) |
64 біт | 64 біт (кодування) | 192 біт |
Cavium NITROX [Архівовано 8 грудня 2017 у Wayback Machine.]
(Процесори III/V PX) |
192 біт | ||
Microchip PIC32 MX/MZ [Архівовано 22 січня 2019 у Wayback Machine.]
(Вбудоване підключення) |
64 біт | 192 біт | |
Texas Instruments TM4C1294 [Архівовано 5 грудня 2018 у Wayback Machine.]
(ядро Cortex-М4F компанії ARM) |
64 біт | 192 біт |
Пристрій | RC4 | Salsa20 |
---|---|---|
AVX1/AVX2
(Intel і AMD x86) |
підтримується | |
Cavium NITROX [Архівовано 8 грудня 2017 у Wayback Machine.]
(Процесори III/V PX) |
2048 біт щонайбільше |
Пристрій | MD5 | SHA1 | SHA2 | SHA-256 | SHA-384 | SHA-512 |
---|---|---|---|---|---|---|
AVX1/AVX2
(Intel і AMD x86) |
підтримується | підтримується | підтримується | |||
Freescale Kinetis MMCAU [Архівовано 16 березня 2017 у Wayback Machine.]
K50, K60, K70 і K80 (ядро Cortex-М4 компанії ARM) |
підтримується | підтримується | підтримується | |||
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ядро Cortex-М3/М4 компанії ARM) |
підтримується | підтримується | ||||
Microchip PIC32 MX/MZ [Архівовано 22 січня 2019 у Wayback Machine.]
(Вбудоване підключення) |
підтримується | підтримується | підтримується | |||
ARMv8 [Архівовано 11 листопада 2011 у Wayback Machine.] | підтримується | |||||
Intel QuickAssist Technology [Архівовано 23 березня 2019 у Wayback Machine.] | підтримується | підтримується | підтримується | |||
Freescale NXP LTC [Архівовано 23 березня 2019 у Wayback Machine.] | підтримується | підтримується |
Пристрій | RSA | ECC | ECC-DHE | Curve25519 | Ed25519 |
---|---|---|---|---|---|
Cavium NITROX [Архівовано 8 грудня 2017 у Wayback Machine.]
(Процесори III/V PX) |
512-4096 біт | NIST Prime
192, 224, 256, 384, 521 |
|||
Microchip [Архівовано 22 січня 2019 у Wayback Machine.]/Atmel [Архівовано 15 грудня 2017 у Wayback Machine.]
ATECC508A (сумісний з усіма MPU або MCU, включаючи Atmel SMART і AVR MCU) |
256 біт
(NIST-P256) |
||||
Intel QuickAssist Technology [Архівовано 23 березня 2019 у Wayback Machine.] | 512-4096 біт | 128, 256 біт | |||
Freescale NXP LTC [Архівовано 23 березня 2019 у Wayback Machine.] | 512-4096 біт | 128, 256 біт | 128, 256 біт | 256 біт | 256 біт |
Пристрій | HMAC-MD5 | HMAC-SHA1 | HMAC-SHA2 | HMAC-SHA256 | SHA-3 | Poly1305 |
---|---|---|---|---|---|---|
AVX1/AVX2
(Intel i AMD x86) |
підтримується | |||||
Cavium NITROX [Архівовано 8 грудня 2017 у Wayback Machine.]
(Процесори III/V PX) |
підтримується | підтримується | підтримується | підтримується | ||
Microchip PIC32 MX/MZ [Архівовано 22 січня 2019 у Wayback Machine.]
(Вбудоване підключення) |
підтримується | підтримується | підтримується | |||
Intel QuickAssist Technology [Архівовано 23 березня 2019 у Wayback Machine.] | підтримується | підтримується |
Пристрій | RNG |
---|---|
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ядро Cortex-М3/М4 компанії ARM) |
підтримується |
Cavium NITROX [Архівовано 8 грудня 2017 у Wayback Machine.]
(процесори III/V PX) |
підтримується |
Nordic NRF51
(сімейство Series SoC, 32-бітне ядро Cortex-М0 компанії ARM) |
підтримується |
wolfSSL — це ПЗ з відкритим вихідним кодом, яке розповсюджується за ліцензією GNU General Public License GPLv2.[13]
- Transport Layer Security
- Comparison of TLS implementations[en]
- Comparison of cryptography libraries[en]
- GnuTLS
- Network Security Services
- OpenSSL
- ↑ wolfSSL ChangeLog. Архів оригіналу за 16 березня 2016. Процитовано 21 січня 2019.
- ↑ а б wolfSSL - Embedded Communications Products. Архів оригіналу за 8 вересня 2017. Процитовано 21 січня 2019.
- ↑ What You Need to Know About the TLS 1.3 Protocol and wolfSSL’s SSL/TLS Libraries. www.allaboutcircuits.com (англ.). Архів оригіналу за 29 грудня 2018. Процитовано 28 грудня 2018.
- ↑ OpenSSL: Source, License. Архів оригіналу за 18 січня 2019. Процитовано 21 січня 2019.
- ↑ /License.html wolfSSL - License. Архів оригіналу за 22 січня 2019. Процитовано 21 січня 2019.
- ↑ MySQL, Building MySQL with Support for Secure Connections. Архів оригіналу за 6 липня 2017. Процитовано 21 січня 2019.
- ↑ wolfSSL - Docs|CyaSSL Manual — Chapter 4 (Features). Архів оригіналу за 29 травня 2015. Процитовано 21 січня 2019.
- ↑ «wolfSSL 3.6.6 is Now Available» [Архівовано 14 березня 2017 у Wayback Machine.].
- ↑ wolfSSL - Docs|wolfSSL Manual — Chapter 10 (wolfCrypt Usage Reference). Архів оригіналу за 3 липня 2017. Процитовано 21 січня 2019.
- ↑ Kerberos: The Network Authentication Protocol. Архів оригіналу за 5 серпня 2019. Процитовано 21 січня 2019.
- ↑ а б CryptoLabs[недоступне посилання з червня 2019]
- ↑ wolfSSL - wolfSSL with Intel® SGX. Архів оригіналу за 13 січня 2019. Процитовано 21 січня 2019.
- ↑ GNU License. Архів оригіналу за 8 лютого 2010. Процитовано 21 січня 2019.
- wolfSSL/CyaSSL Homepage
- wolfSSL Now With ChaCha20 and Poly1305 [Архівовано 23 березня 2019 у Wayback Machine.]