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.[источник не указан 980 дней]

Алгоритмы

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 4.2.0 — 2026.
  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 года.

Ссылки

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.