Базовая спецификация Bluetooth (V5.4) 12.3 — Подробное объяснение функций уровня безопасности LE GATT.
Базовая спецификация Bluetooth (V5.4) 12.3 — Подробное объяснение функций уровня безопасности LE GATT.

Спецификация ядра Bluetooth (V5.4), подробное объяснение и краткое описание


1. Проверка знаний

Протокол Bluetooth GATT (Generic Attribute Profile) — один из стандартных протоколов обмена данными между устройствами Bluetooth. GATT — это протокол, основанный на моделях обслуживания и характеристик, используемый для описания и передачи данных между устройствами.

ГАТТ в основном включает в себя следующие части:

  1. Услуги
  2. Характеристики
  3. Дескрипторы

Связь GATT основана на протоколе ATT, который представляет собой двусторонний протокол на основе ответов, используемый для передачи данных между службами и функциями GATT. Протокол ATT обеспечивает такие операции, как чтение, запись и уведомление, а также обработку для обеспечения целостности данных и устранения ошибок.

В GATT передача данных между устройствами обычно состоит из следующих шагов:

  1. Служба обнаружения
  2. Учреждатьсоединять
  3. Чтение и запись функций
  4. закрытиесоединять

Устройства используют протокол, называемый протоколом атрибутов (ATT), для доступа к атрибутам в таблице ATTRIBUTE подключенного удаленного устройства, следуя правилам, определенным различными процедурами GATT, такими как чтение значений характеристик и запись значений характеристик.

ГАТТ определяет две роли. Клиент GATT отправляет команды ATT (ответ не требуется) и запросы (требуется ответ) на сервер GATT. Сервер GATT принимает и обрабатывает команды и запросы, полученные от клиентов GATT. Сервер GATT также может отправлять клиенту GATT различные типы PDU ATT, обычно известные как уведомления, инструкции и ответы.

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

PDU ATT передаются через соединения LE-ACL, поэтому перед выполнением каких-либо процедур GATT и обменом PDU ATT устройство должно сначала установить соединение. Обычно после установления соединения клиент GATT продолжает выполнять серию процессов, называемых процессом обнаружения. Обнаружение включает в себя определение содержимого таблицы свойств удаленного устройства как объектов служб, характеристик и дескрипторов, а также связанных с ними свойств, таких как значения дескрипторов, типы и разрешения. Обратите внимание, что разрешения на атрибуты не ограничивают возможности клиента выполнять процесс обнаружения.

Иерархическая структура сервисов, характеристик и дескрипторов представлена ​​на рисунке ниже.

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

На всех серверах ГАТТ требуются две специальные службы. Это универсальная служба доступа и универсальная служба атрибутов.

Безопасность и удобство использования GATT

GATT (Generic Attribute Profile) — это протокол для подключения и связи с устройствами с низким энергопотреблением. Безопасность и удобство использования — два важных фактора при разработке приложений GATT.

  1. Безопасностьсекс:
    • Аутентификация: чтобы гарантировать, что только законные устройства могут получить доступ к сервисам и функциям GATT.,Могут использоваться механизмы аутентификации на основе сертификатов. Это снижает риск проникновения неавторизованных устройств в сеть GATT.
    • шифрование: использование соответствующего алгоритма шифрования и длины ключа может защитить передаваемые данные от подслушивания или подделки. Этого можно добиться, используя предварительно общие ключи или эфемерные ключи.
    • Предотвратите атаки повторного воспроизведения: назначив уникальный идентификатор транзакции каждому сообщению GATT, злоумышленники могут предотвратить повторную отправку одного и того же сообщения. Это предотвращает утечку информации и неправильные операции.
  1. Пользовательский опыт:
    • Простота: структура протокола ГАТТ должна быть максимально простой и понятной, чтобы пользователи могли легко понять и использовать его. Упрощенные форматы команд и ответов ускоряют обучение пользователя.
    • Масштабируемость. Хорошо спроектированное приложение GATT должно иметь хорошую масштабируемость для работы с различными типами и количеством устройств. Это означает, что возможность добавления новых устройств и сервисов должна поддерживаться без существенных изменений существующего кода.
    • Надежность: Связь между GATTклиентом и сервером должна быть надежной и своевременной. Это означает, что необходимо обрабатывать ошибочные состояния и предоставлять соответствующий ответ на ошибку.,Чтобы пользователи могли предпринять соответствующие действия.

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

При доступе к свойству проверяются разрешения свойства. Если условия безопасности, указанные в разрешении атрибута, не выполняются, доступ запрещается и возвращается ответ PDU ATT_ERROR_RSP, содержащий код ошибки. Если сервер запрещает доступ к свойству, соединение обычно не закрывается. Это позволяет клиентам обрабатывать ошибки путем повышения безопасности, чтобы последующие попытки доступа были успешными. Например, если попытка прочитать значение характеристики приводит к возврату ошибки «недостаточное шифрование», клиент может обработать эту ошибку, инициировав процесс сопряжения и обновив соединение для использования шифрования после завершения. Пользователю может потребоваться еще раз взаимодействовать с устройством, чтобы повторить неудавшуюся операцию.

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

2 функции уровня безопасности LE GATT

Базовая спецификация Bluetooth версии 5.4 определяет новую функцию под названием LE Gatt Security Level Feature (SLC). Функция SLC позволяет клиентам определять условия безопасности сервера GATT, которые должны быть соблюдены, если требуется предоставить доступ ко всем функциям GATT. Важно отметить, что это позволяет определить эти условия перед доступом к свойствам, используемым приложением. Предварительная проверка требований к доступу может улучшить взаимодействие с пользователем, не прерывая работу приложения из-за проблем с уровнем безопасности.

2.1 Технические особенности

Устройства могут включать характеристики SLC в услуги обязательного профиля универсального доступа. Поэтому его включение не является обязательным, но рекомендуется, учитывая улучшение пользовательского опыта его использования.

Характеристика SLC обеспечивает доступ к своему значению только для чтения без дополнительных ограничений безопасности, таких как необходимость зашифрованного соединения.

Уровни безопасности Bluetooth LE выражаются в виде режимов и уровней.

Режим безопасности LE 1 имеет следующие уровни безопасности:

  1. No Safety (без аутентификации и шифрования)
  2. Неаутентифицированное сопряжение и шифрование
  3. Аутентифицированные пары и шифрование
  4. Аутентифицированное соединение LEБезопасностьсоединять и шифрование с использованием 128-битного ключа шифрования.

Режим безопасности LE 2 имеет два уровня безопасности:

  1. Неаутентифицированное сопряжение и подписание данных
  2. Аутентифицированное сопряжение и подписание данных

Режим безопасности LE 3 имеет три уровня безопасности:

  1. No Safety (без аутентификации и шифрования)
  2. Использование неаутентифицированного Broadcast_Code
  3. Используйте аутентифицированный Broadcast_Code

Только режим безопасного соединения LE (режим безопасности LE 1, уровень 4)

Может существовать более одного режима и комбинации уровней безопасности, отвечающих требованиям безопасности для всех атрибутов сервера. Следовательно, значение атрибута SLC состоит из массива из одного или нескольких полей требований уровня безопасности. Поле требования уровня безопасности имеет тип uint8[2], причем первое значение uint8 содержит прямое представление режима безопасности (например, 0x01 для режима безопасности 1), а второе представляет уровень безопасности (например, 0x04 для уровня безопасности 4). ).

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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose