WolfSSL

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 досягла надзвичайного поширення об'ємом в мільйони копій.

Протоколи

Докладніше: 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.

Посилання