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
Тип Бібліотека
Розробник Todd Ouska
Перший випуск 19 лютого 2006[1]
Операційна система багатоплатформне ПЗ
Мова програмування мова Сі
Ліцензія GNU General Public License або комерційна ліцензія
Репозиторій github.com/wolfSSL/wolfssl
Вебсайт 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 досягла надзвичайного поширення об'ємом в мільйони копій.

Протоколи ред.

Докладніше: TLS

Легка 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
Пристрій 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/3DES
Пристрій 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 біт
Алгоритми MAC
Пристрій 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]

Див. також ред.

Примітки ред.

  1. wolfSSL ChangeLog. Архів оригіналу за 16 березня 2016. Процитовано 21 січня 2019.
  2. а б wolfSSL - Embedded Communications Products. Архів оригіналу за 8 вересня 2017. Процитовано 21 січня 2019.
  3. What You Need to Know About the TLS 1.3 Protocol and wolfSSL’s SSL/TLS Libraries. www.allaboutcircuits.com (англ.). Архів оригіналу за 29 грудня 2018. Процитовано 28 грудня 2018.
  4. OpenSSL: Source, License. Архів оригіналу за 18 січня 2019. Процитовано 21 січня 2019.
  5. /License.html wolfSSL - License. Архів оригіналу за 22 січня 2019. Процитовано 21 січня 2019.
  6. MySQL, Building MySQL with Support for Secure Connections. Архів оригіналу за 6 липня 2017. Процитовано 21 січня 2019.
  7. wolfSSL - Docs|CyaSSL Manual — Chapter 4 (Features). Архів оригіналу за 29 травня 2015. Процитовано 21 січня 2019.
  8. «wolfSSL 3.6.6 is Now Available» [Архівовано 14 березня 2017 у Wayback Machine.].
  9. wolfSSL - Docs|wolfSSL Manual — Chapter 10 (wolfCrypt Usage Reference). Архів оригіналу за 3 липня 2017. Процитовано 21 січня 2019.
  10. Kerberos: The Network Authentication Protocol. Архів оригіналу за 5 серпня 2019. Процитовано 21 січня 2019.
  11. а б CryptoLabs[недоступне посилання з червня 2019]
  12. wolfSSL - wolfSSL with Intel® SGX. Архів оригіналу за 13 січня 2019. Процитовано 21 січня 2019.
  13. GNU License. Архів оригіналу за 8 лютого 2010. Процитовано 21 січня 2019.

Посилання ред.