Si un atacante tiene varios elementos distintos (por ejemplo, direcciones de correo electrónico) y conoce el valor cifrado de cada elemento, ¿puede el atacante determinar más fácilmente la contraseña secreta utilizada para encriptar esos elementos? Es decir, ¿pueden determinar la frase de contraseña sin recurrir a la fuerza bruta?Si el atacante tiene datos originales y datos cifrados, ¿pueden determinar la frase de contraseña?
Esta pregunta puede sonar extraño, así que me proporciono un caso de uso:
- usuario se suscriba a un sitio con su dirección de correo electrónico
- servidor envía esa dirección de correo electrónico de una URL de confirmación (por ejemplo: https://my.app.com/confirmEmailAddress/bill%40yahoo.com)
- El atacante puede adivinar la URL de confirmación y, por lo tanto, puede registrarse con la dirección de correo electrónico de otra persona y 'confirmarla' sin tener que iniciar sesión en la cuenta de correo electrónico de esa persona y ver la URL de confirmación. Esto es un problema.
- En lugar de enviar el texto sin formato de la dirección de correo electrónico en la URL, lo enviaremos cifrado por una contraseña secreta.
- (Sé que el atacante aún podría interceptar el correo electrónico enviado por el servidor, ya que el correo electrónico es texto plano, pero tenga paciencia aquí)
- Si un atacante se registra con varios correos electrónicos gratuitos cuentas y ve múltiples URL, cada una con la dirección de correo electrónico cifrada correspondiente, ¿podría el atacante determinar más fácilmente la frase de contraseña utilizada para el cifrado?
Solución Alternativa
pude vez enviar un número aleatorio o hash unidireccional de su dirección de correo electrónico (más sal al azar). Esto elimina el almacenamiento de la contraseña secreta, pero significa que necesito almacenar ese número aleatorio/hash en la base de datos. El enfoque original anterior no requiere almacenamiento en la base de datos.
Me estoy inclinando por el one-way-hash-stored-in-the-db, pero aún me gustaría saber la respuesta: si tener varias direcciones de correo electrónico no encriptadas y sus contrapartes encriptadas lo hace más fácil para determinar la frase de contraseña utilizada?
¿por qué no eliminar todo su problema aplicando una solución de identidad federada como OpenId? –
Su solución alternativa no requiere una tabla adicional, simplemente una columna adicional en la tabla existente que ya almacena la dirección de correo electrónico – Gareth
@Gareth Tiene razón, y he actualizado la pregunta. ¡Gracias! –