Estoy creando otro sitio web que requiere autenticación de usuario y de sesión. Esta vez quiero estar completamente paranoico de la seguridad y realmente me importa si las contraseñas o las sesiones son robadas.
Tengo algunos requisitos para la seguridad de la autenticación de contraseña:
- Las contraseñas no se almacenan en el servidor como texto sin cifrar.
- El ataque de fuerza bruta y diccionario sin conexión se vuelve imposible e ineficiente en línea.
- Ataque seguro contra Man in the Middle.
- Asegurar contra el ataque de reproducción.
No estoy seguro si el siguiente sistema en la imagen que he especificado cumple con los requisitos que tengo. Así que te pregunto si esto es suficiente para detener esos ataques.
Sé que esto no es seguro contra Man in the Browser attack o keylogging, pero por lo que sé, es seguro contra Man in the Middle attack y creo que Nonce se encarga del ataque de repetición. Creo que la contraseña debe verificarse en línea si es correcta y el forzamiento de los brutos en línea se puede ralentizar con los límites de tiempo de solicitud.
¿Esto elimina bastante el posible pirateo de las contraseñas de los usuarios a través del cable y en el servidor? ¿Debería utilizarse un algoritmo de hashing más fuerte para almacenar las contraseñas?
Una vez que se haya realizado la autenticación, el servidor puede leer y reemplazar esta clave de sesión cifrada RSA cuando lo desee. Creo que el cliente no puede descifrarlo ni el hombre en el medio, porque no conocen la clave privada del servidor. Por supuesto, la clave de sesión también requiere nonce para detener los ataques de reproducción, pero simplemente no lo escribí en la imagen.
Sé que SSL / TLS puede ser bastante seguro si está configurado correctamente. Actualmente obtengo una calificación de A- en ssllabs, porque debería abandonar RC4 y usar GCM suites. Sé que SSL / TLS detendrá o debería detener al hombre en los ataques medios, pero quiero agregar RSA encima de él. También podría agregar dos o tres factores de autenticación, pero el envío de SMS no es barato.