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.[3][4]
Предшественник 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.[5] В качестве альтернативы, yaSSL получил двойную коммерческую и GPL лицензию.[6] yaSSL предложил более современный API, поддержку для коммерческого ПО и был дополнен уровнем совместимости с OpenSSL.[3]MySQL стала первым крупным клиентом wolfSSL/CyaSSL/yaSSL.[7] Благодаря поддержке MySQL, yaSSL достигла чрезвычайно больших объемов распространения в миллионы копий.
Протоколы
Легкая SSL-библиотека wolfSSL реализует следующие протоколы:[8]
- 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, но его можно включить при помощи параметра времени компиляции.[9]
Алгоритмы
wolfSSL использует следующие криптографические библиотеки:
wolfCrypt
По умолчанию, wolfSSL использует криптографические сервисы библиотеки wolfCrypt.[10] 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[11] (где его можно включить с помощью опции сборки).
NTRU
CyaSSL+ включает шифрование открытым ключом NTRU[12]. Добавление NTRU в CyaSSL+ стало результатом партнерства между компаниями yaSSL и Security Innovation.[12] NTRU хорошо работает в мобильных и встраиваемых системах, благодаря уменьшенному количеству бит, необходимых для обеспечения такой же безопасности, как и в других системах с открытым ключом. Кроме того, не подтверждено, что он уязвим для квантовых атак. В пакете CyaSSL+ доступны несколько наборов шифров, использующих NTRU, включая AES-256, RC4 и HC-128.
SGX
wolfSSL поддерживает использование Intel SGX (Software Guard Extensions)[13]. Intel SGX позволяет уменьшить площадь атаки и, как было показано, обеспечивает более высокий уровень безопасности для выполнения кода без существенного негативного влияния на производительность.
Поддерживаемые платформы аппаратного ускорения
Поддержка проверенных элементов
В настоящее время, wolfSSL поддерживает следующие проверенные элементы:
- STSAFE
- ATECC508A
Поддержка аппаратного шифрования
В нижеприведенных таблицах перечислены возможности wolfSSL для использования аппаратного шифрования различных устройств с различными алгоритмами.
"Все" означает, что поддерживаются размеры блоков 128, 192 и 256 бит.
Лицензирование
wolfSSL - это ПО с открытым исходным кодом, распространяемое по лицензии GNU General Public License GPLv2.[14]
См. также
- Transport Layer Security
- en:Comparison of TLS implementations
- en:Comparison of cryptography libraries
- GnuTLS
- Network Security Services
- OpenSSL
Примечания
- ↑wolfSSL ChangeLog. Дата обращения: 13 января 2019. Архивировано 16 марта 2016 года.
- ↑Release 5.9.1 — 2026.
- ↑ 12wolfSSL - Embedded Communications Products. Дата обращения: 13 января 2019. Архивировано 8 сентября 2017 года.
- ↑What You Need to Know About the TLS 1.3 Protocol and wolfSSL’s SSL/TLS Libraries (англ.). www.allaboutcircuits.com. Дата обращения: 28 декабря 2018. Архивировано 29 декабря 2018 года.
- ↑OpenSSL: Source, License. Дата обращения: 13 января 2019. Архивировано 18 января 2019 года.
- ↑wolfSSL - License. Дата обращения: 13 января 2019. Архивировано 12 июля 2017 года.
- ↑MySQL, Building MySQL with Support for Secure Connections. Дата обращения: 13 января 2019. Архивировано из оригинала 6 июля 2017 года.
- ↑wolfSSL - Docs | CyaSSL Manual - Chapter 4 (Features). Дата обращения: 13 января 2019. Архивировано 29 мая 2015 года.
- ↑"wolfSSL 3.6.6 is Now Available"Архивная копия от 14 марта 2017 на Wayback Machine.
- ↑wolfSSL - Docs | wolfSSL Manual - Chapter 10 (wolfCrypt Usage Reference). Дата обращения: 13 января 2019. Архивировано 3 июля 2017 года.
- ↑Kerberos: The Network Authentication Protocol. Дата обращения: 13 января 2019. Архивировано 5 августа 2019 года.
- ↑ 12NTRU CryptoLabsАрхивировано 2 февраля 2013 года.
- ↑wolfSSL — wolfSSL with Intel® SGX. Дата обращения: 13 января 2019. Архивировано 13 января 2019 года.
- ↑GNU License. Дата обращения: 13 января 2019. Архивировано 24 июля 2010 года.