1. Публикация новой версии ПОРазработчик собирает новую версию ПО, тестирует ее и публикует на сервере. Наряду с бинарным файлом прошивки также публикуются:
- Manifest-файл, который содержит метаданные и правила установки обновления.
- Криптографический хеш – идентификатор фиксированной длины, вычисляемый из файла прошивки. С его помощью можно определить, повредился ли файл во время скачивания и записи на флеш-память.
- Цифровая подпись, которая подтверждает, что обновление или manifest были одобрены разработчиком (владельцем закрытого ключа).
2. Устройство опрашивает серверПериодически устройство передает на сервер запрос о наличии обновлений для своей модели и версии ПО. При подтверждении сервер сообщает версию новой прошивки, ее размер, хеш-сумму и другие метаданные.
3. Проверка manifest-файлаУстройство проверяет manifest, чтобы понять:
- подходит ли обновление для его модели;
- допустима ли версия;
- хватает ли места и питания;
- не запрещено ли обновление политикой;
- подлинна ли подпись метаданных.
4. Скачивание образа прошивкиЕсли все в порядке, устройство скачивает пакет обновления. Это может быть полный образ новой прошивки или патч, который заменяет только те файлы, в которые разработчик внес изменения. Файл обычно загружается порциями (чанками), и в случае потери соединения устройство может возобновить загрузку.
5. Проверка целостности и подлинностиУстройство вычисляет хеш-сумму скачанного образа и сравнивает ее с хеш-суммой, указанной в manifest, чтобы проверить целостность файла. Также проверяется цифровая подпись прошивки, чтобы убедиться, что файл выпущен авторизованным разработчиком. Если не удается подтвердить, что файл выпущен доверенным разработчиком или что при скачивании часть данных не была утеряна, обновление не устанавливается.
6. Установка и проверка новой прошивкиУстройство устанавливает обновление, перезагружается и пытается запустить новую версию ПО. На случай неудачи обычно предусмотрен механизм отката к предыдущей версии прошивки. При успешном запуске новая прошивка выполняет самопроверку.
7. Отчет на серверЕсли все в порядке, устройство отправляет на сервер отчет о том, что новая версия установлена и работает штатно.