MbedTLS (MbedTLS)

Перейти к навигации Перейти к поиску
MbedTLS
Тип библиотека функций и шифрующее программное обеспечение
Написана на Си
Операционная система кроссплатформенность
Первый выпуск 1 ноября 2006
Последняя версия
Репозиторий github.com/Mbed-TLS/mbed…
Лицензия Apache License 2.0[2][3]
Сайт trustedfirmware.org/… (англ.)

MbedTLS (прежние названия — PolarSSL и XySSL) — это реализация протоколов TLS и SSL, а также соответствующих криптографических алгоритмов и кода поддержки. MbedTLS распространяется по лицензии Apache версии 2.0. На веб-сайте заявлено, что Mbed TLS стремится быть «простым для понимания, использования, интеграции и расширения» (англ. easy to understand, use, integrate and expand).

Библиотека PolarSSL является официальным продолжением библиотеки XySSL, которая была создана французом, «белым хакером» Кристофом Девином (фр. Christophe Devine) и опубликована 1 ноября 2006 года под лицензиями GNU GPL v2 и BSD. В 2008 году Кристоф Девин больше не мог поддерживать XySSL и позволил Полу Баккеру (англ. Paul Bakker) создать официальный форк под названием PolarSSL[4].

В 2011 году правительство Нидерландов одобрило интеграцию OpenVPN и PolarSSL, получившую название OpenVPN-NL. Эта версия OpenVPN была одобрена для использования для защиты правительственных коммуникаций Нидерландов до уровня «ограниченный» (Restricted)[5].

С выпуском версии 1.3.10 PolarSSL был переименован в Mbed TLS, чтобы лучше показать его соответствие экосистеме Mbed[6].

В ноябре 2014 года PolarSSL была приобретена компанией ARM Holdings[7].

Начиная с версии 2.1.0, библиотека стала доступна как по лицензии GPL v2, так и по лицензии Apache v2.0[8].

В 2017 году в Mbed TLS была обнаружена ошибка в реализации обработки криптографических ключей на базе эллиптических кривых secp224k1, получившая индекс CVE-2017-2784. В версии 2.4.2 уязвимость устранена[9]

Начиная с версии 2.17, Mbed TLS лицензируется исключительно по лицензии Apache 2.0[10][11].

В 2020 году Mbed TLS присоединена к проекту TrustedFirmware[12].

Библиотека

[править | править код]

Основная библиотека SSL написана на языке программирования C и реализует модуль SSL, основные криптографические функции и предоставляет различные служебные функции. В отличие от OpenSSL и других реализаций TLS, Mbed TLS похож на wolfSSL в том смысле, что он предназначен для небольших встраиваемых устройств, при этом минимальный полный стек TLS требует менее 60 КБ программного пространства и менее 64 КБ ОЗУ. Он также является модульным: каждый компонент, например криптографическая функция, может использоваться независимо от остальной части платформы. Также доступны версии для Microsoft Windows и Linux . Поскольку Mbed TLS написан на языке программирования C без внешних зависимостей, он работает на большинстве операционных систем и архитектур.

Начиная с версии 1.3.0, библиотека имеет уровни абстракции для распределения памяти и потоковой передачи к ядру, «чтобы поддерживать лучшую интеграцию с существующими встроенными операционными системами» (англ. to support better integration with existing embedded operating systems)[13].

Приоритеты дизайна

[править | править код]

В библиотеке Mbed TLS уделено особое внимание читаемости кода, документации, автоматическим регрессионным тестам, слабосвязанному дизайну и переносимому коду[14].

Документация для разработчиков

[править | править код]

Разработчикам доступна следующая документация:

  • Проектирование высокого уровня[15]: высокоуровневое описание различных модулей внутри библиотеки с UML-диаграммами, вариантами использования и взаимодействиями в общих сценариях.
  • Документация по API[16]: Документация, сгенерированная Doxygen из заголовочных файлов библиотеки.
  • Документация исходного кода[17]: Исходный код библиотеки документирован для пояснения структур, решений и конструкций кода.

Автоматизированное тестирование

[править | править код]

Автоматизированное тестирование Mbed TLS включает в себя:

  • В исходный код включена среда тестирования, содержащая более 5000 автоматических тестов (в зависимости от количества тестов в версии библиотеки 1.3.2) для проверки регрессий и совместимости на разных платформах.
  • Сценарий совместимости (compat.sh [18]), который проверяет совместимость связи SSL с OpenSSL и GnuTLS .
  • Система непрерывной интеграции на базе Travis CI и Jenkins[19].

Использование

[править | править код]

Mbed TLS используется в качестве компонента SSL в крупных проектах с открытым исходным кодом:

Mbed TLS в настоящее время доступен для большинства операционных систем, включая Linux, Microsoft Windows, OS X, OpenWrt, Android, iOS, RISC OS[20] и FreeRTOS. Поддерживаемые наборы микросхем включают как минимум ARM, x86, PowerPC, MIPS.[источник не указан 374 дня]

Mbed TLS поддерживает ряд различных криптографических алгоритмов.

Криптографические хэш-функции:
MD2, MD4, MD5, RIPEMD-160, SHA-1, SHA-2, SHA-3
Режимы MAC:
СMAC[англ.], HMAC
Шифры:
AES, ARIA, Blowfish, Camellia, ChaCha, DES, RC4, Triple DES, XTEA
Режимы шифрования:
ECB, CBC, CFB, CTR, OFB, XTS
Аутентифицированные режимы шифрования:
CCM[англ.], GCM, упаковка ключей[англ.] NIST, ChaCha20-Poly1305[англ.]
Функция формирования ключа
HKDF[англ.]
Функция растягивания ключа[англ.]
PBKDF2, PKCS #5 PBE2, PKCS #12 формирование ключа
Криптография с открытым ключом
RSA, обмен ключами Диффи-Хеллмана, Криптография на эллиптических кривых (ECC), Эллиптическая кривая Диффи–Хеллмана (ECDH), Эллиптическая кривая DSA (ECDSA), Эллиптическая кривая J-PAKE[англ.]

Примечания

[править | править код]
  1. Release 3.6.2 — 2024.
  2. Open Source / Apache 2.0 // How to get mbed TLS?
  3. https://github.com/Mbed-TLS/mbedtls/blob/development/LICENSE
  4. About us (англ.). PolarSSL. Дата обращения: 8 мая 2014. Архивировано 2 июля 2014 года.
  5. Inzetadviezen OpenVPN-NL : [нид.] : [арх. 29 января 2013]. — AIVD.
  6. Bakker, P. mbed TLS 1.3.10 released : [арх. 9 февраля 2015] // PolarSSL. — 2015. — 8 февраля.
  7. PolarSSL is now a part of ARM (англ.). PolarSSL Blog. PolarSSL (24 ноября 2014). Дата обращения: 11 декабря 2023. Архивировано из оригинала 24 ноября 2014 года.
  8. Download (англ.). Mbed TLS. Arm. Дата обращения: 5 апреля 2021. Архивировано из оригинала 24 марта 2019 года.
  9. Критическая уязвимость в криптографической библиотеке MbedTLS (PolarSSL) : [арх. 24 апреля 2017] // OpenNET. — 2017. — 20 апреля.
  10. Download archive. Mbed TLS. Arm. Дата обращения: 5 апреля 2021. Архивировано 15 мая 2021 года.
  11. History for LICENSE. GitHub. Arm. Дата обращения: 5 апреля 2021.
  12. Hafnium, MbedTLS, PSA Crypto join the Trusted Firmware Project (англ.). TrustedFirmware. Дата обращения: 5 апреля 2021. Архивировано 12 августа 2020 года.
  13. New features in PolarSSL 1.3.0 – Tech Updates. Polarssl.org. Дата обращения: 8 мая 2014. Архивировано 8 мая 2014 года.
  14. PolarSSL Features: easy to use SSL library and well-documented (англ.). Polarssl. Дата обращения: 8 мая 2014. Архивировано 2 июля 2014 года.
  15. PolarSSL High Level Design. Polarssl.org. Дата обращения: 8 мая 2014. Архивировано 2 июля 2014 года.
  16. v1.3.6 source code documentation – API Documentation. PolarSSL. Дата обращения: 8 мая 2014. Архивировано 25 июня 2014 года.
  17. polarssl/polarssl — GitHub. Github.com. Дата обращения: 8 мая 2014.
  18. executable file. mbedtls/compat.sh at development · ARMmbed/mbedtls · GitHub. Github.com (26 апреля 2020). Дата обращения: 5 апреля 2021. Архивировано 23 марта 2019 года.
  19. Mbed TLS continuous integration. Trusted Firmware. Trusted Firmware. Дата обращения: 5 апреля 2021. Архивировано 27 января 2021 года.
  20. Connecting with the 21st century. RISC OS Open. Steve Revill. Дата обращения: 19 апреля 2022. Архивировано 20 января 2023 года.