Quiero permitir que los usuarios de nuestro sitio web restrinjan el acceso a su cuenta desde dispositivos que hayan autorizado explícitamente. Esto se comprobará en la conexión y cada vez que cambie la dirección IP.
Para hacer esto, debo identificar el dispositivo y debo evitar que otro dispositivo pueda pasar por un dispositivo autorizado.
Podría, por ejemplo, guardar un UUID en una cookie segura (marcas: httpOnly + secure) que el servidor (en HTTPS + HSTS) podría verificar. Sin embargo, a través de un proxy MITM, el atacante podría descubrir el token y usarlo tantas veces como quiera en varias máquinas e incluso cuando el usuario ya no esté conectado al proxy infectado.
Creo que es posible reducir los riesgos mediante la combinación de esta técnica con una llamada de API de inserción web. Esto requiere, por supuesto, un navegador que lo admita (~ 80%) y el usuario acepta recibir nuestras notificaciones. La idea sería que el servidor que recibe el UUID de la cookie, envíe una notificación de inserción que contenga un token aleatorio al dispositivo, luego el dispositivo reenvíe el token al servidor para demostrar que es realmente el dispositivo autorizado.
Este método no resuelve los ataques de proxy MITM, pero una vez que la persona ya no está detrás de esta red infectada, el atacante ya no puede falsificar la identificación del dispositivo.
Las notificaciones push están cifradas, pero también puedo cifrar [EDIT: ofuscar] el token aleatorio enviado mediante una simple operación XOR con el valor UUID de la cookie como clave.
¿Tiene la forma más segura de identificar un dispositivo sin necesidad de acción humana, por favor?
[EDITAR: Precisamente, la suscripción a la notificación de inserción se realiza solo una vez, y se puede solicitar que se realice desde una red segura, como en casa, para evitar el proxy MITM mientras se realiza la suscripción.]