Evitar ataques de repetición en Lightweight Channel

3

Estoy en el proceso de construir una red de dispositivos pequeños (microcontroladores ARM con algo como conectividad nRF24L01). Los controladores recibirán comandos de un sistema central a través de estos enlaces inalámbricos, y estoy en el proceso de diseño del protocolo. La confidencialidad no es un objetivo, pero la integridad y la amp; la autenticidad son En consecuencia, debemos validar tanto la fuente como evitar los ataques de repetición de los paquetes. Me gustaría evitar cualquier protocolo de desafío / respuesta para minimizar el tráfico y la descarga de la batería, por lo que tengo en mente algo como esto:

  • La clave y la ID del dispositivo se graban en el dispositivo en el firmware.
  • Un contador se inicializa a 0.
  • Cada comando enviado al dispositivo contiene la ID del dispositivo, el contador ++ y el comando en sí. Luego, se calcula un HMAC-SHA1 sobre todos estos campos y se adjunta.
  • Al recibir un comando, el dispositivo verifica el HMAC-SHA1, la ID del dispositivo y garantiza que el valor del contador sea estrictamente mayor que el contador almacenado en la NVRAM. Si es así, establece el contador NVRAM al valor en el paquete recibido y ejecuta el comando.
  • (Posiblemente un ack de algún tipo aquí).

¿Este protocolo es similar a cualquier cosa que existe (no pude encontrar nada) o hay algo adecuado que ya existe? ¿Me estoy perdiendo un defecto importante?

    
pregunta David 13.03.2014 - 08:21
fuente

1 respuesta

1

La única sugerencia que puedo dar es verificar siempre los ack y hacer que incluyan el contador, de lo contrario, un atacante podría soltar (o retrasar, pero no reordenar) los paquetes.

Además, debe pensar en una forma de realizar un seguimiento del valor de cada contador de dispositivo.

    
respondido por el miniBill 13.03.2014 - 08:57
fuente

Lea otras preguntas en las etiquetas