17 Апр, 2023

Протокол MQTT

Penetration Testing as a service (PTaaS)

Tests security measures and simulates attacks to identify weaknesses.

Что такое протокол MQTT? 

MQTT (передача телеметрии в очереди сообщений) - это облегченный протокол обмена сообщениями, предназначенный для устройств с ограниченной вычислительной мощностью, памятью и пропускной способностью, что делает его идеальным для Интернета вещей (IoT) и межмашинных коммуникаций (M2M). MQTT - это протокол публикации и подписки, по которому устройства могут публиковать сообщения в разделах и подписываться на темы для получения сообщений. 

Протокол MQTT работает по модели клиент-сервер, где клиенты MQTT (такие как устройства IoT или приложения) подключаются к брокеру MQTT (также известному как сервер MQTT) для отправки и получения сообщений. Брокер MQTT отвечает за получение сообщений от клиентов и пересылку их подписанным клиентам на основе тем, к которым они проявили интерес. 

Ключевые моменты протокола MQTT 

Вот ключевые моменты протокола MQTT, подробно объясненные: 

• Модель публикации-Подписки: MQTT использует модель публикации-подписки, при которой устройства могут публиковать сообщения в разделах, а другие устройства могут подписаться на получение этих сообщений. Такое разделение отправителя и получателя обеспечивает эффективную и масштабируемую связь между несколькими устройствами без необходимости в прямых соединениях "точка-точка". 

• Легкий вес: MQTT разработан как облегченный протокол, что делает его подходящим для устройств с ограниченными ресурсами, таких как маломощные микроконтроллеры или датчики. Он использует небольшую двоичную полезную нагрузку и минимизирует накладные расходы протокола, что делает его эффективным для связи по ненадежным сетям или с низкой пропускной способностью. 

• Уровни качества обслуживания (QoS): MQTT поддерживает различные уровни качества обслуживания (QoS) для доставки сообщений, позволяя устройствам выбирать необходимый им уровень надежности и гарантий. MQTT поддерживает три уровня QoS: QoS 0 (не более одного раза), QoS 1 (не менее одного раза) и QoS 2 (ровно один раз). Выбор уровня QoS зависит от требований приложения к надежности доставки сообщений. 

• Протокол, ориентированный на подключение: MQTT - это протокол, ориентированный на подключение, который означает, что устройства устанавливают постоянное соединение с брокером MQTT, и сообщения отправляются и принимаются по этому соединению. Это обеспечивает эффективную связь с низкими накладными расходами и уменьшает необходимость в частом установлении соединений, которые могут быть ресурсоемкими. 

• Безопасность: MQTT поддерживает различные механизмы безопасности, включая шифрование TLS (Transport Layer Security) для безопасного обмена данными по сети. Это гарантирует, что сообщения, которыми обмениваются устройства, зашифрованы, предотвращая несанкционированный доступ или подделку данных. 

• Сохраненные сообщения: MQTT позволяет сохранять сообщения, которые хранятся на брокере и доставляются новым подписчикам при их подключении. Это позволяет устройствам получать последнюю информацию о состоянии или конфигурации, даже если они не были подключены к Сети, когда сообщение было первоначально опубликовано. 

• Последняя воля и завещание (LWT): MQTT поддерживает функцию "Последняя воля и завещание" (LWT), которая позволяет устройствам указывать сообщение, которое будет опубликовано брокером, если устройство неожиданно отключится от сети. Это позволяет устройствам уведомлять другие устройства или приложения об их неожиданном отключении или сбое. 

• Обмен сообщениями по темам: MQTT использует обмен сообщениями на основе тем, где сообщения публикуются в разделах, и устройства могут подписаться на получение сообщений из определенных тем. Темы действуют как каналы сообщений, и устройства могут подписываться на несколько тем или использовать подстановочные знаки для подписки на несколько тем с помощью одной подписки. 

• Масштабируемость: MQTT спроектирован таким образом, чтобы быть масштабируемым и обеспечивать связь между большим количеством устройств или клиентов. Брокеры MQTT могут обрабатывать тысячи или даже миллионы одновременных подключений и сообщений, что делает его подходящим для крупномасштабных развертываний Интернета вещей. 

• Гибкость: MQTT - это гибкий протокол, который может использоваться в различных сценариях и средах. Он поддерживает различные полезные нагрузки сообщений, включая двоичные данные, JSON или пользовательские форматы данных, и может использоваться по различным транспортным протоколам, таким как TCP / IP, SSL / TLS или WebSockets. 

Таким образом, MQTT - это облегченный протокол обмена сообщениями, который следует модели публикации-подписки и предназначен для эффективной и надежной связи между устройствами с ограниченными ресурсами. Он поддерживает различные уровни качества обслуживания, предоставляет функции безопасности, позволяет обмениваться тематическими сообщениями и обладает высокой масштабируемостью и гибкостью для различных приложений Интернета вещей. 

Происхождение протокола MQTT 

Протокол MQTT (передача телеметрии в очереди сообщений) был первоначально разработан доктором Энди Стэнфордом-Кларком из IBM и Арленом Ниппером из Arcom (ныне Cirrus Link Solutions) в 1999 году. Изначально протокол был создан для обеспечения эффективной связи между удаленными устройствами с ограниченной вычислительной мощностью и пропускной способностью, такими как датчики и исполнительные механизмы в промышленных приложениях и приложениях телеметрии. 

Потребность в облегченном протоколе обмена сообщениями, таком как MQTT, возникла из-за растущего спроса на подключение большого количества устройств к Интернету, что в конечном итоге привело к разработке концепции Интернета вещей (IoT). Многие из этих устройств, такие как датчики в промышленных условиях или системы удаленного мониторинга, имели ограниченные ресурсы с точки зрения вычислительной мощности, памяти и пропускной способности. Традиционные протоколы, такие как HTTP или TCP /IP, были слишком тяжелыми для этих устройств, что приводило к увеличению энергопотребления, накладным расходам на обработку данных и перегрузке сети. 

Доктор Энди Стэнфорд-Кларк и Арлен Ниппер признали необходимость в более эффективном протоколе обмена сообщениями, который мог бы облегчить обмен данными между этими устройствами с ограниченными ресурсами масштабируемым и надежным образом. Они совместно создали MQTT, облегченный протокол обмена сообщениями с возможностью публикации и подписки, который мог бы эффективно работать в ненадежных сетях, обрабатывать большое количество подключений и минимизировать использование полосы пропускания и ресурсов обработки. 

Первоначально протокол был известен как “Протокол SCADA (Диспетчерского управления и сбора данных) для телеметрии и удаленных приложений SCADA”, а позже был переименован в MQTT. Первоначально MQTT использовался в промышленных приложениях и приложениях телеметрии, где он нашел широкое применение благодаря своей эффективности, простоте и масштабируемости. С тех пор он стал одним из наиболее широко используемых протоколов в области Интернета вещей, с внедрением в различных отраслях промышленности, включая промышленную автоматизацию, интеллектуальную энергетику, здравоохранение, логистику, транспорт и многое другое. 

В 2013 году MQTT стал стандартом OASIS (Организация по продвижению стандартов структурированной информации), еще больше укрепив свои позиции в качестве широко признанного и принятого протокола для связи IoT. С тех пор MQTT продолжал развиваться, разрабатывая различные версии и расширения для удовлетворения растущих требований экосистемы Интернета вещей. 

Архитектура MQTT 

Протокол MQTT (передача телеметрии в очереди сообщений) соответствует архитектуре клиент-сервер, где клиенты, также известные как клиенты MQTT, взаимодействуют с центральным объектом, называемым брокером MQTT. Брокер MQTT действует как брокер сообщений, облегчая обмен сообщениями между клиентами MQTT с использованием модели публикации-подписки. Архитектура MQTT обычно включает в себя следующие компоненты: 

Клиенты MQTT: Клиенты MQTT - это конечные точки, которые взаимодействуют друг с другом с использованием протокола MQTT. Это может быть любое устройство или приложение, которое реализует протокол MQTT и может выступать как издателями, так и подписчиками. Клиенты MQTT могут быть классифицированы на два типа: 

Издатели MQTT: Издатели MQTT - это клиенты, которые отправляют сообщения брокеру MQTT с определенной темой. Они публикуют сообщения в разделах, которые представляют собой строки, представляющие канал сообщений или механизм логической адресации. 

Подписчики MQTT: Подписчики MQTT - это клиенты, которые получают сообщения от брокера MQTT на основе своей подписки на одну или несколько тем. Подписчики указывают темы, которые их интересуют, и брокер MQTT пересылает сообщения, соответствующие этим темам, соответствующим подписчикам. 

Брокер MQTT: Брокер MQTT является центральным компонентом архитектуры MQTT. Он действует как посредник сообщений, получая сообщения от издателей и пересылая их подписчикам на основе их подписок. Брокеры MQTT отвечают за управление темами, обработку клиентских подключений, управление уровнями качества обслуживания (QoS) и обеспечение надежной доставки сообщений. Брокеры MQTT также могут хранить сохраненные сообщения, которые хранятся на брокере и доставляются новым подписчикам при их подключении. 

Темы: Темы - это строки, которые представляют канал сообщения или механизм логической адресации в MQTT. Издатели отправляют сообщения по темам, а подписчики указывают темы, которые им интересны. Темы в MQTT могут быть организованы иерархическим образом, что обеспечивает гибкую и масштабируемую систему обмена сообщениями. Темы могут иметь один или несколько уровней, разделенных косой чертой (/), и могут включать подстановочные знаки для обеспечения гибких подписок. 

• Уровни качества обслуживания (QoS): MQTT поддерживает различные уровни качества обслуживания (QoS) для доставки сообщений. Издатели и подписчики могут указать желаемый уровень QoS для каждого сообщения. MQTT поддерживает три уровня QoS: 

• QoS 0 (не более одного раза): Сообщения доставляются один раз без какой-либо гарантии доставки или подтверждения. 

• QoS 1 (по крайней мере, один раз): Сообщения гарантированно будут доставлены по крайней мере один раз, но могут быть доставлены несколько раз в случае сбоев или проблем с сетью. 

• QoS 2 (ровно один раз): Сообщения гарантированно доставляются ровно один раз, что обеспечивает высочайший уровень надежности. 

Сохраненные сообщения: MQTT позволяет сохранять сообщения, которые хранятся на брокере и доставляются новым подписчикам при их подключении. Сохраненные сообщения можно использовать для хранения последней известной информации о состоянии или конфигурации, позволяя подписчикам получать самую свежую информацию, даже если они не были подключены к Сети, когда сообщение было первоначально опубликовано. 

Последняя воля и завещание (LWT): MQTT поддерживает функцию "Последняя воля и завещание" (LWT), которая позволяет клиентам указывать сообщение, которое будет опубликовано брокером, если клиент неожиданно отключится от сети. Сообщения LWT могут использоваться для уведомления других клиентов или приложений о неожиданном отключении или сбое клиента. 

Архитектура MQTT состоит из клиентов MQTT (издателей и подписчиков), которые взаимодействуют с брокером MQTT, который действует как брокер сообщений. Темы используются для адресации сообщений, а MQTT поддерживает различные уровни качества обслуживания (QoS) для доставки сообщений. MQTT также поддерживает сохраненные сообщения и функцию "Последняя воля и завещание" (LWT), что повышает его гибкость и надежность в качестве протокола обмена сообщениями для Интернета вещей и других приложений.
 

Как функционирует MQTT? 

MQTT функционирует посредством серии обменов сообщениями между клиентами MQTT (издателями и подписчиками) и брокером MQTT, следуя определенному набору правил и принципов. Вот пошаговый обзор того, как функционирует MQTT: 

Установление соединения: Клиенты MQTT устанавливают соединение с брокером MQTT, используя TCP/IP или другие поддерживаемые транспортные протоколы. Соединение может быть как постоянным, так и непостоянным, в зависимости от конфигурации. 

Идентификация клиента: При установлении соединения клиенты MQTT идентифицируют себя с помощью уникального идентификатора клиента. Идентификатор клиента используется брокером MQTT для идентификации клиентских сеансов и управления ими. 

Публикация Сообщений: Издатели MQTT (клиенты) отправляют сообщения брокеру MQTT с определенной темой. Тема - это строка, представляющая канал сообщения или механизм логической адресации. Издатели также могут указать уровень качества обслуживания (QoS) для каждого сообщения, который определяет надежность доставки сообщений. 

Подписка на темы: Подписчики MQTT (клиенты) указывают интересующие их темы и подписываются на них в MQTT broker. Подписчики также могут указать желаемый уровень QoS для каждой темы, на которую они подписаны. 

Доставка сообщений: Когда издатель отправляет сообщение в тему, брокер MQTT получает сообщение и пересылает его всем подписчикам, которые проявили интерес к этой теме. Брокер использует модель публикации-подписки на основе тем для доставки сообщений только тем подписчикам, которые подписались на соответствующие темы, сокращая сетевой трафик и повышая эффективность. 

Сохраненные сообщения: MQTT позволяет сохранять сообщения, которые хранятся на брокере и доставляются новым подписчикам при их подключении. Издатели могут указать, следует ли сохранить сообщение, и брокер сохраняет его до тех пор, пока новый подписчик не проявит интерес к соответствующей теме. 

Последняя воля и завещание (LWT): MQTT поддерживает функцию "Последняя воля и завещание" (LWT), которая позволяет клиентам указывать сообщение, которое будет опубликовано брокером, если клиент неожиданно отключится от сети. Сообщения LWT могут использоваться для уведомления других клиентов или приложений о неожиданном отключении или сбое клиента. 

Разъединение: Клиенты MQTT могут отключаться от брокера явно или из-за проблем с сетью. Когда клиент отключается, брокер MQTT уведомляет всех подписанных клиентов об отключении с помощью функции "Последняя воля и завещание" (LWT) или путем пометки клиента как отключенного. 

Повторное подключение: Клиенты MQTT могут повторно подключиться к брокеру после отключения и возобновить публикацию или подписку на сообщения на основе предыдущего состояния. 

MQTT функционирует с использованием модели публикации-подписки, при которой издатели отправляют сообщения по темам, подписчики выражают интерес к темам, а брокер MQTT облегчает обмен сообщениями между издателями и подписчиками. MQTT поддерживает различные уровни качества обслуживания (QoS) для доставки сообщений, позволяет сохранять сообщения и функцию "Последняя воля и завещание" (LWT), а также гибко и эффективно обрабатывает разъединения и повторные подключения клиентов. 

Проблемы безопасности в протоколе MQTT 

Как и любой протокол связи, MQTT (передача телеметрии в очереди сообщений) не застрахован от проблем безопасности. Вот некоторые распространенные проблемы безопасности, связанные с MQTT: 

Отсутствие шифрования: Сообщения MQTT по умолчанию передаются открытым текстом, что означает, что они могут быть перехвачены и прочитаны любым лицом, имеющим доступ к сетевому трафику. Это создает риск несанкционированного доступа к конфиденциальным данным, таким как пароли, конфигурации и другая конфиденциальная информация. Важно внедрить шифрование, такое как Transport Layer Security (TLS) или Secure Sockets Layer (SSL), для защиты MQTT-коммуникаций и обеспечения конфиденциальности. 

Слабая Аутентификация: В MQTT отсутствуют встроенные механизмы аутентификации, и к брокеру MQTT можно подключиться без какой-либо аутентификации. Это может привести к несанкционированному доступу к брокерам MQTT и неправильному использованию модели публикации-подписки, позволяя клиентам-мошенникам публиковать сообщения или подписываться на них без надлежащей авторизации. Крайне важно внедрить надежные механизмы аутентификации, такие как имя пользователя / пароль или клиентские сертификаты, чтобы гарантировать, что только авторизованные клиенты могут подключаться к брокеру MQTT. 

Небезопасные тематические Структуры: MQTT использует темы как способ категоризации и фильтрации сообщений, но небезопасная структура тем может привести к утечке информации или несанкционированному доступу. Например, использование общих или предсказуемых названий тем может привести к раскрытию конфиденциальной информации, или использование подстановочных знаков (*) в подписках на темы может разрешить несанкционированный доступ к широкому кругу тем. Важно тщательно разрабатывать структуры тем и ограничивать доступ к темам на основе принципа наименьших привилегий. 

Атаки типа "отказ в обслуживании" (DoS): Брокеры MQTT могут быть уязвимы к атакам типа "Отказ в обслуживании" (DoS), когда злоумышленник заваливает брокера большим объемом сообщений или подключений, перегружая ресурсы брокера и заставляя его перестать отвечать на запросы законных клиентов. Это может привести к перебоям в обслуживании и потере доступности. Внедрение таких мер, как ограничение скорости, регулирование подключения и другие механизмы безопасности, может помочь защитить от DoS-атак. 

Отсутствие целостности сообщения: Сообщения MQTT не имеют встроенной проверки целостности, что означает, что сообщения могут быть подделаны или изменены во время передачи. Это может привести к передаче неточных или вредоносных данных, что приведет к неправильным решениям или действиям подписавшихся клиентов. Реализация проверок целостности сообщений, таких как коды аутентификации сообщений (MAC-адреса) или цифровые подписи, может гарантировать, что сообщения не будут подделаны во время передачи. 

Несанкционированный доступ к Сохраненным сообщениям: MQTT поддерживает сохраненные сообщения, которые хранятся на брокере и доставляются новым подписчикам при их подключении. Однако, если сохраненные сообщения не защищены должным образом, к ним могут получить доступ или изменить неавторизованные клиенты, что приведет к утечке информации или несанкционированным действиям. Должны быть реализованы надлежащие средства контроля доступа и разрешения для ограничения доступа к сохраняемым сообщениям на основе принципа наименьших привилегий. 

Отсутствие аудита и протоколирования: MQTT может не предоставлять достаточных возможностей аудита и ведения журнала "из коробки", что затрудняет мониторинг и отслеживание действий по передаче данных MQTT для анализа безопасности и устранения неполадок. Внедрение механизмов ведения журнала, средств мониторинга и процессов аудита может помочь своевременно обнаруживать инциденты безопасности и реагировать на них. 

Чтобы смягчить эти проблемы безопасности, важно внедрить надлежащие меры безопасности, такие как использование шифрования для передачи сообщений, внедрение механизмов надежной аутентификации, тщательная разработка структуры разделов, защита от DoS-атак, обеспечение целостности сообщений, защита доступа к сохраненным сообщениям и внедрение механизмов аудита и ведения журнала. Кроме того, информирование брокеров и клиентов MQTT о последних исправлениях безопасности и следование рекомендациям по обеспечению безопасности может еще больше повысить безопасность развертываний IoT на основе MQTT. 

Книги по протоколу MQTT 

Доступно несколько книг, в которых подробно описывается протокол MQTT (передача телеметрии в очереди сообщений). Вот несколько рекомендуемых книг по MQTT: 

“Основы MQTT: облегченный протокол интернета вещей” Гастона К. Хиллара: В этой книге рассматриваются основы MQTT, включая архитектуру протокола, формат сообщений, модель публикации-подписки, уровни QoS и детали реализации. В нем также обсуждаются практические аспекты использования MQTT в приложениях Интернета вещей, такие как настройка брокеров MQTT, обработка клиентов MQTT на различных языках программирования, защита связи MQTT и внедрение MQTT в ограниченных средах. 

“Практический MQTT с Paho: Делаем IoT умнее с помощью облегченного обмена сообщениями” Джошуа Х. Нобла: В этой книге содержатся практические рекомендации по использованию MQTT в приложениях IoT с клиентскими библиотеками Paho MQTT. В нем рассматриваются такие темы, как настройка брокеров MQTT, публикация сообщений и подписка на них, внедрение уровней QoS, защита связи MQTT, обработка сохраненных сообщений и интеграция MQTT с другими протоколами и технологиями. 

Эти книги содержат подробную информацию, примеры и практические рекомендации по работе с MQTT в различных приложениях Интернета вещей. Они подходят как для начинающих, так и для опытных разработчиков, которые хотят изучить и внедрить MQTT в свои IoT-проекты. 

Другие Услуги

Готовы к безопасности?

Связаться с нами