Autenticazione di un dispositivo prima di accettare i dati da esso

1

La situazione è la seguente: Un dispositivo USB è collegato a un computer e invia dati a un software specifico, che dovrebbe accettare solo questi dati se il dispositivo di invio è stato precedentemente convalidato / autenticato da esso.

Poiché chiunque è in grado di decodificare ciò che il software sta facendo (con più o meno sforzo), il codice sorgente del software è considerato pubblico al momento.

Il software del dispositivo, ovviamente, non è sicuro al 100% e può essere decodificato, ma rompere i chip ecc. richiederebbe molto più tempo e impegno, quindi il dispositivo (e il suo software) è considerato privato.

Né il computer né il dispositivo sono connessi a Internet.

Hai idea di come il processo di autenticazione può essere fatto senza che il software sul computer contenga alcuna parte critica (che potrebbe essere decodificata e ricostruita, portando ad un'autenticazione positiva di un dispositivo USB "falso" e il software accetta dati falsi)?

Grazie a tutti per il vostro aiuto!

    
posta Nighthawk 20.07.2017 - 02:01
fonte

1 risposta

1

Quello che stai descrivendo è come alcune smart card eseguono controlli di autenticazione. Nel tuo caso, tuttavia, la smart card è un dispositivo USB. L'approccio è simile:

Autenticazione unidirezionale

Se è solo il dispositivo USB che deve dimostrare la propria identità, è necessario implementare uno schema di autenticazione che viene eseguito prima che avvenga lo scambio di dati effettivo. I dispositivi USB memorizzano una chiave privata che può utilizzare per dimostrare la propria identità. Ad esempio, il computer invia una sfida al dispositivo USB, il dispositivo restituisce una risposta che viene firmata utilizzando la sua chiave privata. Il computer (che conosce la chiave pubblica del dispositivo USB) può ora verificare se sta comunicando con il dispositivo USB: solo il dispositivo 'reale' conoscerà la chiave privata e quindi solo questo dispositivo è in grado di produrre una risposta valida al sfida.

Si può prendere in considerazione una coppia di chiavi privata / pubblica codificata se si desidera distribuire questa soluzione su un numero limitato di dispositivi. Se si desidera implementare questa soluzione su una scala più ampia o in un ambiente più dinamico, si consiglia di prendere in considerazione l'utilizzo di certificati (ad esempio X.509), come TLS fa.

Poiché deviantfan è stato notato, sii consapevole che la revoca di chiavi / certificati potrebbe diventare un problema alle condizioni in cui si trova.

Autenticazione a due vie

Se si desidera l'autenticazione reciproca (ad esempio, il dispositivo USB e il computer devono dimostrare la propria identità l'uno con l'altro), diventa leggermente più complesso. In questo caso il computer dovrebbe anche avere una coppia di chiavi privata / pubblica e il dispositivo USB dovrebbe esserne a conoscenza. Oltre alle fasi di autenticazione sopra menzionate, il dispositivo USB dovrebbe ora verificare se il computer ha prodotto una risposta valida alla sua sfida.

    
risposta data 20.07.2017 - 18:03
fonte

Leggi altre domande sui tag