Come posso migliorare la sicurezza in un ambiente di produzione?

4

Sto configurando un sistema in cui i dispositivi verranno testati subito dopo la produzione. Ogni dispositivo ha una chiave AES individuale, che deve essere nota per comunicare. Queste singole chiavi vengono consegnate dal produttore del dispositivo in un file di spedizione (uno per 1000 dispositivi), che è a sua volta crittografato con RSA. Solo l'autorità di prova ha la chiave privata per decifrare tali file di spedizione.

Il piano corrente è stato il primo ad esportare le chiavi del dispositivo dai file di spedizione in un database centrale. Questo sarà fatto una volta per una consegna di ~ 1000 dispositivi. L'applicazione di test accederà quindi a questo database per estrarre le singole chiavi del dispositivo.

Mettere tutte le chiavi del dispositivo direttamente nel database funziona ma non è una soluzione molto interessante: chiunque accede al database ottiene automaticamente l'accesso alle chiavi del dispositivo.

Tenendo presente che questo è molto vulnerabile, come posso migliorare la sicurezza? Potrei AES crittografare le chiavi del dispositivo prima di scrivere nel database, ma poi l'applicazione di test deve conoscere questa chiave privata AES. Il problema passa semplicemente a "come mantenere questa chiave interna segreta". Quindi è un po 'meglio, ma ancora insoddisfacente.

Cos'altro potrebbe essere una soluzione accettabile? Forse usando una smart card?

    
posta michael 26.03.2018 - 18:33
fonte

2 risposte

4

L'opzione migliore è utilizzare un modello di sicurezza hardware (HSM) per crittografare / decodificare i dati nel database. Ma gli HSM sono costosi e possono essere scomodi da usare.

Senza il supporto dell'hardware, avrai il problema dell'uovo e della gallina dove conserverai la chiave iniziale. Detto questo, aggiungere un ulteriore livello di crittografia, crittografia prima di essere archiviato nel database e memorizzare la password principale AES in un file di configurazione per il client aggiunge sicurezza. Un utente malintenzionato che ottiene l'accesso al DB, ad esempio a causa di una vulnerabilità di SQL injection o di un'errata configurazione del database, dovrà comunque accedere al master di sistema AES. Quindi dovranno compromettere il tuo file di configurazione o accedere alla memoria del tuo cliente.

Assicurati di ruotare frequentemente la password principale AES (forse per ogni lotto). Ciò ridurrà il danno causato da un compromesso DB e dal furto di chiavi. Inoltre, non memorizzerei la password principale AES in testo non crittografato. È possibile crittografarlo con una seconda password AES statica che è cablata nel codice. Ciò aggiunge una sicurezza minima, ma impedisce ai dipendenti di stampare accidentalmente il file di configurazione e di esporre la password.

    
risposta data 26.03.2018 - 20:45
fonte
2

Come progettato, il sistema richiede chiavi AES "dappertutto". Non dici quali sono i dispositivi, ma la prima cosa che ti viene in mente è di allontanarti dall'uso di AES in un sistema a chiave pubblica.

(Questo potrebbe non funzionare se i dispositivi sono molto computazionalmente limitati, come una smart card, ma la maggior parte dei dispositivi ora può gestire le chiavi pubbliche.)

    
risposta data 26.03.2018 - 19:47
fonte

Leggi altre domande sui tag