wolfSSL
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]
Тип | Бібліотека |
---|---|
Розробник | Todd Ouska |
Перший випуск | 19 лютого 2006[1] |
Репозиторій | github.com/wolfSSL/wolfssl |
Операційна система | багатоплатформне ПЗ |
Мова програмування | мова Сі |
Ліцензія | GNU General Public License або комерційна ліцензія |
Вебсайт | www.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.[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 використовує такі криптографічні бібліотеки:
wolfCrypt
За замовчуванням, 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] (де його можна включити за допомогою опції збірки).
NTRU
CyaSSL+ включає шифрування відкритим ключем NTRU[11]. Додавання NTRU в CyaSSL+ стало результатом партнерства між компаніями yaSSL і Security Innovation.[11] NTRU добре працює в мобільних та вбудованих системах, завдяки зменшеній кількості біт, необхідних для забезпечення такого ж рівня безпеки, як і в інших системах з відкритим ключем. Крім того, не підтверджено, що він вразливий для квантових атак. У пакеті CyaSSL+ доступні кілька наборів шифрів, що використовують NTRU, включаючи AES-256, RC4 і HC-128.
SGX
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
(сімейства процесорів Xeon і Core) |
усі | усі | усі | усі | усі |
Freescale
Cryptographic Accelerator and Assurance Module (CAAM) |
усі | усі | усі | усі | |
Freescale Coldfire SEC
(NXP MCF547X і MCF548X) |
усі | ||||
Freescale Kinetis MMCAU
K50, K60, K70, і K80 (ядро Cortex-M4 компанії ARM) |
усі | усі | усі | усі | |
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ядро Cortex-М3/M4 компанії ARM) |
усі | усі | |||
Cavium NITROX
(процесори III/V PX) |
усі | ||||
Microchip PIC32 MX/MZ
(Вбудоване підключення) |
усі | усі | усі | ||
Texas Instruments TM4C1294
(ARM Cortex-M4F) |
усі | усі | усі | усі | усі |
Nordic NRF51
(сімейство Series SoC, 32-бітне ядро Cortex-М0 компанії ARM) |
128-біт | ||||
ARMv8 Архівовано 11 листопада 2011 у Wayback Machine. | усі | усі | усі | ||
Intel QuickAssist Technology | усі | усі | |||
Freescale NXP LTC | усі | усі | усі | усі | усі |
"Усі" означає, що підтримуються розміри блоків 128, 192 і 256 біт.
Пристрій | DES-CBC | DES-ECB | 3DES-CBC |
---|---|---|---|
Freescale Coldfire SEC
(NXP MCF547X і MCF548X) |
64 біт | 192 біт | |
Freescale Kinetis MMCAU
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
(Процесори III/V PX) |
192 біт | ||
Microchip PIC32 MX/MZ
(Вбудоване підключення) |
64 біт | 192 біт | |
Texas Instruments TM4C1294
(ядро Cortex-М4F компанії ARM) |
64 біт | 192 біт |
Пристрій | RC4 | Salsa20 |
---|---|---|
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 (ядро Cortex-М4 компанії ARM) |
підтримується | підтримується | підтримується | |||
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ядро Cortex-М3/М4 компанії ARM) |
підтримується | підтримується | ||||
Microchip PIC32 MX/MZ
(Вбудоване підключення) |
підтримується | підтримується | підтримується | |||
ARMv8 Архівовано 11 листопада 2011 у Wayback Machine. | підтримується | |||||
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 i AMD x86) |
підтримується | |||||
Cavium NITROX
(Процесори III/V PX) |
підтримується | підтримується | підтримується | підтримується | ||
Microchip PIC32 MX/MZ
(Вбудоване підключення) |
підтримується | підтримується | підтримується | |||
Intel QuickAssist Technology | підтримується | підтримується |
Пристрій | RNG |
---|---|
STMicroelectronics STM32
F1, F2, F4, L1, W Series (ядро Cortex-М3/М4 компанії ARM) |
підтримується |
Cavium NITROX
(процесори III/V PX) |
підтримується |
Nordic NRF51
(сімейство Series SoC, 32-бітне ядро Cortex-М0 компанії ARM) |
підтримується |
Ліцензування
wolfSSL - це ПЗ з відкритим вихідним кодом, яке розповсюджується за ліцензією GNU General Public License GPLv2.[13]
Див. також
Примітки
- wolfSSL ChangeLog.
- 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
- /License.html wolfSSL - License
- MySQL, Building MySQL with Support for Secure Connections. Архів оригіналу за 6 липня 2017. Процитовано 21 січня 2019.
- 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
- CryptoLabs[недоступне посилання з червня 2019]
- wolfSSL - wolfSSL with Intel® SGX
- GNU License