
Компания SberDevices добавила поддержку протокола Matter по Wi-Fi в колонки СберБум 2.0, которые теперь работают как хаб умного дома. Интеграция потребовала переноса генерации операционных сертификатов на бэкенд и реализации передачи роли контроллера между смартфоном и колонкой. Разработчики также решили проблему типизации конечных устройств с помощью собственного скриптового языка Fortuna.
Matter - это открытый протокол связи, созданный консорциумом Google, Amazon, Apple, Samsung и других компаний. Он позволяет устройствам разных брендов работать в единой локальной сети без привязки к одной экосистеме. Протокол функционирует поверх IP и не требует постоянного подключения к интернету.
Устройства Matter могут подключаться по Wi-Fi, Thread или Ethernet. В сети они делятся на конечные устройства и контроллеры. Контроллер обычно выполняет роль комиссионера: добавляет новые устройства в доверенную группу, которая называется Matter Fabric.
Стандартный процесс подключения начинается с передачи данных по Bluetooth LE, что неудобно в большой квартире. Разработчики изменили этот сценарий: теперь пользователь подносит смартфон с приложением Салют к устройству, а после первичного подключения администратором становится колонка. Дальнейшая связь идёт по Wi-Fi.
Для подключения устройство должно передать начальные параметры безопасности, обычно зашитые в QR-код. Комиссионер проверяет подлинность устройства по цепочке сертификатов: уникальному Device Attestation Certificate и промежуточному Product Attestation Intermediate. После этого устройство генерирует пару эксплуатационных ключей и запрашивает выпуск операционного сертификата.
Операционный сертификат содержит идентификатор всего умного дома и идентификатор конкретного узла. Затем комиссионер передаёт устройству данные для входа в Wi-Fi сеть, если оно ещё не подключено. Финальный этап - установка защищённой сессии с использованием постоянных ключей шифрования.
Использовать готовый Google Home Mobile SDK команда не могла, так как он привязан к сервисам Google, которые есть не на всех смартфонах. За основу взяли открытый код из репозитория Connectivity Standards Alliance. Первый запуск демо-приложения оказался успешным, но в процессе доработки возникли три серьёзные проблемы.
Первая проблема касалась конфигурации контроллера. В примере из репозитория параметры контроллера были минимальными, и любое несоответствие вызывало невнятную ошибку в середине подключения. Решение подсказали коллеги, работавшие с iOS: фреймворк Apple содержит чёткие контракты для кастомной сертификации, что позволило определить полный набор необходимых параметров.
Вторая проблема была связана с сертификатами. Демо-версия библиотеки генерировала их автоматически из встроенного набора ключей, что неприемлемо для реальной эксплуатации. Генерацию вынесли на бэкенд в специальный микросервис, который стал единым хранилищем секретов и управляет сертификатами узлов сети.
Хранение сертификатов на бэкенде также позволило реализовать подключение Matter-устройств через веб-приложение, у которого нет прямого доступа в домашнюю сеть. Функции комиссионера распределили между приложением, бэкендом и колонкой. Однако на этом этапе выяснилось, что любое отклонение в полях идентификаторов внутри сертификата приводит к ошибке.
Дополнительно обнаружилось, что вторая половина диапазона 64-битных идентификаторов ломает работу криптобиблиотек. Пришлось вдвое ограничить генерируемые бэкендом значения. Также выяснилось, что Android и C++ работают с криптографией в разных форматах, и сертификаты требовалось адаптировать.
Для передачи ключа нужного формата пришлось из всей последовательности байтов извлечь публичную часть, которая шла первыми 65 байтами. После этого подключение заработало. Третьей проблемой стала передача прав новому контроллеру: смартфон должен был назначить колонку администратором и удалить себя из списка.
Процесс реализовали через работу с кластером прав доступа. Приложение читает текущий список, добавляет колонку как администратора, удаляет смартфон и записывает изменения. После этого колонка самостоятельно подключается к устройству, опрашивает его о поддерживаемых функциях и регистрирует на бэкенде с нужным типом.
Каждое Matter-устройство иерархично: физический узел может содержать несколько логических конечных точек. Например, умная розетка с датчиком температуры имеет три эндпоинта: служебный, для управления питанием и для датчика. Нумерация эндпоинтов произвольна, и именно здесь возникла проблема типизации.
Разные производители по-разному описывают сходные функции, из-за чего однотипные устройства могут иметь разный набор эндпоинтов. Для унификации использовали скриптовый язык Fortuna, который применяется в хабе. Он позволяет описать логику приведения различных реализаций к единому типу, понятному системе Умного дома Сбер.
Читайте также
Выбор квартир в элитных новостройках Москвы вырос вчетверо за пять лет
Samsung показала Galaxy Tab S12: новый чип, батарея и возвращение Plus
Савеловский кластер стал лидером Москвы по новым офисам в 2025 году
С рэпера Navai взыскивают 72 тысячи рублей долга за коммуналку
ЦБ хочет ограничить рассрочку на жильё тремя годами после сдачи дома