19 Апр, 2023

Протокол ограниченного применения (CoAP)

Penetration Testing as a service (PTaaS)

Tests security measures and simulates attacks to identify weaknesses.

Table of Contents

Введение в CoAP

CoAP (Протокол ограниченного применения) это облегченный протокол, предназначенный для использования с устройствами с низким энергопотреблением и ограниченными сетями, такими как те, которые встречаются в устройствах IoT (Internet of Things). Предполагается, что он станет более простой и эффективной альтернативой HTTP для ограниченных устройств с ограниченной вычислительной мощностью, памятью и временем автономной работы. CoAP построен поверх UDP (User Datagram Protocol) и предоставляет набор методов для обнаружения ресурсов, манипулирования ими и наблюдения, а также поддержку асинхронной связи и кэширования. Благодаря низким накладным расходам и простоте CoAP становится все более популярным в приложениях IoT и, как ожидается, сыграет важную роль в будущем Интернета вещей. 

Порт, в котором работает CoAP 

CoAP (протокол ограниченного приложения) работает поверх UDP (протокол пользовательских дейтаграмм) и обычно использует порт номер 5683 для незащищенной связи и порт номер 5684 для защищенной связи с использованием DTLS (безопасность транспортного уровня дейтаграмм). 

История CoAP  

CoAP, что расшифровывается как Constrainted Application Protocol, представляет собой облегченный протокол Интернета вещей (IoT), предназначенный для сетей и устройств с ограниченными ресурсами. Он был разработан Целевой группой по разработке Интернета (IETF) в рабочей группе CoRE (Restricted RESTful Environments) с целью обеспечения эффективной связи между устройствами Интернета вещей по сетям с ограниченными возможностями, таким как беспроводные сети с низким энергопотреблением и другие среды с ограниченными ресурсами. 

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

В 2011 году первая версия CoAP, известная как CoAP version 13 (CoAP-v13), была опубликована в качестве информационного документа RFC (Запрос комментариев), RFC 7252. Эта первоначальная версия CoAP была основана на архитектуре REST (Representational State Transfer), которая является распространенным архитектурным стилем, используемым в веб-приложениях, и заимствовала многие концепции из протокола передачи гипертекста (HTTP), который является стандартным протоколом, используемым для связи через World Wide Web. 

CoAP-v13 предоставил простой и облегченный протокол для устройств Интернета вещей для выполнения операций CRUD (Создание, извлечение, обновление, удаление) над ресурсами, идентифицируемыми с помощью унифицированных идентификаторов ресурсов (URI), аналогично операциям HTTP над ресурсами, идентифицируемыми по URL. В качестве транспортного протокола он использовал протокол пользовательских дейтаграмм (UDP), который представляет собой протокол без установления соединения, ненадежный и легковесный протокол, подходящий для ограниченных сред. CoAP-v13 также поддерживал ряд типов сообщений, включая подтверждаемые (CON), неподтверждаемые (NON), подтверждающие (ACK) и сбрасываемые (RST) сообщения, для обеспечения надежности и контроля перегрузки в ненадежных сетях. 

В последующие годы CoAP продолжал развиваться с выпуском более новых версий. Версия 18 CoAP (CoAP-v18), опубликованная в 2014 году как RFC 7641, представила улучшения в области безопасности, включая поддержку Datagram Transport Layer Security (DTLS) для обеспечения связи между конечными точками CoAP. В CoAP-v18 также добавлены новые функции, такие как поблочная передача для эффективной обработки больших ресурсов, опция наблюдения для уведомлений, инициируемых сервером, и групповое общение для многоадресной рассылки. 

CoAP версии 21 (CoAP-v21), опубликованный в 2017 году как RFC 8323, дополнительно усовершенствовал протокол, добавив дополнительные функции и оптимизации. В нем была введена концепция CoAP поверх TCP, позволяющая передавать сообщения CoAP по протоколу TCP для надежной связи. Он также добавил поддержку опции Proxy-Uri, которая позволяет проксировать сообщения CoAP к другим конечным точкам CoAP или другим протоколам, таким как HTTP. CoAP-v21 также включал усовершенствования для обнаружения ресурсов и обновления опции Наблюдения. 

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

Ключевые особенности CoAP 

Ключевые особенности протокола CoAP перечислены ниже: 

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

• Спокойный: CoAP основан на архитектуре RESTful, которая широко используется в веб-приложениях. Он использует URI для идентификации ресурсов и предоставляет операции CRUD (Создание, извлечение, обновление, удаление) для взаимодействия с этими ресурсами. 

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

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

• Безопасность: CoAP поддерживает безопасность транспортного уровня дейтаграмм (DTLS) для обеспечения безопасной связи по протоколу UDP. Он также поддерживает облегченные механизмы безопасности, такие как предварительный общий ключ (PSK) и Необработанный открытый ключ (RPK) для аутентификации конечных точек и безопасной связи. 

• Обнаружение ресурсов: CoAP предоставляет простой и эффективный механизм для обнаружения ресурсов в сети. Он использует формат базовой ссылки для описания ресурсов и их свойств. 

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

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

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

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

Архитектура CoAP состоит из четырех основных компонентов: 

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

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

Прокси - серверы CoAP: Прокси-сервер CoAP - это промежуточное устройство, которое находится между клиентом CoAP и сервером CoAP. Он может использоваться для фильтрации или изменения запросов и ответов, а также для кэширования ответов для уменьшения сетевого трафика. 

Ресурс CoAP: Ресурс CoAP - это любая часть данных или функциональных возможностей, к которым можно получить доступ через CoAP. Он идентифицируется с помощью URI и может иметь одно или несколько представлений в различных форматах, таких как XML, JSON или CBOR. Ресурсы могут быть статическими, такими как показания датчика, или динамическими, такими как функция управления. 

Архитектура CoAP также включает в себя несколько других ключевых концепций: 

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

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

Наблюдающие ресурсы: Клиенты CoAP могут наблюдать за ресурсами, отправив специальный запрос на наблюдение. Затем сервер будет отправлять уведомления клиенту всякий раз, когда ресурс изменяется. 

Переводы по блокам: CoAP поддерживает передачу данных поблочно, когда большие ресурсы могут быть разделены на более мелкие блоки и переданы в последовательности запросов и ответов. Это позволяет устройствам с ограниченной памятью и пропускной способностью получать доступ к большим ресурсам. 

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

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

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

Вот как функционирует CoAP: 

Клиент отправляет запрос: Клиент CoAP отправляет запрос на сервер CoAP для доступа к ресурсу. Запрос включает в себя метод (GET, POST, PUT, DELETE), URI, идентифицирующий ресурс, и любые дополнительные параметры. 

Сервер обрабатывает запрос: Сервер CoAP получает запрос и обрабатывает его. Если запрос действителен, сервер генерирует ответ и отправляет его обратно клиенту. Если запрос недействителен, сервер отправляет ответ с ошибкой. 

Сервер отправляет ответ: Сервер отправляет ответ обратно клиенту. Ответ включает код состояния (например, содержимое 2.05, 4.04 Не найдено), полезную нагрузку (если применимо) и любые дополнительные параметры. 

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

В дополнение к базовой модели запрос-ответ, CoAP также включает в себя некоторые дополнительные функции: 

Наблюдающие ресурсы: Клиент CoAP может наблюдать за ресурсом, отправив запрос наблюдения на сервер. Затем сервер будет отправлять уведомления клиенту всякий раз, когда ресурс изменяется. 

Переводы по блокам: CoAP поддерживает передачу данных поблочно, когда большие ресурсы могут быть разделены на более мелкие блоки и переданы в последовательности запросов и ответов. Это позволяет устройствам с ограниченной памятью и пропускной способностью получать доступ к большим ресурсам. 

Безопасность: CoAP поддерживает безопасность транспортного уровня дейтаграмм (DTLS) для обеспечения безопасной связи по протоколу UDP. Он также поддерживает облегченные механизмы безопасности, такие как предварительный общий ключ (PSK) и Необработанный открытый ключ (RPK) для аутентификации конечных точек и безопасной связи. 

Обнаружение ресурсов: CoAP предоставляет простой и эффективный механизм для обнаружения ресурсов в сети. Он использует формат базовой ссылки для описания ресурсов и их свойств. 

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

Как использовать этот протокол? 

Чтобы использовать CoAP (протокол ограниченного приложения), вам необходимо выполнить следующие действия: 

Выберите библиотеку CoAP или фреймворк: CoAP - это протокол, и как таковой, для его реализации требуется библиотека или фреймворк. Существует множество библиотек и фреймворков CoAP, доступных для различных языков программирования, таких как C, Java, Python и JavaScript. Некоторые популярные опции включают libcoap, Californium, CoAPthon и node-coap. 

Внедрить клиент или сервер CoAP: После того как вы выбрали библиотеку или фреймворк CoAP, вы можете реализовать клиент или сервер CoAP, используя эту библиотеку. Клиент CoAP отправляет запросы на сервер CoAP для доступа к ресурсам, в то время как сервер CoAP предоставляет ресурсы для доступа клиентов CoAP. 

Определение ресурсов: На сервере CoAP вам необходимо определить ресурсы, которые вы хотите предоставить клиентам CoAP. Ресурс - это любая часть данных или функциональных возможностей, к которым можно получить доступ через CoAP. Ресурсы идентифицируются с помощью URI, и они могут иметь одно или несколько представлений в различных форматах, таких как XML, JSON или CBOR. 

Отправлять запросы: В CoAP-клиенте вы можете отправлять запросы на CoAP-сервер для доступа к ресурсам. Чтобы отправить запрос, вам необходимо указать метод (GET, POST, PUT или DELETE), URI ресурса и любые дополнительные параметры. 

Получать ответы: Когда вы отправляете запрос, вы получите ответ от сервера CoAP. Ответ будет включать код состояния (например, содержимое 2.05, 4.04 Не найдено), полезную нагрузку (если применимо) и любые дополнительные параметры. 

Реализовать дополнительные функции: CoAP также поддерживает дополнительные функции, такие как наблюдение за ресурсами, поблочная передача, безопасность и обнаружение ресурсов. Вы можете реализовать эти функции по мере необходимости, используя свою библиотеку CoAP или фреймворк. 

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

Проблемы безопасности и их устранение 

CoAP (Constrainted Application Protocol) разработан как легкий и эффективный протокол для устройств и сетей с ограниченными ресурсами. Однако его легкий характер означает, что он может быть уязвим к определенным проблемам безопасности. Вот некоторые из проблем безопасности в CoAP и некоторые методы исправления: 

Отсутствие аутентификации: CoAP не предоставляет встроенных механизмов аутентификации, что означает, что любой может отправлять запросы на сервер CoAP. Чтобы решить эту проблему, вы можете использовать безопасность транспортного уровня дейтаграмм (DTLS) для обеспечения безопасной связи по протоколу UDP. DTLS предоставляет службы аутентификации и шифрования для защиты связи между клиентом CoAP и сервером. 

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

Отсутствие авторизации: CoAP не предоставляет встроенных механизмов авторизации, что означает, что любой, кто может отправлять запросы на сервер, может получить доступ к его ресурсам. Чтобы решить эту проблему, вы можете реализовать механизмы контроля доступа на сервере. Эти механизмы ограничивают доступ к определенным ресурсам в зависимости от личности клиента и типа отправляемого запроса. 

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

Атаки на обнаружение ресурсов: CoAP предоставляет простой и эффективный механизм обнаружения ресурсов в сети, который может быть использован злоумышленниками для получения несанкционированного доступа к ресурсам. Чтобы предотвратить атаки на обнаружение ресурсов, вы можете использовать механизмы контроля доступа на сервере CoAP для ограничения доступа к определенным ресурсам. 

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

Книги и ссылки 

Вот несколько рекомендуемых книг по CoAP (Протокол ограниченного применения): 

“Начало работы с Интернетом вещей: Подключение датчиков и микроконтроллеров к облаку” Куно Пфистера: Эта книга представляет собой введение в IoT (Интернет вещей) и охватывает различные протоколы IoT, включая CoAP. В нем содержится практическое руководство по созданию систем Интернета вещей с использованием CoAP и других протоколов. 

“Руководство по созданию сети вещей” Маттиаса Ковача: В этой книге представлен всесторонний обзор CoAP и его приложений в Сети вещей. В нем рассказывается об архитектуре, функциях и принципах проектирования CoAP, а также о его использовании в различных приложениях Интернета Вещей. 

Эти книги представляют собой всеобъемлющее руководство по CoAP и его приложениям в IoT и Web of Things. Они охватывают принципы CoAP, его архитектуру и его использование в различных приложениях Интернета вещей, а также практические примеры и пошаговые руководства по созданию систем на основе CoAP. 

Related Posts

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

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

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