Essa pergunta é muito ampla, mas, como você omitiu a coisa mais importante, sinto que preciso me intrometer.
Autentique a atualização .
Se você deseja garantir que seus dispositivos estejam executando seu código, precisará de autenticação, não criptografia. A criptografia garante que outras pessoas não saibam o que está no seu código, e isso é difícil de alcançar e raramente útil. (Você pode criptografar, mas se a chave de descriptografia estiver no dispositivo, você não ganha nada, a menos que tenha uma maneira de proteger a chave de descriptografia que não permite proteger o código diretamente.) Autenticidade é a propriedade que outras pessoas não pode produzir uma atualização falsa, e essa propriedade geralmente é desejável.
Observe que a criptografia não ajuda na autenticidade. É uma crença falsa que as pessoas que realmente não entendem de segurança às vezes entendem, mas simplesmente não é verdade.
Para alguns dispositivos, não há problema em executar qualquer firmware, se o proprietário assim o desejar. Nesse caso, você ainda precisa de algum mecanismo para garantir que apenas o proprietário do dispositivo possa instalar o firmware, e não um transeunte aleatório. Geralmente, isso significa que o dispositivo deve autenticar a atualização como proveniente do proprietário registrado.