Tengo un servidor de autenticación web de múltiples factores, que además de las contraseñas regulares usa huellas digitales para la autenticación de usuarios.
¿Alguien puede pensar en una falla de seguridad en el siguiente escenario?
Tengo un servidor de recursos que aloja recursos valiosos, el propietario del recurso debe proporcionar su huella digital a un servidor de autenticación para otorgar acceso a sus recursos.
Asegurar los datos de huellas dactilares es crítico. Antes de que el usuario pueda utilizar el sistema. Debe instalar un complemento de navegador web. Durante la instalación del complemento, el complemento se conecta al servidor de autenticación y obtiene un certificado digital del servidor (una clave pública del servidor).
Ahora, cuando el usuario va a la página web del servidor de recursos, escribe su nombre de usuario / contraseña y la página web le pide que escanee su huella digital. Luego, el complemento del navegador web se conecta al escáner de huellas digitales y activa el escáner para escanear la huella digital del usuario.
El complemento obtiene la huella digital del escáner y la cifra con una clave AES de 256 generada aleatoriamente y luego cifra esta AES con la clave pública del servidor de autenticación.
Luego, el complemento devuelve un objeto JSON que contiene la huella digital cifrada y la clave AES cifrada. A continuación, un script Java de la página de inicio de sesión del servidor de recursos utilizando AJAX envía el objeto JSON al servidor de recursos. El servidor de recursos reenvía el objeto JSON al servidor de autenticación.
El servidor de autenticación descifra la clave AES utilizando su clave privada y luego utiliza el AES recuperado para descifrar los datos de la huella digital. Finalmente, compara los datos de huella digital recibidos con la plantilla de huella digital almacenada y devuelve el resultado al servidor de recursos. Según el resultado, el servidor de recursos niega o otorga acceso al usuario.
Las plantillas de huellas dactilares en el servidor de autenticación se almacenan en una base de datos cifrada usando una clave de 256 AES.