Sono in procinto di costruire una rete di piccoli dispositivi (microcontrollori ARM con qualcosa come la connettività nRF24L01). I controller riceveranno i comandi da un sistema centrale tramite questi collegamenti wireless e sono in procinto di progettare il protocollo. La riservatezza è un non obiettivo, ma integrità e integrità; autenticità sono. Di conseguenza, dobbiamo convalidare sia l'origine che evitare gli attacchi di replay dei pacchetti. Vorrei evitare qualsiasi protocollo di richiesta / risposta per ridurre il traffico e il consumo della batteria, quindi quello che ho in mente è qualcosa del tipo:
- L'ID della chiave e del dispositivo vengono masterizzati nel dispositivo nel firmware.
- Un contatore è inizializzato su 0.
- Ogni comando inviato al dispositivo contiene l'ID dispositivo, contatore ++ e il comando stesso. Quindi un HMAC-SHA1 viene calcolato su tutti questi campi e allegato.
- Alla ricezione di un comando, il dispositivo verifica l'HMAC-SHA1, l'ID del dispositivo e assicura che il valore del contatore sia strettamente maggiore del contatore memorizzato nella NVRAM. In tal caso, imposta il contatore NVRAM sul valore nel pacchetto ricevuto ed esegue il comando.
- (Probabilmente un ack di qualche tipo qui.)
Questo protocollo è simile a tutto ciò che esiste (non ho trovato nulla) o c'è qualcosa di adatto che esiste già? Mi manca un grosso difetto?