Desidero consentire agli utenti del nostro sito Web di limitare l'accesso al proprio account da dispositivi che hanno esplicitamente autorizzato. Questo verrà verificato alla connessione e ogni volta che cambia l'indirizzo IP.
Per fare ciò, devo identificare il dispositivo e devo evitare che un altro dispositivo possa passare per un dispositivo autorizzato.
Potrei, ad esempio, salvare un UUID in un cookie sicuro (flag: httpOnly + secure) che il server (in HTTPS + HSTS) potrebbe controllare. Tuttavia, tramite un proxy MITM, l'utente malintenzionato potrebbe potenzialmente scoprire il token e utilizzarlo tutte le volte che lo desidera su più computer e anche quando l'utente non è più connesso al proxy infetto.
Penso che sia possibile ridurre i rischi accoppiando questa tecnica con una chiamata API push web. Ciò richiede ovviamente un browser che lo supporti (~ 80%) e l'utente accetta di ricevere le nostre notifiche. L'idea sarebbe che il server che riceve l'UUID del cookie, invia una notifica push contenente un token casuale al dispositivo, quindi il dispositivo inoltra il token al server per dimostrare che si tratta effettivamente del dispositivo autorizzato.
Questo metodo non risolve gli attacchi proxy MITM, ma una volta che la persona non è più dietro a questa rete infetta, l'autore dell'attacco non può più falsificare l'identificazione del dispositivo.
Le notifiche push sono crittografate, ma posso anche crittografare [EDIT: offuscare] il token casuale inviato mediante una semplice operazione XOR con il valore UUID del cookie come chiave.
Hai un modo più sicuro di identificare un dispositivo senza richiedere un'azione umana, per favore?
[EDIT: Preciso, l'abbonamento alla notifica push viene eseguito una sola volta e potrebbe essere richiesto che venga eseguito da una rete protetta, come a casa, per impedire il proxy MITM durante la sottoscrizione.]