Antes de pensar em canais de comunicação seguros e mecanismos de reversão, acho que você deve investir algum tempo nos seguintes assuntos, que serão muito mais importantes a longo prazo:
-
Versionamento: com o tempo, você terá diferentes revisões de sua plataforma incorporada, nem todas com os mesmos recursos. Seu dispositivo precisa ser capaz de verificar se uma atualização recebida é compatível e pode ser aplicada.
-
Planejar caminhos de atualização: você não sabe como seu sistema fica daqui a 5 anos, mas quer que seu sistema hoje seja capaz de acomodar um firmware que você ainda vai desenvolver. Essa atualização pode exigir várias etapas, que devem ser documentadas.
-
Não se esqueça de downgrades: em algum momento, você introduzirá alterações que impossibilitarão o downgrade. Como você quer lidar com eles?
Aqui algumas ideias para os detalhes técnicos:
-
Canal de comunicação segura e de autenticação: Contanto que o seu dispositivo tenha um mecanismo para validar uma atualização recebida, as propriedades exatas do canal de comunicação serão menos importantes. Essa validação precisa verificar se os dados são consistentes e compatíveis .
-
Reversão: Um mecanismo simples pode ser implementado usando duas partições de tamanho igual para manter o sistema operacional inteiro. É uma boa ideia organizar o SO para trabalhar somente leitura e local e dados que podem ser alterados em uma partição separada.
O bootloader precisa de um sinalizador de inicialização informando qual partição iniciar. Ele sempre tentará inicializar a partir dessa partição primeiro, e voltará para a outra partição se de alguma forma falhar. Esse sinalizador de inicialização pode ser armazenado em qualquer lugar em que o gerenciador de inicialização tenha acesso.
Para atualizar seu dispositivo, você copia o novo sistema (uma vez que tenha sido validado) para a partição atualmente inativa, altere o boot-flag e reinicialize. Nos scripts de inicialização do seu sistema, você verifica se foi inicializado a partir da partição esperada. Se isso não aconteceu, algo deu errado e você pode tomar as medidas adequadas.