Компания заказчика уже много лет занимается такими девайсами, сейчас одно из самых главных направлений — девайсы, работающие по BLE. На данный момент заказчик работал над разработкой софта для умных девайсов, таких как умные замки.
Разрабатываемая система состоит из следующих компонентов:
Все данные в приложении передаются в зашифрованном виде, и ключ безопасности есть только у специального выделенного сервера и у клиента.
Работа администратора построена по принципу таск-трекера: у него есть список задач, которые он последовательно закрывает. Задача — это набор действий, которые нужно произвести над замком: например, собрать какую-то информацию с девайса, считать журнал событий или залить новую версию прошивки.
Администратор получает доступ к этим возможностям только на период выполнения задания по обслуживанию. Это необходимо для того, чтобы обеспечить безопасность: так действия администратора остаются под контролем.
Однако часто во время осмотра замка администратору может понадобиться выполнить какое-то дополнительное действие, которого нет в описании задания. Например, выставить корректное время, открыть или закрыть замок. Для этого ему необходим функционал, который, с одной стороны, позволял бы выполнить всю необходимую работу оперативно, а, с другой стороны, не ослаблял бы безопасность.
С этим вопросом к нам и обратился заказчик. Нам предстояло добавить в существующее iOS приложение механизм “быстрых задач” — задач, доступ на которые администратора запрашивает прямо во время работы над замком. Этот доступ ему предоставляется в срочном порядке, но вся информация о действиях администратора остается в системе.
Любое общение сервера с девайсом происходит путем отправки и приема пакетов байтов. Для того, чтобы корректно расшифровать информацию из пакетов, обеим сторонам необходимо иметь протокол, описывающий, как обрабатывать байтовую последовательность.
Если у административного приложения есть соответствующий протокол, администратор может выполнять “быстрые” операции без дополнительного запроса к серверу. Это важно, потому что не всегда у администратора есть доступ к сети во время работы с замком.
Однако, если приложение администратора еще не получало протокола на определенное действие, нужно инициировать запрос на доступ на операцию у сервера. Сервер вышлет протокол, и пользователь сможет выполнить “быструю” задачу.
«Технологика», на момент работы над проектом, уже имела опыт работы с BLE девайсами. Основная же сложность при работе над проектом была на этапе погружения в проект: проект был описан огромным количеством документации, в которой было непросто разобраться.
Такое количество документации было необходимо для того, чтобы хранить и систематизировать знания о протоколах и правах доступа: порядок генерации протоколов, их содержание, специальные условия, способы обработки всех возможных видов запросов, порядок использования протоколов и иерархия прав доступа были подробно описаны. У нас ушло около полутора месяцев на то, чтобы разобраться в деталях.
На данный момент работа над “быстрыми” задачами успешно завершена.