Una chiave segreta condivisa predefinita dovrebbe essere utile qui

3

Sono uno sviluppatore di software che lavora con dispositivi hardware distribuiti sul campo. Ogni tanto, dovrei aggiornare il firmware dell'hardware (aggiornamenti, patch, ecc.)

Sto pensando ora, implementando un canale sicuro per aggiornare questo firmware, e per alcuni controlli che devono essere eseguiti dall'hardware prima di accettare questo firmware.

Ho una conoscenza di base sui principali protocolli di scambio, crittografia crittografica, ecc, e questo è tutto. Non so come applicarli nel mondo reale, quindi speravo di poter ottenere un aiuto qui.

L'aggiornamento del firmware verrebbe eseguito tramite un software personalizzato che viene eseguito sul PC scritto da me, su TCP / IP.

I miei obiettivi principali sono

  1. impedisce che il firmware venga divulgato al pubblico in quanto contiene il nostro IP.
  2. impedisce all'hardware di eseguire altri firmware diversi dal firmware rilasciato da me.

Quello che so, ad un alto livello di vista è

  1. Per crittografare (con una chiave segreta condivisa predefinita) il firmware sul software per PC e inviarlo oltre il firmware.
  2. Una volta che il firmware riceve questi dati crittografati, lo decrittografa con la chiave segreta condivisa predefinita ed esegue l'aggiornamento

Le mie domande sono:

  1. La definizione di una chiave segreta condivisa è sicura in questo aspetto?
  2. Esiste una soluzione "pane n burro" per raggiungere i miei requisiti?
posta 09.07.2013 - 08:26
fonte

4 risposte

2

Rispetto agli obiettivi che ti servono:

  1. Riservatezza dei dati- > crittografia. La domanda è pubblica o segreta. Immagino che tu abbia bisogno di un segreto in cui solo il proprietario della chiave può crittografare e decifrare. Non vuoi che qualcuno cripti il firmware.
  2. Ciò implica un meccanismo di integrità. Se si utilizza uno schema di chiave segreta, si desidera un codice a blocchi autenticato o una combinazione sicura di MAC (codice di autenticazione dei messaggi) e crittografia. L'approccio Encrypt-then-Mac tende ad essere più sicuro per vari motivi.

Per le tue domande:

  1. La condivisione della chiave segreta è sicura fintanto che le parti coinvolte sono affidabili e come @Ricky menziona se non riesci a definire una chiave diversa per dispositivo.
  2. Si distribuisce la chiave segreta sui dispositivi hardware e sul server e quindi la si utilizza con AES per la crittografia. Per l'autenticazione a meno che tu non usi un codice appropriato che combini entrambi DEVE utilizzare chiavi diverse per l'autenticazione MAC.
risposta data 09.07.2013 - 12:05
fonte
1

Avrai bisogno di più della sicurezza delle applicazioni e dei protocolli. Avrai anche bisogno di una robusta sicurezza hardware.

È facile monitorare il flusso di dati da e verso i chip di memoria o leggere il contenuto di un chip flash. Le istruzioni memorizzate nella memoria flash della CPU possono essere recuperate tramite la porta JTAG. Altri attacchi ai canali laterali includono l'analisi della potenza differenziale, l'analisi della temporizzazione, le emissioni RF e persino l'esame microscopico dei chip a ioni ionici. Difendersi da tutti questi (e altri) deve essere considerato e valutato rispetto al valore dell'IP che stai cercando di proteggere.

L'industria delle carte di pagamento ha creato un buon insieme di standard sulla difesa dei pad PIN contro il contrario ingegneria. Potresti volerli guardare.

Sta diventando sempre più comune vedere le persone decodificare l'hardware per recuperare i segreti che contengono. Per un esempio di qualcuno disposto a scavare in profondità, controlla questa serie di articoli sul reverse engineering il protocollo RF per un antifurto wireless.

    
risposta data 10.07.2013 - 20:10
fonte
0

Perché reinventare la ruota? Usa rsync + ssh, scp o sftp.

    
risposta data 12.07.2013 - 04:54
fonte
0

La tua domanda non specifica alcuna restrizione computazionale, quindi presumo di avere una CPU moderna per risolvere il problema.

Personalmente considero il segreto condiviso come la forma di autenticazione più bassa. Quello che stai descrivendo sembra ridursi a "Come può questa macchina credere che il pacchetto binario che gli viene chiesto di eseguire si trova nella sua cerchia di fiducia?".

Presumo che tu abbia un'organizzazione con accesso a un certificato SSL che si configurerebbe come un centro di fiducia. La CA per SSL conferma la chiave e tutte le chiavi firmate da quella chiave saranno considerate attendibili. Sono molto economici e veloci da configurare se ne manchi uno.

Da lì in poi hai una miriade di protocolli tra cui scegliere. Il mio istinto non sarebbe quello di vagare in un territorio fresco, ma fare affidamento su metodi provati. TLS offre trasporti a basso costo e verifica dell'origine. ECDHE offre un buon segreto in avanti. SSH ti offre il primo canale privilegiato per generare le chiavi del client ed estrarre la parte pubblica per la firma se le macchine sono troppo remote per una visita al sito.

Il principio guida su cui dovresti pensare è "Come posso risolvere questo problema con l'amministrazione dei sistemi anziché la programmazione?".

    
risposta data 13.07.2013 - 16:21
fonte

Leggi altre domande sui tag