Esquema de protección del firmware

1

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:

  1. ¿Mi esquema es seguro?
  2. ¿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).
pregunta filo 02.06.2016 - 17:35
fuente

1 respuesta

1

No, no es seguro.

En primer lugar, está sugiriendo un MAC-luego-cifrado, que se sabe que es vulnerable a los ataques de "texto cifrado elegido" (es decir, un atacante puede tomar un mensaje válido, modificarlo y observar el resultado para obtener información). sobre el texto en claro).

En segundo lugar, está sugiriendo el uso de un hash en lugar de un MAC o incluso una firma digital. Un hash no está diseñado para verificar el remitente de la información, solo que la información no se ha modificado desde que se envió. Un MAC puede verificar que el mensaje proviene del remitente. Una firma digital puede verificar que el remitente es quien dice ser. Quieres una firma digital.

Finalmente, está confiando en el cifrado simétrico, a.k.a. cifrado de "clave compartida". ¿Cómo se determina esa clave? Usted mencionó que no desea hacer RSA (un ejemplo de encriptación de clave pública / asimétrica), lo que significa que probablemente planea mantener la clave de encriptación en su dispositivo, o entregarla a quienes compren / mantengan el dispositivo. Esto significa que la clave es detectable. Dado que esta es una clave simétrica, esto significa que, una vez descubierta, la clave se puede utilizar para crear mensajes que parezcan válidos usando su esquema. Ciertamente, hay módulos de hardware que pueden hacer MUCHO más difícil y costoso extraer la clave (tal vez incluso imposible), pero la clave aún puede ser robada por USTED, en cuyo caso necesitará una forma de cambiar la clave y actualizar todo. dispositivos que usaban esa tecla anteriormente, si desea mantener la seguridad en tal evento.

¿Por qué cree exactamente que su dispositivo no es capaz de usar tecnología estándar como la criptografía de clave pública? Deberías usar métodos probados en lugar de rodar los tuyos.

    
respondido por el Ben 02.06.2016 - 18:42
fuente

Lea otras preguntas en las etiquetas