Un file scaricato firmato può essere verificato in modo sicuro se si controlla solo la chiave privata e l'algoritmo di download / verifica?

0

Sto progettando la procedura di aggiornamento per le telecamere IP. Mi chiedo se il mio attuale design sia abbastanza sicuro.

Ho un file binario che voglio ottenere su un dispositivo. Faccio un hash di questo file binario e criptico l'hash con la mia chiave privata (una firma). Ho messo questo file binario e l'hash crittografato in un file zip. Creo un hash MD5 del file zip. Ho messo la chiave pubblica, l'hash MD5 e il file zip pubblicamente disponibili.

Ho diversi dispositivi, alcuni dei quali sotto controllo client ostile, alcuni dei quali sotto controllo client amichevole.

I client amichevoli hanno un algoritmo di download come questo:

Alla ricezione di un comando, contenente gli URL, gli URL forniti vengono utilizzati per scaricare la chiave pubblica, l'hash MD5 e il file zip. Il file zip scaricato viene controllato per vedere se corrisponde all'hash MD5. Viene quindi estratto. Quindi la chiave crittografata viene decifrata con la chiave pubblica fornita. Un hash è costituito dal file binario e confrontato con la chiave decrittografata.

Se il controllo MD5 e il controllo hash del file binario hanno esito positivo, il binario viene eseguito con accesso root.

I client ostili hanno accesso all'intero dispositivo, quindi ogni segreto memorizzato sul dispositivo è noto a loro. Tuttavia, non hanno accesso al sistema in cui ho archiviato la chiave privata.

Da quello che posso vedere, il comando e la tempistica della stessa è potenzialmente ostile, gli URL sono potenzialmente ostili, quindi lo zip è potenzialmente ostile, come lo sono il binario e l'hash e MD5. L'hash MD5 è facilmente bypassato, ma serve solo come controllo dell'integrità dei file. L'hash crittografato del binario, tuttavia, è il mio principale punto di difesa.

Quando lo zip e il binario e l'hash crittografato e la chiave pubblica sono tutti sotto il controllo dell'attaccante, il mio sistema è ancora sicuro (cioè, un utente malintenzionato può far eseguire a un client amichevole un file binario non derivato da me)? Rompere la sicurezza è più facile da quando vengono forniti "testo cifrato" e "testo in chiaro" e la chiave pubblica? Se è più facile, è più facile da qualsiasi grandezza rilevante?

    
posta Pimgd 14.04.2015 - 13:16
fonte

2 risposte

2

No, il tuo processo di aggiornamento è difettoso e chiunque cerchi di comprimerlo avrà successo.

Suppongo che tu non stia usando TLS / HTTPS, dato che non li hai menzionati nella tua domanda.

Ecco perché:

  • La tua chiave pubblica deve essere ottenuta da Internet

    Ciò consente all'autore dell'attacco di intercettare la connessione e fornire una chiave pubblica manomessa. Tutto il tuo processo di verifica è già stato sconfitto.

  • Il tuo zip viene scaricato e verificato utilizzando un tasto eventualmente manomesso

    Non appena il file viene scaricato, verrà controllato contro la chiave pubblica (ora manomessa). L'autore dell'attacco ha già compromesso la chiave pubblica e può creare un nuovo zip con un payload dannoso e firmarlo con la chiave generata. Il tuo programma lo accetterà volentieri.

In questo momento, il payload dannoso viene eseguito con l'accesso root. Game over.

Un approccio (un po 'più sicuro) è questo:

  • Usa SSL / TLS

    Ciò rende più difficile intercettare e manomettere i file su Internet.

  • Usa il pining del certificato

    Rende ancora più difficile alterare i file, in quanto una CA autofirmata o non riconosciuta non sarà accettata.

  • Inserisci la chiave pubblica nel tuo programma di aggiornamento

    In questo modo non sarà facilmente ingannato nell'accettare un pacchetto di aggiornamento contraffatto.

  • Proteggi l'aggiornamento

    Il dispositivo non deve consentire l'accesso alla memoria o ai contenuti del filesystem su cui è installato il programma di aggiornamento. Se fallisci, la chiave pubblica al suo interno potrebbe essere cambiata.

risposta data 14.04.2015 - 14:39
fonte
0

No.

Un utente malintenzionato può fare un binario. Possono quindi creare un hash dal loro binario e crittografarlo con la loro chiave privata . Quindi impacchettano il loro file binario e forniscono la chiave pubblica binario dannosa alla telecamera. Poiché l'hacker è in grado di fornire la chiave pubblica e il contenuto, controlla entrambi i lati del controllo e il sistema è facilmente compromesso.

Almeno una delle due parti deve essere sotto il tuo controllo e poiché il file binario cambia sempre, dovrai mettere la chiave pubblica sulla videocamera in modo sicuro. Altrimenti non è possibile verificare che il file binario fornito sia stato firmato da te.

    
risposta data 14.04.2015 - 14:29
fonte

Leggi altre domande sui tag