Progetta il mio HSM utilizzando un Arduino

11

Sto provando a costruire da zero qualcosa di simile alla Enclave sicura di Apple

di Apple

.

Quello che ho fatto è utilizzare una libreria AES per Arduino per creare un'appliance di sicurezza. Una chiave crittografica casuale e il codice sono memorizzati sul chip e bloccati (non leggibili). Il servizio viene fornito solo tramite la porta seriale USB. Ci sono alcuni comandi, come set_salt , set_IV , encrypt e decrypt . Tutto ha funzionato, tranne che è molto lento - ma hey, cosa puoi aspettarti da un Arduino?

Per renderlo utile, sto pensando di usarlo per crittografare una chiave AES separata memorizzata sul computer / telefono, e questa chiave è usata per crittografare i dati dell'applicazione. La mia domanda è. Avrà un rischio per la sicurezza poiché i dati dell'applicazione non vengono crittografati direttamente da Arduino? Capisco che la chiave utilizzata per crittografare i dati dell'app possa essere esposta attraverso i dump della memoria, ma i programmatori dell'applicazione possono minimizzare questo rischio. Capisco anche che la comunicazione tra Arduino e l'applicazione deve essere crittografata. Ma oltre a questi due, ci sono altri fori in cui è possibile il rischio di esporre la chiave?

    
posta user2600798 18.04.2016 - 15:50
fonte

2 risposte

19

Innanzitutto, Secure Enclave di Apple è un modulo che garantisce che il caricatore di avvio esegua solo il codice firmato da Apple. Non è quello che stai facendo, stai cercando di creare un Hardware Security Module (HSM) .

Come hai capito, il modo corretto per farlo è di fare in modo che l'HSM esegua tutte le operazioni di crittografia internamente in modo che nessuna chiave lasci mai il dispositivo, come fai notare, se passi la chiave di crittografia / decodifica al dispositivo , ora è fuori dal tuo controllo. Quindi idealmente vuoi un processore abbastanza veloce da eseguire l'elaborazione crittografica a bordo.

Detto questo, l'archiviazione di un codice AES crittografato sul dispositivo accanto ai dati e affidarsi all'HSM per decrittografarlo è esattamente come funziona la crittografia Full Disk Android (credo). Ti suggerisco di leggere la pagina Android Dev su Full Disk Encryption per darti idee.

Espanderò questa risposta per dare un contesto più ampio.

Questa domanda è abbastanza profonda da chiederci quale sia il tuo "modello di minaccia" (cioè "Che tipo di attacchi stai cercando di proteggere?"). Come sottolineato nei commenti di @JeffMeden e @supercat, quale livello di sicurezza è effettivamente necessario dipende da cosa stai cercando di proteggere e da come lo vuoi proteggere.

Hai detto che vuoi proteggere la chiave AES da un dump della memoria. Una chiave AES è preziosa, ma non perché la chiave stessa sia preziosa, piuttosto perché le informazioni che protegge sono preziose. Hai detto:

I do understand that the key used to encrypt the app data might be exposed through memory dumps,

Questa è una buona cosa a cui pensare, ma se i dati stessi potrebbero essere esposti attraverso i dump della memoria, allora è poco rilevante. Ma come dici tu,

but the application programmers can minimize this risk.

Se il tuo HSM decodifica un tasto AES o decodifica i dati direttamente, una volta restituito a un programma utente, non hai più alcun controllo sulla sua protezione.

Bottom line: se il tuo modello di minaccia include l'elaborazione dei dati decrittografati su un PC, proteggendo anche i dati contro qualcuno abbastanza potente da fare un dump della memoria, quindi non c'è nulla che la tua periferica USB possa fare; devi anche scrivere il software in esecuzione sul PC.

Se inizi a seguire questa linea, finirai per inventare un Trusted Execution Environment in cui tutta l'elaborazione di i dati in testo normale avvengono effettivamente all'interno di un processore sicuro, e solo il risultato viene restituito al PC "non attendibile".

    
risposta data 18.04.2016 - 16:58
fonte
1

Un altro grosso problema qui è che un dispositivo del genere non è a prova di temperamento. Chiunque abbia un accesso fisico al dispositivo può ignorare il tuo codice e leggere qualsiasi segreto direttamente.

Un hacker determinato può anche provare a riprogrammare il dispositivo (se lasci aperta la capacità) e ottenere lo stesso di sopra.

Mi chiedo quale sia il valore nel reinventare la ruota invece di utilizzare le soluzioni esistenti di TPM, Smartcard o HVM?

    
risposta data 22.04.2016 - 14:37
fonte

Leggi altre domande sui tag