wolfSSL (более раннее название: CyaSSL, or yet another SSL) - это небольшая, портативная, встроенная библиотека SSL / TLS, предназначенная для разработчиков встраиваемых систем. Это реализация TLS с открытым исходным кодом (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3 и 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/CyaSSL/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+ включает шифрование открытым ключом NTRUNTRU CryptoLabs. Добавление 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 (ARM Cortex-M4 core)ВсеВсеВсеВсеSTMicroelectronics STM32 F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)ВсеВсеCavium NITROX (процессоры III/V PX)ВсеMicrochip PIC32 MX/MZ (встраиваемое подключение)ВсеВсеВсеTexas Instruments TM4C1294 (ARM Cortex-M4F)ВсеВсеВсеВсеВсеNordic NRF51 (Series SoC family, 32-bit ARM Cortex M0 processor core)128-bitARMv8ВсеВсеВсеIntel QuickAssist TechnologyВсеВсеFreescale NXP LTCВсеВсеВсеВсеВсе "Все" означает, что поддерживаются размеры блоков 128, 192 и 256 бит. +Режимы шифрования DES/3DES DeviceDES-CBCDES-ECB3DES-CBCFreescale Coldfire SEC (NXP MCF547X и MCF548X)64 бит192 битFreescale Kinetis MMCAU K50, K60, K70 и K80 (ядро ARM Cortex-M4)64 бит192 битSTMicroelectronics STM32 F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)64 бит64 бит (кодирование)192 битCavium NITROX (Процессоры III/V PX)192 битMicrochip PIC32 MX/MZ (Встраиваемое подключение)64 бит192 битTexas Instruments TM4C1294 (ARM Cortex-M4F)64 бит192 бит +Потоковые шифрыУстройствоRC4ChaCha20AVX1/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 (ядро ARM Cortex-M4)ПоддерживаетсяПоддерживаетсяПоддерживаетсяSTMicroelectronics STM32 F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)ПоддерживаетсяПоддерживается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 Technology512 - 4096 бит128, 256 битFreescale NXP LTC512 - 4096 бит128, 256 бит128, 256 бит256 бит256 бит +Алгоритмы MAC УстройствоHMAC-MD5HMAC-SHA1HMAC-SHA2HMAC-SHA256SHA-3Poly1305AVX1/AVX2 (Intel and AMD x86)ПоддерживаетсяCavium NITROX (Процессоры III/V PX)ПоддерживаетсяПоддерживаетсяПоддерживаетсяПоддерживаетсяMicrochip PIC32 MX/MZ (Встраиваемое подключение)ПоддерживаетсяПоддерживаетсяПоддерживаетсяIntel QuickAssist TechnologyПоддерживаетсяПоддерживается +Генерация случайных чиселУстройствоRNGSTMicroelectronics STM32 F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)ПоддерживаетсяCavium NITROX (III/V PX processors)ПоддерживаетсяNordic NRF51 (Series SoC family, 32-bit ARM Cortex M0 processor core)Поддерживается
Лицензирование wolfSSL - это ПО с открытым исходным кодом, распространяемое по лицензии GNU General Public License GPLv2.
См. также Transport Layer Security :en:Comparison of TLS implementations :en:Comparison of cryptography libraries GnuTLS Network Security Services OpenSSL
Примечания
Ссылки wolfSSL/CyaSSL Homepage wolfSSL Now With ChaCha20 and Poly1305
Категория:Библиотеки Си Категория:Криптографическое программное обеспечение