Questa domanda non si adatta bene a molte categorie, ma spero che qualcuno ci abbia provato prima.
Sto sviluppando una API Web che interagirà con un dispositivo fisico. Ogni nuovo dispositivo fisico ha il proprio ID univoco, ma tali ID sono ipotizzabili (essenzialmente sono sequenziali man mano che escono dalla catena di montaggio).
Quando il dispositivo viene collegato a un computer tramite USB, verrà avviata un'app client che l'utente avrà installato e sincronizzato i dati dal dispositivo all'API. Non possiamo fare affidamento su una relazione 1: 1 dei computer sui dispositivi, un utente potrebbe eseguire la sincronizzazione su più computer o più utenti potrebbero eseguire la sincronizzazione sulla stessa macchina.
Vogliamo effettuare l'autenticazione all'API utilizzando nient'altro che l'ID del dispositivo, ma non voglio che qualcuno sia in grado di falsificare un altro ID utente chiamando la mia API direttamente con un ID dispositivo diverso.
Mi chiedo cosa potrei fare con l'ID del dispositivo che potrebbe consentirmi di utilizzarlo in sicurezza per l'autenticazione.
Il mio primo pensiero è stato quello di crittografare l'ID con una chiave privata e quindi condividere la chiave privata con il software client. Il software client potrebbe quindi crittografare l'id del dispositivo prima di chiamare l'API e trasmettere quel valore crittografato. L'api lo confronta con un valore memorizzato e il tuo bene, ma sono preoccupato che sarà difficile proteggere la chiave privata quando deve essere memorizzata sul computer client.
Pensieri?