Sviluppo del protocollo di automazione domestica, Come rendere sicuri i messaggi?

0

Supponiamo di avere un hub chiamato H e un controller del blocco porta chiamato D1

Ora abbiamo un dispositivo elettronico malizioso che imita H chiamato M

H invia D1 un comando per aprire la porta, D1 sblocca la porta.

M acquisisce il messaggio (comando), ora presumo che M possa ripetere un messaggio identico in un secondo momento e causare D1 da sbloccare.

Come posso smettere?

La mia idea è di includere un timestamp, che è convalidato da D1 e crittografare il messaggio. Se il timestamp è più vecchio di 30s, D1 ignorerà il comando. Questo sembra comunque non sicuro.

Chiarimenti:

Nessuno finora

Ulteriori informazioni

Attacchi di ripetizione

    
posta mateos 23.01.2017 - 06:53
fonte

2 risposte

1

Sei sulla strada giusta, ma avresti bisogno di 3 cose:

  • Sblocca messaggio
  • Timestamp
  • ID messaggio univoco

In questo modo il messaggio di sblocco non può essere catturato e riprodotto nella finestra di 30 secondi. Dovresti semplicemente tenere un registro degli ID univoci usati in D1 che sono stati utilizzati negli ultimi 30 secondi

Finché la chiave privata in H viene mantenuta sicura e la chiave pubblica in D1 non viene manomessa ... questo metodo dovrebbe essere sicuro.

Va anche notato che D1 dovrebbe avere un metodo per sincronizzare in sicurezza il proprio sistema orario interno con H periodicamente per evitare la deriva temporale che potrebbe altrimenti rendere D1 completamente inattivo.

Un'altra opzione sarebbe quella di mantenere una chiave pubblica / privata sia su H che su D1 ... questo ti permetterebbe di creare un segreto condiviso che potrebbe essere usato come chiave segreta per qualcosa come la comunicazione AES256 tra H e D1 . Lo sto notando perché hai inserito TLS come tag nella tua domanda ... e questo è essenzialmente il modo in cui funziona TLS.

TLS Handshake

    
risposta data 23.01.2017 - 06:58
fonte
1

Un modo tipico per risolvere il problema di riproduzione è utilizzare un codice rolling o time password (OTP) . L'idea principale di questi approcci è che ogni messaggio è diverso da quello precedente e il destinatario sa quale messaggio attenderà successivamente dal mittente. In questo modo gli attacchi di riproduzione sono impossibili, ma è necessario sincronizzare tra mittente e destinatario. Tuttavia, tieni presente che i problemi con questa sincronizzazione possono essere utilizzati per per l'attacco di sistemi rolling code .

Un altro modo è utilizzare un meccanismo challenge-response in cui il controller del blocco porta crea un sfida casuale e l'hub risponde a questa sfida con una risposta creata dalla sfida e alcuni segreti condivisi tra l'hub e la serratura della porta. Dal momento che il blocco porta emette una nuova sfida casuale per tutto il tempo e si aspetta solo la risposta a esattamente questa sfida, gli attacchi di replay sono impossibili. Rispetto al rolling code o OTP non è necessaria alcuna sincronizzazione, ma l'hub ha bisogno della capacità di ricevere la sfida anziché solo la trasmissione di dati.

    
risposta data 23.01.2017 - 07:38
fonte

Leggi altre domande sui tag