Código de protección dentro del microcontrolador [cerrado]

0

Como prefacio, lo que pido está altamente relacionado con esta pregunta . Dicho esto, la pregunta vinculada se hizo en 2011 (hace 7 años), y me imagino que el mundo de los microcontroladores ha cambiado (al menos hasta cierto punto) desde entonces.

Quiero incluir información confidencial como parte de un programa en algún tipo de uC - AVR, ARM, lo que sea. Quiero proteger estos datos contra las personas que obtienen acceso físico al dispositivo (si lo pierdo o si me lo roban). Quiero poder reprogramar / flashear fácilmente este dispositivo. Supongo que tengo un método perfecto (pero no útil) para autenticarme en el dispositivo que un atacante no tendría, por lo que sabe que soy yo, pero no puedo usar esta autenticación para, por ejemplo, generar una clave de cifrado. o algo por el estilo. ¿Cómo puedo proteger mi código?

Información adicional: Sé que hay fusibles para evitar volcados hexadecimales, y es posible que tenga que usarlos dependiendo de las respuestas a esta pregunta. Sé que pueden ser derrotados eliminando y probando con láser la uC, pero mantendrán a tu aficionado promedio fuera. Desafortunadamente, también hacen que resulte más difícil volver a realizar el flasheo, lo que requiere un programador externo (lo que no es deseable). Estoy de acuerdo con tener que agregar algunos circuitos / componentes adicionales al dispositivo, realmente solo necesito ver qué es posible (y qué ha cambiado desde 2011).

EDITAR:

Se me ha pedido más claridad sobre mi problema específico, así que lo agregaré aquí. Notaré que originalmente decidí no hacerlo porque (1) no quiero atascar las respuestas en una vena de pensamiento específica, y (2) pensé que obtendría más respuestas de tipo "no hagas esto" que útiles Dicho esto:

Estoy trabajando en un administrador de contraseñas de hardware. Lo sé, hay un montón de estos en este momento. Este leería una huella digital y escribiría la contraseña correspondiente (actuando como un teclado USB). Si el código fuente en el uC es seguro, creo que (dado mis posibles vectores de ataque) esto será lo suficientemente seguro para mi uso personal. ¿Lo recomendaré a una agencia gubernamental? Obviamente no. La uC usa una tecla especial para comunicarse con el escáner de huellas dactilares, y el escáner de huellas dactilares puede responder con una representación digital de la huella dactilar que podría usarse para descifrar una contraseña almacenada en la uC.

El problema principal: si se obtiene acceso físico al dispositivo, un atacante podría obtener la clave especial de la uC, obtener la huella digital (almacenada en el escáner para comparación) y descifrar la contraseña almacenada en la uC de nuevo. Si la uC (o el hex de la uC) no es legible, un atacante no puede obtener esta información tan fácilmente. Por lo tanto: ¿cómo puedo mantener segura la información, a la vez que puedo reprogramar lo suficientemente fácilmente la UC?

    
pregunta Helpful

1 respuesta

2

Flash & bloquee el microcontrolador con un cargador de arranque que carga el código encriptado desde una memoria flash externa a la RAM. Entonces el flash externo puede ser reescrito a voluntad. Para obtener puntos de bonificación, use un microcontrolador con un flash de alta seguridad para almacenar la clave de cifrado.

También hay microcontroladores con múltiples regiones de flash: puede poner el cargador de arranque en una, bloquearlo y tener el código encriptado en las otras (tal vez múltiples, para actualizaciones seguras).

Si hay vulnerabilidades en su código, puede ser secuestrado y leído desde la memoria RAM.

    
respondido por el τεκ

Lea otras preguntas en las etiquetas