Editar: He encontrado un esquema que se ajusta a mis límites (poca memoria, solo AES está disponible): AES-CMAC descrito en RFC 4493 (recuerde utilizar una clave diferente para el cifrado y MAC;).
Estoy trabajando en un sistema limitado e integrado que debe actualizarse en el campo. Quiero proteger el firmware contra copia / ingeniería inversa y modificación (se transferirá a través de HTTP simple).
Las primeras partes son fáciles: uso AES-128-CBC. Las claves se queman en el gestor de arranque. La memoria del microcontrolador está bloqueada.
La segunda parte es mi problema. Mi sistema es demasiado limitado para realizar una verificación de firma de "peso pesado" (por ejemplo, RSA).
Tengo una idea para distribuir el firmware como AES (firmware + hash (firmware)). Mi dispositivo primero descifra la imagen completa, calcula el hash de la parte desencriptada y la compara con el hash original adjunto al final).
Sé que el cifrado solo no es la autenticación, pero no puedo imaginar un adjunto exitoso contra algo "interno" de AES que proporcione el hash correcto (cifrado) al final.
Preguntas:
- ¿Mi esquema es seguro?
- ¿Puede el hash ser "débil" y aun así asegurar todo el esquema? (por ejemplo, ¿MD5? Sé que está "roto", pero creo que todavía es difícil meterse con él dentro de una imagen encriptada).