Trasferimento dati IOT sicuro

0

Ho una domanda su un'architettura software di monitoraggio.

Pensa a 50 diversi luoghi in diverse città. Supponiamo che queste località siano piccole piante.

In ogni posizione ci sono circa 50 dispositivi che producono piccole quantità di dati che è una stringa e un contatore intero.

Ho bisogno di prendere questi dati dai dispositivi e salvarli in un database del server all'interno dello stabilimento.

Periodicamente ho bisogno di inviare questi dati dal server all'HQ per la segnalazione. Non voglio inviare dati dall'impianto all'HQ in tempo reale poiché la connessione potrebbe essere interrotta per un giorno o 2 tra l'impianto e il quartier generale.

Supponiamo che non ci fidiamo degli operatori di stabilimento e che i prodotti possono essere rubati. Per esempio. 50 prodotti sono prodotti nello stabilimento ma solo 40 sono segnalati al quartier generale.

Fondamentalmente, una stringa e un intero dovrebbero essere presi da un dispositivo e trasmessi all'HQ in un'altra città.

Ci sono 3 luoghi in cui i dati dovrebbero essere protetti, immagino.

  1. Tra dispositivo e server. (Entrambi sono nello stabilimento, saranno collegati via ethernet o seriale)
  2. Sul server
  3. Tra server e HQ

1) Per il primo percorso; il dispositivo si troverà in una custodia rigida che non può essere aperta da nessuno, ad eccezione del personale autorizzato. Il software sul dispositivo avrà una chiave SHA e crittograferà i dati e li invierà al server via seriale o ethernet. Il server scrive dati crittografati o decrittografati in un database.

  • La crittografia dei dati e l'invio sul socket TCP sono abbastanza sicuri?
  • Poiché il dispositivo non può disporre di un modulo di sicurezza hardware, la chiave di crittografia sarà hardcoded e sarà in memoria. C'è un modo per fissare la chiave oltre a bloccarla in una custodia in acciaio?
  • Se il server ha la stessa chiave SHA che si trova sul dispositivo, dovrebbe trovarsi su un modulo di sicurezza hardware?

2) Il server sarà protetto da una custodia rigida e sarà accessibile dall'HQ tramite la connessione desktop remoto. Il software antivirus e firewall verrà installato e configurato.

3) Devo crittografare nuovamente i dati sul server e inviarlo su socket TCP e decifrare al centro?

  • Devo usare un protocollo come https e usare REST?
  • Raccomandi un'altra soluzione?
posta lonerunner 16.10.2018 - 17:06
fonte

1 risposta

1

Supporrò che i dispositivi trasmettano tuple (serial, counter, key, value) dove:

  • seriale: un ID univoco per il dispositivo (idealmente impostato in fabbrica).
  • contatore: tiene traccia del numero di messaggi inviati al server centrale
  • chiave: nome del parametro che stai inviando
  • valore: il numero

Fai in modo che i dispositivi crittografino quel grosso messaggio con la chiave pubblica del centro (se ti puoi permettere anche di avere una chiave privata per dispositivo, aggiungi anche una firma digitale. Altrimenti, usa una parte fissa sul campo ID seriale che era generato a caso e non è noto a terzi).

Il server dell'impianto vede sempre solo messaggi crittografati, quindi non può modificarli. Potrebbe scegliere di perdere alcuni messaggi, ma si noterà il divario nel contatore. O che un dato dispositivo ha smesso di inviare dati due settimane fa.

Si noti che passiamo da "protezione dei dati su tre punti" a "protezione tra dispositivo e centro". Ovviamente, non c'è motivo per cui il Plant Server non possa utilizzare ulteriormente https durante la connessione con il server centrale, ma ciò non sarebbe necessario per la riservatezza dei messaggi stessi.

Parli di "chiave SHA", che non ha molto senso (SHA è usato per i digest dei messaggi ...). Basta usare la crittografia asimmetrica. I tuoi dispositivi possono probabilmente utilizzare la crypto della curva ellittica.

Hai ancora bisogno di ottenere gli altri bit giusti, ad esempio utilizzando una modalità di crittografia autenticata (ad esempio GCM) oppure eseguendo controlli aggiuntivi, un utente malintenzionato che ha compromesso l'intero dispositivo, potrebbe impersonare quel dispositivo ( ma solo quello). Il server centrale dovrebbe verificare che le cose abbiano un senso ... ma altrimenti questo dovrebbe fornire una buona base per iniziare.

    
risposta data 16.10.2018 - 18:06
fonte

Leggi altre domande sui tag