Come può essere facile scrivere ma "impossibile" estrarre la chiave privata da un token crittografico?

37

Un certo numero di cripto-dongle afferma che è impossibile estrarre la chiave privata memorizzata una volta scritta.

Yubico :

The YubiKey AES Key information can never be extracted from a YubiKey device – only programmed to it.

Nitrokey :

Other than ordinary software solutions, the secret keys are always stored securely inside the Nitrokey. Their extraction is impossible which makes Nitrokey immune to computer viruses and Trojan horses.

L'affermazione come dichiarata letteralmente sembra un'assurdità di marketing. Il dongle stesso ha accesso alla chiave privata, quindi in qualche modo può essere letto.

Tuttavia, è una richiesta interessante. La scelta delle parole - "mai", "sempre", "impossibile" - suggerisce che c'è qualcosa che può essere provato qui. O forse sto dando loro troppo credito. C'è qualcosa per questo? Che cos'è?

La mia ipotesi è che significano che è impossibile estrarre la chiave privata senza interferire fisicamente con il cripto-dongle. Sembra plausibile che si possa dimostrare che semplicemente non esiste un canale fisico per ritrasmettere la chiave privata al di fuori del dispositivo. Ciò complica la scrittura della chiave e non riesco a vedere come possa essere risolto. Un modo che ho potuto vedere è non scrivere la parola letteralmente ma in qualche modo permettere che sia randomizzata, ma credo che questi dispositivi in realtà permettano di scrivere la chiave.

O forse c'è più sostanza in questo. Per quanto ne so, questi dispositivi utilizzano alcuni meccanismi esotici per la memorizzazione di bit che non possono essere letti direttamente senza distruggere il dispositivo.

Ho trovato una risposta qui suggerendo che c'è qualcosa di vero in questo, ma non entra nei dettagli.

link

Extracting private keys directly from the card is nearly impossible. With some acid package destruction and electron microscope work, a skilled team, and enough time, money, and luck you can in theory extract keys but it involves not only physical access but a scenario where the card will be physically destroyed.

    
posta Praxeolitic 08.07.2015 - 12:09
fonte

2 risposte

43

Beh, "impossibile" è impossibile da dimostrare, ecco perché nella risposta collegata ho detto "quasi impossibile", forse anche questo lo sta esagerando. Utilizzando un dispositivo hardware sicuro, il vettore di attacco passa da "malware installato in remoto su host steals secret", a "attacker deve ottenere fisicamente l'accesso al dispositivo hardware e rimuovere in modo distruttivo la chiave privata". Quest'ultimo non è certamente impossibile, ma è molto più difficile.

Quei dongle USB funzionano in modo molto simile alle smartcard. Ho più esperienza con le smartcard, quindi la userò nella risposta, ma si applicano la maggior parte degli stessi principi. Infatti molti di questi dongle USB utilizzano internamente un SoC smart card. Sono economici, programmabili e offrono una solida sicurezza, quindi in molte applicazioni ha senso usare semplicemente una smartcard internamente piuttosto che provare a creare qualcosa di nuovo.

Una smartcard programmabile è un computer completo in un singolo chip o sistema su un chip (SoC). Ora è un computer molto limitato ma è ancora un computer. La connessione al "mondo esterno" per la smartcard è un'interfaccia seriale semplice con privilegi bassi. La carta riceve un comando (più simile a una richiesta) dall'host e la carta risponde con una risposta. I comandi sono limitati a ciò che la carta è stata programmata per fare.

Quindi, se abbiamo una smart card programmata per firmare digitalmente un'istruzione (come una richiesta di pagamento in EMV con carta di credito), l'host invierà una richiesta tramite l'interfaccia seriale alla scheda composta da un comando e alcuni input. La scheda ha analizzato il comando e, supponendo che sia valido, rimanda una firma digitale all'host sulla stessa interfaccia. In molti modi assomiglia a una relazione client-server con la smartcard come server e il sistema host come client. La chiave privata non lascia mai la carta durante il processo. È solo una richiesta, una risposta. L'host non ha alcun meccanismo per forzare la smartcard a restituire la chiave privata o fare qualcosa che non è stata programmata per fare. Ovviamente questo presuppone che non ci sia un comando "per favore dammi tutte le chiavi private" che sarebbe ovviamente inutile e non fornire alcuna sicurezza. La smart card potrebbe avere un PIN assegnato dall'utente e il PIN è parte del formato del comando. La smartcard verifica il PIN e, se non è valido, rifiuterà il comando. Ha una sua memoria interna, quindi può registrare internamente il numero di tentativi non validi ed essere programmato per spegnere (o in casi estremi cancellare la scheda).

La programmazione (flashing) di una smartcard viene eseguita prima della spedizione. Ovviamente, se un utente malintenzionato potrebbe riprogrammare la smartcard per eseguire un programma "Dammi tutte le chiavi", non sarebbe sicuro, quindi la maggior parte delle schede utilizza una sorta di bit di sicurezza nella scrittura una volta nella memoria. Quindi la scheda è programmata e il bit di scrittura impostato. La carta respingerà quindi qualsiasi tentativo futuro di riprogrammare.

Cerca di non rimanere bloccato su una smart card facendo esattamente questo. Si tratta di dispositivi programmabili che variano a seconda dell'implementazione, ma il concetto generale è che si dispone di un computer autonomo con una propria memoria interna protetta che è stata programmata per rispondere alle richieste di un host tramite una semplice interfaccia di autorizzazione bassa. Sono d'accordo che la parola "impossibile" è il marketing, ma non è così lontano dalla verità. Potresti dire praticamente impossibile. Il design molto essenziale e la funzionalità bloccata ti permettono di ritrovare un dispositivo duro e difficile da attaccare.

Tuttavia, il vecchio assioma " non c'è sicurezza delle informazioni senza sicurezza fisica " è ancora valido. La chiave privata è ancora fisicamente nella smartcard. Con l'accesso fisico e una motivazione sufficiente puoi fare praticamente "segreto" qualsiasi segreto. Come nell'esempio collegato, la smartcard può essere ignorata e la chiave può essere letta direttamente dalla memoria fisica. Un metodo comune è quello di prendere la carta, rimuovere il SoC e utilizzare la decostruzione acida per bruciare il pacchetto. Utilizzando un microscopio elettronico e un'abilità sufficiente è possibile localizzare il punto sul silicio che memorizza i tasti, collegare i cavi e leggerli. È stato fatto in modo che non sia assolutamente impossibile, ma nella maggior parte dei casi questo non è il tipo di attacco o di attacco che stiamo cercando di difendere. Onestamente se il tuo attaccante andasse a quel livello sarei più preoccupato per una chiave $ 5 .

    
risposta data 08.07.2015 - 15:44
fonte
22

I moduli crittografici hardware come questo sono regolati da una serie di standard denominati FIPS 140-2 che specificano il ridicolo lunghezze a cui i dispositivi devono andare per proteggere le chiavi private al loro interno.

Esistono quattro livelli di FIPS 140-2 , riassunti brevemente come:

Livello 1: fa cose cripto-y di base.

Livello 2: "Evidenziatore di manomissioni"; è impossibile estrarre o modificare le chiavi private senza danneggiare il dispositivo in modo evidente (es .: rompere un sigillo, ri-saldare i pin, ecc.)

Livello 3: questi dispositivi dovrebbero avere "un'alta probabilità di rilevare l'accesso fisico" e di solito azzerano le chiavi se viene rilevata la manomissione - pensa che il server crei dei sensori sui pannelli di accesso. O nel caso di interessante nuova ricerca DARPA , circuiti che si dissolvono se esposti all'aria e all'umidità.

Livello 4: rafforza i requisiti per il rilevamento delle manomissioni e l'azzeramento delle chiavi. Deve inoltre essere altamente resistente agli attacchi che utilizzano temperature estreme e tensioni estreme.

Quindi quando dici

Still, it's an interesting claim. The choice of words -- "never", "always", "impossible" -- suggest that there is something that can be proven here.

Suppongo che intendano "provati" rispetto agli standard FIPS 140-2. E infatti, facendo clic sui collegamenti che hai fornito, entrambi i dispositivi sono certificati FIPS 140-2 Livello 2.

    
risposta data 08.07.2015 - 16:13
fonte

Leggi altre domande sui tag