wolfSSL

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
Тип Библиотека
Разработчик Тодд Оуска
Написана на язык Си
Операционная система кроссплатформенное ПО
Первый выпуск февраль 19, 2006 (2006-02-19)[1]
Последняя версия
Лицензия GNU General Public License или Лицензия на коммерческое распространение
Сайт 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.[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 для использования аппаратного шифрования различных устройств с различными алгоритмами.

Режимы шифрования 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 (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-bit
ARMv8 Все Все Все
Intel QuickAssist Technology Все Все
Freescale NXP LTC Все Все Все Все Все

"Все" означает, что поддерживаются размеры блоков 128, 192 и 256 бит.

Режимы шифрования DES/3DES
Device DES-CBC DES-ECB 3DES-CBC
Freescale 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 бит
Потоковые шифры
Устройство RC4 ChaCha20
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 (ядро 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 Поддерживается Поддерживается
Ключевые операции: генерация и обмен, эллиптическая криптография
Устройство 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 and AMD x86)

Поддерживается
Cavium NITROX

(Процессоры III/V PX)

Поддерживается Поддерживается Поддерживается Поддерживается
Microchip PIC32 MX/MZ

(Встраиваемое подключение)

Поддерживается Поддерживается Поддерживается
Intel QuickAssist Technology Поддерживается Поддерживается
Генерация случайных чисел
Устройство RNG
STMicroelectronics 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.[14]

См. также

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.