¿Sería buena una clave secreta compartida predefinida aquí?

3

Soy un desarrollador de software que trabaja con dispositivos de hardware que se implementan en el campo. De vez en cuando, necesitaría actualizar el firmware del hardware (actualizaciones, parches, etc.)

Estoy pensando en ahora, implementar un canal seguro para actualizar este firmware y realizar algunas comprobaciones por parte del hardware antes de aceptar este firmware.

Tengo un conocimiento básico sobre los protocolos de intercambio de claves, cifrados cifrados, etc., y eso es todo. No necesariamente sé cómo aplicarlos en el mundo real, así que esperaba poder obtener ayuda aquí.

La actualización del firmware se realizará a través de un software personalizado que se ejecuta en la PC escrita por mí, a través de TCP / IP.

Mis objetivos principales son

  1. evita que el firmware se filtre al público ya que contiene nuestra IP.
  2. evita que el hardware ejecute otros firmwares que no sean el firmware publicado por mí.

Lo que sí sé, en un punto de vista de alto nivel es

  1. Para cifrar (con una clave secreta compartida predefinida) el firmware en el software de la PC, y enviarlo por otro firmware.
  2. Una vez que el firmware recibe estos datos encriptados, los descifra con la clave secreta compartida predefinida y realiza la actualización

Mis preguntas son:

  1. ¿Es seguro definir una clave secreta compartida en este aspecto?
  2. ¿Existe una solución de "pan y mantequilla" para cumplir mis requisitos?
pregunta 09.07.2013 - 08:26
fuente

4 respuestas

2

Con respecto a tus metas necesitas:

  1. Confidencialidad de los datos - > Cifrado. La pregunta es pública o secreta. Supongo que necesita uno secreto en el que solo el propietario de la clave pueda cifrar y descifrar. No quieres que nadie cifre el firmware.
  2. Eso implica un mecanismo de integridad. Si usa un esquema de clave secreta, entonces desea un cifrado de bloque autenticado o una combinación segura de MAC (código de autenticación de mensaje) y cifrado. El enfoque de Encrypt-then-Mac tiende a ser más seguro por varias razones.

Para sus preguntas:

  1. El intercambio de claves secretas es seguro siempre que se confíe en las partes involucradas y como se menciona en @Ricky si no puede definir una clave diferente por dispositivo.
  2. Implementas la clave secreta en tus dispositivos de hardware y en el servidor y luego la usas con AES para el cifrado. Para la autenticación, a menos que use un cifrado apropiado que combine ambos, DEBE usar diferentes claves para la autenticación MAC.
respondido por el curious 09.07.2013 - 12:05
fuente
1

Necesitará más que seguridad de aplicaciones y protocolos. También necesitarás una robusta seguridad de hardware.

Es fácil monitorear los datos que fluyen hacia y desde los chips de memoria, o leer el contenido de un chip flash. Las instrucciones almacenadas en la memoria flash de la CPU se pueden recuperar a través del puerto JTAG. Otros ataques de canal lateral incluyen el análisis de potencia diferencial, el análisis de tiempo, las emisiones de RF e incluso el examen microscópico de los chips con haz de iones. La defensa contra todos estos (y más) debe considerarse y compararse con el valor de la propiedad intelectual que intenta proteger.

La industria de tarjetas de pago ha creado un buen conjunto de estándares para defender las almohadillas de PIN contra el reverso Ingenieria. Es posible que desee mirar a ellos.

Se está volviendo cada vez más común ver que la gente invierte el hardware de ingeniería para recuperar los secretos que contienen. Para ver un ejemplo de alguien dispuesto a profundizar, eche un vistazo a esta serie de artículos sobre ingeniería inversa el protocolo de RF para una alarma antirrobo inalámbrica.

    
respondido por el John Deters 10.07.2013 - 20:10
fuente
0

¿Por qué reinventar la rueda? Utilice rsync + ssh, scp o sftp.

    
respondido por el Timbo Tambo 12.07.2013 - 04:54
fuente
0

Su pregunta no detalla restricciones de cálculo, por lo que asumo que tengo una CPU moderna para resolver el problema.

Personalmente, pienso que el secreto compartido es la forma más baja de autenticación. Lo que estás describiendo parece reducirse a "¿Cómo puede esta máquina confiar en que el paquete binario que se le pide que ejecute está en su círculo de confianza?".

Supongo que tiene una organización con acceso a un certificado SSL que se formaría como un centro de confianza. La CA para el SSL confirma la clave y todas las claves firmadas por esa clave serían de confianza. Son muy económicos y rápidos de configurar si no tiene uno.

A partir de ahí tienes una gran cantidad de protocolos para elegir. Mi instinto sería no vagar en territorio nuevo, sino confiar en métodos probados. TLS ofrece transporte barato y verificación de origen. ECDHE proporciona buen secreto hacia adelante. SSH le da el primer canal de privilegio para generar las claves de cliente y extraer la parte pública para firmar si las máquinas son demasiado remotas para una visita al sitio.

El principio de control en el que deberías pensar es "¿Cómo puedo resolver esto con la administración de sistemas en lugar de la programación?".

    
respondido por el Árni St. Sigurðsson 13.07.2013 - 16:21
fuente

Lea otras preguntas en las etiquetas