| Тип | Бібліотека |
|---|---|
| Розробник | 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]
Додаткові зауваження до протоколів:
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 підтримує такі перевірені елементи:
У наведених нижче таблицях перераховані можливості 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]