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 .