Algunos sitios que utilizo comprueban mi contraseña a medida que la escribo en el formulario de inicio de sesión ( no registro). Así que, por ejemplo, para empezar podría tener:
Username: sapi ✓
Password: passw ×
y cuando termine de escribir, el sitio ya me dice que no hubo errores:
Username: sapi ✓
Password: password123 ✓
Aún se requiere la presentación del formulario para iniciar sesión.
Supongamos que esto no se hace no en el lado del cliente (por ejemplo, informando al cliente del algoritmo de hash y del hash de destino); este enfoque obviamente sería inseguro, ya que le permitiría obtener un hash de usuario arbitrario.
Suponiendo que la comunicación esté encriptada, ¿puede suponer un riesgo de seguridad comprobar la contraseña letra por letra a medida que se escribe?
Mi principal área de preocupación es que hacerlo implica transmitir repetidamente cadenas (sub) similares:
- algunos datos generales + la primera letra de la contraseña
- algunos datos generales + la segunda letra de la contraseña
- ...
- algunos datos generales + la contraseña completa
Esto hace que el texto simple de cada comunicación sea hasta cierto punto determinista (o al menos, relacionado con el de las comunicaciones anteriores y siguientes).
Sé que algunos algoritmos de cifrado son vulnerables a los ataques de texto plano conocido, aunque no estoy seguro de que SSL sea uno de ellos. Tampoco sé si el nivel de conocimiento adquirido aquí (que obviamente es mucho menor que para un ataque de texto simple conocido) es suficiente para disminuir la entropía de la salida.
Supongo que tengo dos preguntas:
- ¿Es esto un riesgo de seguridad con algoritmos de cifrado web estándar (básicamente https); y
- Si no, ¿hay una clase de algoritmos para los cuales este podría plantear problemas?
He agregado una aclaración a la pregunta de que me estoy refiriendo a un formulario login , no a un formulario de registro. En otras palabras, el cliente no puede simplemente validar la contraseña con las reglas de longitud / complejidad conocidas utilizando JS; la cuenta ya existe y la marca de verificación solo aparece para una contraseña correcta.