Cifrado en un sistema integrado

7

Después de aceptar una respuesta a mi pregunta anterior , Estoy empezando a tener dudas.

Quiero actualizar la información de precios en las máquinas expendedoras insertando una tarjeta SD con un nuevo precio.

Tengo que cifrar el archivo, porque cualquiera que pueda cambiarlo puede obtener bebidas de un centavo. Las personas que almacenan las máquinas intercambiarán las tarjetas cuando haya nuevos precios. Tienen un salario mínimo y, en general, no son piratas informáticos de renombre, pero supongo que podrían pasar una tarjeta.

La tarjeta SD estaría detrás de una carcasa cerrada y cualquiera que la abriera podría simplemente limpiar la caja de efectivo y amp; Probablemente sea poco probable que pase la tarjeta.

El código en las máquinas rara vez se cambia, pero habrá una opción para la actualización del firmware (a través de la misma tarjeta SD), así que supongo que podría actualizar las claves de esa manera si se vieran comprometidas & Almacénelos en la memoria no volátil.

Cada máquina tiene una ID de CPU única y también es consciente de su tipo de modelo "bebidas, dulces, etc." donde todas las máquinas del mismo tipo tienen la misma estructura de precios, si es de alguna utilidad para la siembra, etc.

Pregunta: ¿cuál es un buen algoritmo para usar cuando escribo en Delphi en Windows y leo en C en un sistema integrado con poca memoria (128 kB) (es probable que el archivo sea del orden de 512 a 1.024 bytes)? ¿Cómo lidiar con las claves en este escenario? Código duro en el s / w?

¿Algún otro comentario o sugerencia?

    
pregunta Mawg 07.11.2012 - 08:25
fuente

1 respuesta

6
  

Tengo que cifrar el archivo, porque cualquiera que pueda cambiarlo puede obtener   Un centavo bebe.

El cifrado se utiliza para la confidencialidad, para evitar que terceros no autorizados lean el archivo. Dado que su objetivo es evitar que las personas cambien el archivo, lo que necesita es una firma digital.

Hay dos tipos de firmas digitales: firmas asimétricas y firmas simétricas.

Al usar una firma simétrica, el lado que verifica la firma debe tener la misma clave secreta utilizada por el firmante. En su caso, esto significa que la clave secreta debe residir en el firmware de la máquina que se encuentra en la misma tarjeta SD que el archivo que intenta proteger. No es muy seguro.

Al usar una firma asimétrica, el lado que verifica la firma (es decir, la máquina expendedora) tiene una clave pública y no tiene la clave privada necesaria para firmar un archivo, lo que resuelve el problema anterior.

Pero esto todavía es trivial para que un atacante se rompa. Dado que el firmware está en la tarjeta SD, y asumimos que el atacante puede modificar la tarjeta SD, el atacante simplemente puede modificar el firmware para que no revise la firma.

La solución ideal para esto sería si el hardware de la máquina expendedora (por ejemplo, BIOS) validara una firma en el firmware antes de cargarlo. Hay dispositivos integrados en el mundo que hacen esto (por ejemplo, consolas de juegos, dispositivos móviles) pero las máquinas expendedoras no son una de ellas.

Dada la falta de una comprobación de firma de firmware, no hay forma de lograr una seguridad real para esto. Lo mejor que puedes hacer es ofuscar el código para que a un pirata informático le resulte más difícil realizar una ingeniería inversa y modificarlo.

Si tiene una buena razón para creer que los atacantes no pueden modificar el firmware, todo lo que debe hacer es firmar el archivo utilizando RSA con relleno PKCS # 1 (que es lo suficientemente bueno para sus necesidades). El código Delphi para esto se puede encontrar en LockBox de TurboPower ; OpenSSL tiene código C

Habiendo dicho todo eso, no parece haber mucha amenaza aquí. Si un operador baja el precio de una máquina específica, debería poder identificar la discrepancia para esa máquina entre la cantidad de bebidas que se colocaron en la máquina y la cantidad de dinero que obtuvo de ella. Esto es algo que debe verificar de todos modos para asegurarse de que los operadores de la máquina no estén simplemente tomando dinero (que es claramente una amenaza más grave que robar algunas bebidas).

    
respondido por el David Wachtfogel 07.11.2012 - 08:53
fuente

Lea otras preguntas en las etiquetas