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