Этот вопрос слишком широкий, но, учитывая, что вы пропустили самую важную вещь, я чувствую, что мне нужно разобраться.
Аутентифицировать обновление .
Если вы хотите убедиться, что на ваших устройствах запущен ваш код, вам нужна аутентификация, а не шифрование. Шифрование гарантирует, что другие люди не могут знать, что находится в вашем коде, и это трудно достичь и редко полезно. (Вы можете зашифровать, но если на устройстве есть ключ дешифрования, вы ничего не получите, если у вас нет способа защитить ключ дешифрования, который не позволяет напрямую защитить код.) Аутентичность - это свойство, которое другие люди не может произвести поддельное обновление, и это свойство обычно желательно.
Обратите внимание, что шифрование не помогает с аутентичностью. Это ложное убеждение, которое иногда имеют люди, которые действительно не понимают безопасность, но это просто неправда.
Для некоторых устройств нормально запускать любую прошивку, если владелец так решит. В этом случае вам все еще нужен какой-то механизм, чтобы гарантировать, что только владелец устройства может установить прошивку, а не какой-нибудь случайный прохожий. Обычно это означает, что устройство должно аутентифицировать обновление как зарегистрированное владельцем.