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.

Попередник 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. Як альтернатива yaSSL отримав подвійну комерційну і GPL ліцензію. yaSSL запропонував більш сучасний API, підтримку для комерційного ПЗ і був доповнений рівнем сумісності з OpenSSL. MySQL стала першим великим клієнтом wolfSSL/yaSSL/yaSSL. Завдяки підтримці MySQL, yaSSL досягла надзвичайного поширення об'ємом в мільйони копій.

Протоколи

Легка SSL-бібліотека wolfSSL реалізує наступні протоколи: 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, але його можна включити за допомогою параметру часу компіляції.«wolfSSL 3.6.6 is Now Available» .

Алгоритми wolfSSL використовує такі криптографічні бібліотеки:

wolfCrypt За замовчуванням, wolfSSL використовує криптографічні сервіси бібліотеки wolfCrypt. 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 (де його можна включити за допомогою опції збірки).

NTRU CyaSSL+ включає шифрування відкритим ключем NTRUCryptoLabs. Додавання NTRU в CyaSSL+ стало результатом партнерства між компаніями yaSSL і Security Innovation. NTRU добре працює в мобільних та вбудованих системах, завдяки зменшеній кількості біт, необхідних для забезпечення такого ж рівня безпеки, як і в інших системах з відкритим ключем. Крім того, не підтверджено, що він вразливий для квантових атак. У пакеті CyaSSL+ доступні кілька наборів шифрів, що використовують NTRU, включаючи AES-256, RC4 і HC-128.

SGX wolfSSL підтримує використання Intel SGX (Software Guard Extensions). Intel SGX дозволяє зменшити площу атаки і, як було показано, забезпечує вищий рівень безпеки для виконання коду без істотного негативного впливу на продуктивність.

Підтримувані платформи апаратного прискорення

Підтримка перевірених елементів В даний час, wolfSSL підтримує такі перевірені елементи:

STSAFE ATECC508A

Підтримка апаратного шифрування У наведених нижче таблицях перераховані можливості wolfSSL для використання апаратного шифрування різних пристроїв з різними алгоритмами.

+Режими шифрування AESПристрійAES-GCMAES-CCMAES-CBCAES-ECBAES-CTRIntel 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 усіусіусіIntel QuickAssist Technology усіусіFreescale NXP LTC усіусіусіусіусі «Усі» означає, що підтримуються розміри блоків 128, 192 і 256 біт.

+Режими шифрування DES/3DESПристрійDES-CBCDES-ECB3DES-CBCFreescale 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 біт +Потокові шифриПристрійRC4Salsa20AVX1/AVX2 (Intel і AMD x86)підтримуєтьсяCavium NITROX (Процесори III/V PX)2048 біт щонайбільше +Підтримка хешуванняПристрійMD5SHA1SHA2SHA-256SHA-384SHA-512AVX1/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 підтримуєтьсяIntel QuickAssist Technology підтримуєтьсяпідтримуєтьсяпідтримуєтьсяFreescale NXP LTC підтримуєтьсяпідтримується +Ключові операції: генерація і обмін, еліптична криптографіяПристрійRSAECCECC-DHECurve25519Ed25519Cavium NITROX (Процесори III/V PX)512-4096 бітNIST Prime 192, 224, 256, 384, 521Microchip /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 біт +Алгоритми MACПристрійHMAC-MD5HMAC-SHA1HMAC-SHA2HMAC-SHA256SHA-3Poly1305AVX1/AVX2 (Intel i AMD x86)підтримуєтьсяCavium NITROX (Процесори III/V PX)підтримуєтьсяпідтримуєтьсяпідтримуєтьсяпідтримуєтьсяMicrochip PIC32 MX/MZ (Вбудоване підключення)підтримуєтьсяпідтримуєтьсяпідтримуєтьсяIntel QuickAssist Technology підтримуєтьсяпідтримується +Генерація випадкових чиселПристрійRNGSTMicroelectronics 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.

Див. також Transport Layer Security

GnuTLS Network Security Services OpenSSL

Примітки

Посилання wolfSSL/CyaSSL Homepage wolfSSL Now With ChaCha20 and Poly1305