Protección de código en flash externo

1

Estoy implementando ejecución de código externo para STM32F765VG con flash NOR (8/16 bit). La idea es ejecutar código desde una memoria flash externa. ¿Hay alguna forma de proteger mi código presente en la memoria externa del acceso no autorizado?

He entendido acerca de seguir dos métodos actualmente. Pero, no estoy seguro de si estoy pensando en la dirección correcta. Además, por favor guíame en la dirección correcta.

Método 1:
Cifre el archivo hexadecimal de código completo en bloque, antes de enviarlo a la memoria externa. Cargue los bloques con lectura normal en la RAM interna, descifre en la RAM interna y ejecútelo desde la RAM. Con este método, las partes externas no podrán entender el contenido del código de la memoria flash externa.

Método 2:
Recompile el software para cada combinación de MCU y flash según el ID de hardware exclusivo de la memoria flash y el ID de MCU. De esta manera, incluso si el código es copiado por un tercero, no se ejecutará ya que los ID de la nueva MCU no coincidirán con el ID asumido en el código.

Por favor sugiera si hay prácticas estándar. ¡Gracias de antemano!

    
pregunta Umar

1 respuesta

1

Primero que todo: has elegido el chip equivocado para el trabajo. Si está tan paranoico como para asegurar el código de su aplicación, debería obtener un chip que:
- Soporta el almacenamiento de códigos criptográficos. (para esto se requiere una capa de máscara especial)
- Soporta la ejecución desde memoria encriptada. (se requiere un bus de memoria especial)

Pero al menos puedes intentarlo:
El método 1 tiene el mayor equilibrio entre seguridad y esfuerzo. Sin embargo, agregará tiempo de arranque ya que no tiene cifrado acelerado por hardware.
No es difícil de implementar, pero no ofrece una seguridad absoluta. Deberá almacenar la clave de descifrado en el mismo tablero.
Encripta cada dispositivo con una nueva clave aleatoria. No base su clave en la ID.

Cuando alguien mire el disimulador del gestor de arranque, será obvio de dónde proviene la clave. Asegúrese de que la clave haya desaparecido cuando alguien esté mirando el gestor de arranque.
Esto te dará más dispositivos devueltos.

Método 2 es difícil de implementar. Podría requerir que distribuya sus objetos a cualquier subcontratista que realice el ensamblaje y la prueba. Sin embargo, no puede evitar que alguien que realmente quiera tener el código lo lea. Y cualquiera que busque en el disemador puede eliminar fácilmente las instrucciones ya que las ubicaciones de ID son conocidas.

    
respondido por el Jeroen3

Lea otras preguntas en las etiquetas