Відкрити головне меню

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 або комерційна ліцензія
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

(сімейства процесорів 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-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 підтримується
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 біт
Алгоритми MAC
Пристрій 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]

Див. такожРедагувати

ПриміткиРедагувати

ПосиланняРедагувати