image

Заканчивая тему о сети bluetooth mesh (первая заметка, вторая заметка), сегодня мы вкратце рассмотрим её архитектуру и безопасность.

Добро пожаловать.

Архитектура


image

Архитектура сети похожа на сетевую модель OSI и состоит из 8 уровней. Рассмотрим их снизу вверх.

Уровень BLE (Bluetooth Low Energy) – находится в самом низу стека. Это не просто один из слоев архитектуры, а фактически, это полный стек BLE, который необходим для обеспечения сети беспроводной связью. Таким образом, сеть полностью зависит от доступности стека BLE на устройстве.

Канальный уровень (Bearer Layer) – определяет принципы обработки PDU сети. На данный момент определены два канала:

  • канал адвертизинга (Advertising Bearer) – использует возможности адвертизинга и сканирования уровня BLE для приема и передачи пакетов PDU;
  • канал GATT (GATT Bearer) — позволяет устройству, которое не поддерживает «Advertising Bearer», связываться с узлами сети, использующими протокол «Proxy». «Proxy» протокол инкапсулируется в операции GATT (Generic Attributes Profile) с использованием специально определенных характеристик GATT. Прокси-узел реализует эти характеристики и поддерживает оба канала для того, чтобы иметь возможность конвертировать и передавать сообщения между двумя типами носителя.

Сетевой уровень (Network Layer) – определяет различные типы адресов сообщений и их формат, а так же переносит пакеты PDU из транспортного уровня в канальный. Уровень может поддерживать несколько каналов, каждый из которых может иметь несколько сетевых интерфейсов, включая локальный интерфейс, используемый для связи между элементами, являющимися частью одного и того же узла. Уровень так же определяет, какие сетевые интерфейсы должны передавать сообщения. К сообщениям, поступающим из канального уровня, применяется входной фильтр, для определения того, должны ли эти сообщения доставляться выше. Выходные сообщения обрабатываются выходным фильтром для и делают тоже самое только для доставки ниже. Таким образом, функции узла «Relay» и «Proxy» могут быть реализованы сетевым уровнем.

Нижний транспортный уровень (Lower Transport Layer) — принимает пакеты PDU с верхнего транспортного уровня и отправляет их на нижний транспортный уровень другого устройства. При необходимости выполняется сегментация и сборка пакетов. Для пакетов, длина которых превышает длину одного транспортного PDU, уровень выполняет сегментацию, разделяя пакет на несколько транспортных PDU. Получающая сторона будет собирать эти сегменты в один пакет PDU верхнего транспортного уровня и передавать его выше.

Верхний транспортный уровень (Upper Transport Layer) — отвечает за шифрование, дешифрование и проверку подлинности данных приложения, проходящих через уровень доступа.

Уровень доступа (Access Level) — отвечает за то, как приложения могут использовать верхний транспортный уровень путем:

  • определения формата данных приложения;
  • управления процессом шифрования и дешифрования, выполняемым на верхнем транспортном уровне;
  • проверки перед пересылкой данных вверх того, что данные, полученные с верхнего транспортного уровня, предназначены для текущей сети и конкретного приложения.

Уровень основных моделей (Foundation Models Layer) — отвечает за реализацию тех моделей, которые связаны с конфигурацией и управлением сетью.

Уровень моделей (Models Layer) – реализует модели, тем самым реализуя поведение, сообщения, состояния, привязки состояний и т.д., в соответствие с определениями спецификаций модели.

Безопасность


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

Перечислим фундаментальные составляющие безопасности:

  1. Все сообщения сети шифруются и проверяются на подлинность.
  2. Безопасность сети, безопасность приложений и безопасность устройств рассматриваются как отдельные составляющие.
  3. Ключи безопасности можно изменить в течение срока службы сети с помощью процедуры обновления ключа (Key Refresh).
  4. Обфускация сообщений затрудняет их отслеживание, обеспечивая конфиденциальность.
  5. Процесс добавления устройства в сеть, сам по себе является процессом в контексте безопасности.
  6. Удаление узлов из сети происходит так, что бы исключить атаку типа «trashcan».

Разделение ответственности


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

Для понимания термина «разграничение ответственности», рассмотрим лампу освещения, имеющую функцию ретрансляции (Relay). В качестве ретранслятора она может обрабатывать сообщения, относящиеся к дверной или оконной системе безопасности, являющейся часть данной сети. Лампа не имеет возможности получать доступ и обрабатывать детали таких сообщений, но должна их передавать другим узлам. Для обеспечения запрета доступа к таким сообщениям, сеть использует разные ключи безопасности для защиты сообщений на сетевом уровне от тех, которые используются для защиты данных, относящихся к конкретным приложениям: освещение, охрана, обогрев и т.д.

Все узлы в сети имеют сетевой ключ (NetKey). Но этот ключ делает устройство узлом и членом сети. А вот ключ шифрования и приватный ключ образуются непосредственно из ключа NetKey.
Обладание ключом NetKey позволяет узлу расшифровывать данные и аутентифицироваться до «сетевого уровня» стека сети, чтобы можно было выполнять определенные сетевые функции, такие как ретрансляция. Но обладание им не позволяет расшифровать данные приложения.

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

Данные конкретного приложения могут быть расшифрованы только узлами, имеющими правильный ключ приложения («AppKey»). Через узлы в сети может проходить большое количество ключей такого типа, но, как правило, определенным ключом будет обладать ограниченное множество узлов, имеющих данное приложение. Например, лампы и выключатели света будут обладать ключом AppKey приложения освещения, но не ключом для системы отопления, в которой будут находиться только термостаты, клапаны радиаторов и т.д.

Ключи «AppKey» используются верхним транспортным уровнем стека сети для дешифрования и аутентификации сообщений до того, как передать их уровень доступа.

Ключи «AppKey» ассоциируются только с одним ключом «NetKey». Эта ассоциация называется «привязка ключей» (key binding) и означает, что конкретные приложения, владеющие конкретным ключом «AppKey», могут работать только в одной конкретной сети, тогда как сеть может содержать несколько независимых приложений.

И последний ключ, ключ устройства «DevKey». Это особый тип ключа приложения. Каждый узел имеет уникальный DevKey, известный только устройству с функцией регистратора в сети (Provisioner) и ни кому другому. DevKey используется в процессе подготовки для обеспечения безопасной связи между «Provisioner» и узлом.

Удаление узла, обновление ключа и атаки типа «trashcan»


И так, узлы содержат различные ключи защиты. Если узел сломался и его необходимо утилизировать, или если владелец решает отдать узел другому владельцу, важно чтобы устройство и ключи, которые он содержит, не могли быть использованы для установки атаки на ту сеть, членом которой он прежде был. Для этого была определена процедура удаления узла из сети. Приложение на устройстве «Provisioner» добавляет узел в черный список, после чего инициирует процедуру обновления ключа (Key Refresh Procedure). Эта процедура приводит к тому, что все узлы в сети, за исключением тех, которые являются членами черного списка, получают новые сетевые ключи, ключи приложений и все остальные производные данные. Другими словами, заменяется весь набор ключей безопасности, которые составляют основу безопасности сети и приложений. Таким образом, узел, который был удален из сети и который содержит старый «NetKey» и старый набор ключей «AppKey», больше не является членом сети и не представляет никакой угрозы.

Конфиденциальность


Приватный ключ (privacy key), полученный из «NetKey», используется для обфускации значений заголовков PDU, например таких, как адрес источника. Обфускация гарантирует, что случайный, пассивный перехват сообщений не может использоваться для отслеживания устройств и людей, которые эти устройства используют. Обфускация также затрудняет атаки, основанные на анализе трафика.

Атаки, основанные на повторе сообщения


Данная атака — техника, при котором устройство-перехватчик перехватывает одно или несколько сообщений и просто повторно передает их позже, с целью обмануть получателя, выполняя то, что атакующее устройство не уполномочено делать. Пример: система бесключевого доступа автомобиля всегда имеет риск перехвата данных между владельцем автомобиля и автомобилем.
У bluetooth сети есть защита от подобных атак. Защита основана на использовании двух полей в пакете PDU:

  • «номер последовательности» (Sequence Number (SEQ)). Элементы сети каждый раз при отправке сообщения, увеличивают значение SEQ. Узел, получающий сообщение со значением SEQ меньшим или равным предыдущему действительному сообщению, отменит его, так как вполне вероятно, что это сообщение относится к атаке повтора.
  • «IV Index» — поле, рассматриваемое вместе с SEQ. Его значение внутри сообщения от данного элемента всегда должны быть равны или больше значению этого поля в последнем действительном сообщении данного элемента.

Вот и все.

Надеюсь, предоставленная информация дает полный обзор новой технологии.

Для желающих глубже познакомиться с ней есть 3 замечательные спецификации:
— спецификация профиля;
— спецификация модели;
— спецификация устройства.
Все они доступны вот тут.

Спасибо за внимание.

Комментарии (0)