wolfSSL — это небольшая портативная встроенная библиотека SSL/TLS, предназначенная для использования разработчиками встраиваемых систем. Это реализация TLS с открытым исходным кодом (SSL 3.0, TLS 1.0, 1.1, 1.2, 1.3 и DTLS 1.0, 1.2 и 1.3) , написанная на языке программирования C. Он включает клиентские библиотеки SSL/TLS и реализацию сервера SSL/TLS, а также поддержку нескольких API, включая те, которые определены SSL и TLS . wolfSSL также включает интерфейс совместимости OpenSSL с наиболее часто используемыми функциями OpenSSL. [4] [5]
Предшественник wolfSSL, yaSSL — это библиотека SSL на основе C++ для встроенных сред и операционных систем реального времени с ограниченными ресурсами.
wolfSSL в настоящее время доступен для Microsoft Windows , Linux , macOS , Solaris , ESP32 , ESP8266 , Threadx , VxWorks , FreeBSD , NetBSD , OpenBSD , Embedded Linux , Yocto Project , OpenEmbedded , WinCE , Haiku , OpenWrt , iPhone , Android , Wii и GameCube. благодаря поддержке DevKitPro, QNX , MontaVista , варианты Tron , NonStop OS , 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 и PikeOS . [6]
Возникновение yaSSL, или еще одного SSL, относится к 2004 году. OpenSSL был доступен в то время и имел двойную лицензию: OpenSSL License и SSLeay . [7] yaSSL, в качестве альтернативы, был разработан и лицензирован как по коммерческой лицензии, так и по GPL. [8] yaSSL предлагал более современный API, поддержку разработчиков коммерческого стиля и был дополнен уровнем совместимости OpenSSL. [4] Первым крупным пользователем wolfSSL/CyaSSL/yaSSL был MySQL . [9] Благодаря объединению с MySQL, yaSSL достиг чрезвычайно высоких объемов распространения, исчисляемых миллионами.
В феврале 2019 года к проекту wolfSSL присоединился Дэниел Стенберг , создатель cURL . [10]
Облегченная библиотека SSL wolfSSL реализует следующие протоколы: [11]
Примечания к протоколу:
wolfSSL использует следующие библиотеки шифрования:
По умолчанию wolfSSL использует криптографические службы, предоставляемые wolfCrypt. [13] 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 , генерация случайных чисел, поддержка больших целых чисел и кодирование/декодирование по основанию 16/64. Также включен экспериментальный шифр под названием Rabbit , общедоступный программный поточный шифр из проекта ЕС eSTREAM. Rabbit потенциально полезен тем, кто шифрует потоковое мультимедиа в высокопроизводительных средах с высокими требованиями.
wolfCrypt также включает поддержку последних алгоритмов Curve25519 и Ed25519 .
wolfCrypt выступает в качестве внутренней реализации шифрования для нескольких популярных программных пакетов и библиотек, включая MIT Kerberos [14] (где его можно включить с помощью опции сборки).
CyaSSL+ включает шифрование с открытым ключом NTRU [15] . Добавление NTRU в CyaSSL+ стало результатом партнерства yaSSL и Security Innovation. [15] NTRU хорошо работает в мобильных и встроенных средах благодаря уменьшенному размеру битов, необходимому для обеспечения той же безопасности, что и другие системы с открытым ключом. Кроме того, неизвестно, уязвимо ли оно для квантовых атак. С CyaSSL+ доступно несколько наборов шифров, использующих NTRU, включая AES-256, RC4 и HC-128.
wolfSSL поддерживает следующие элементы безопасности :
wolfSSL поддерживает следующие аппаратные технологии:
В следующих таблицах перечислена поддержка wolfSSL использования аппаратного шифрования различных устройств с различными алгоритмами.
- «Все» обозначает поддерживаемые размеры блоков 128, 192 и 256 бит.
wolfSSL поддерживает следующие сертификаты:
WolfSSL имеет двойную лицензию: