Cómo asegurar que una nueva clave se haya propagado

2

Tengo un concentrador que se comunica con un dispositivo IoT y necesita cambiar la clave de cifrado en ese dispositivo a intervalos frecuentes.

Los mensajes se cifran mediante AES-256-CBC con la clave antigua, y la nueva clave se incluye en esos mensajes.

Una vez que se envíe la nueva clave, debo estar absolutamente seguro de que el concentrador y el dispositivo están sincronizados con la clave que se está utilizando. ¿Por qué? La conexión puede interrumpirse en cualquier momento.

Dado que, aquí hay algunas cosas que he pensado:

  • El concentrador envía la clave, actualizando la suya, luego el dispositivo se actualiza a la nueva clave si la recibe. (¿Qué pasa si el dispositivo no recibe la clave?)
  • El concentrador envía la clave, espera para actualizarse, luego el dispositivo actualiza su clave, luego envía una 'Clave recibida', sobre la cual el concentrador actualiza la suya propia. (¿Qué sucede si nunca se recibe el mensaje del dispositivo?)

Me parece que no importa qué, hay una comunicación final que puede hacer que una parte no confirme una actualización. ¿Hay alguna manera de asegurarse?

    
pregunta sscirrus 18.01.2017 - 22:55
fuente

2 respuestas

1

Supongo que estás usando HMAC o cifrado autenticado para que los mensajes sean inmunes a las modificaciones y para que puedas detectar de forma limpia un descifrado fallido.

  1. El concentrador tiene una lista de dispositivos conectados y, para cada dispositivo conectado, la clave activa que se usará en los mensajes y una lista de claves adicionales para intentar descifrar los mensajes.
  2. El concentrador decide una nueva clave y, para cada dispositivo conectado, la agrega al final de la lista de claves adicionales. (Mejora fácil haciendo un cambio menor aquí: en su lugar, podría crear una nueva clave separada para cada dispositivo. No es necesario que comparta las claves entre dispositivos).
  3. Siempre que haya una cantidad distinta de cero de claves adicionales para un dispositivo, el concentrador envía periódicamente un mensaje (cifrado con la clave activa de ese dispositivo) que contiene una solicitud para cambiar a una nueva clave (la última clave en la lista de claves adicionales).
  4. Siempre que el concentrador reciba un mensaje de un dispositivo conectado, intentará descifrarlo con la clave activa y luego cada una de las claves adicionales hasta que el descifrado tenga éxito. Si el descifrado se realiza correctamente con una de las claves adicionales, entonces reemplace la clave activa con esa clave y luego elimine esa clave y todas las claves anteriores de la lista de claves adicionales.

Cada dispositivo solo necesita recordar una sola clave activa a la vez.

Esto debería significar que las cosas continuarán funcionando incluso en el escenario donde el concentrador alterna entre las teclas A- > B- > C, y un dispositivo no confirma el cambio a la tecla B hasta después de que el concentrador haya anunciado la tecla C .

    
respondido por el Macil 18.01.2017 - 23:49
fuente
1

Los usuarios reales de claves criptográficas probablemente le darán los siguientes consejos:

  • Para cada copia de una clave que se emite, el éxito (intacto) el recibo de esa clave debe ser confirmado al emisor.
  • La adopción de una clave para uso solo se puede permitir que ocurra cuando todos los destinatarios han confirmado el recibo.

Además de suministrar los bits que componen la clave (128 bits, 256 bits o lo que sea), es útil proporcionar metadatos que identifiquen la clave de una manera que sea única para cada clave dentro de su sistema, y preferiblemente Incluida la fecha prevista de adopción. Estos metadatos deben estar vinculados a los bits clave, para que no se separen, por ejemplo, son parte del mismo bloque de datos, con los metadatos como parte de "encabezado".

Los datos cifrados deben formatearse para identificar la clave que se utiliza para cifrarlos. Luego, cada nodo remoto puede detectar cuándo se adoptó la clave Futuro para su uso (es decir, ahora es la clave Activa). La clave anteriormente activa se puede programar para el borrado seguro del almacenamiento local en ese nodo.

Esto implica, entonces, que cada nodo debe realizar un seguimiento de la clave que se adopta actualmente (Activo) y la siguiente clave que se ha emitido con (Futuro). En la fecha / hora planificada de adopción, el nodo central responsable de la distribución puede decidir adoptar la clave Futuro si cada nodo que lo requiere ha confirmado su recepción (por ejemplo, devolviendo los metadatos en un mensaje de acuse de recibo). Esto requiere que el nodo central rastree, para cada clave, a qué nodos ha enviado una copia y a qué nodos ha confirmado su recepción.

Este es realmente el modelo más simple. Si sus nodos son más confiables, usted puede emitir una tubería de más de una clave Futura, con fechas de adopción posteriores y posteriores que se proporcionan en los metadatos.

    
respondido por el D.H. 19.01.2017 - 14:11
fuente

Lea otras preguntas en las etiquetas