Autenticación de compilación HTTP: ¿El servidor almacena contraseñas de texto sin formato?

2

Acabo de terminar el capítulo sobre autenticación de resumen en HTTP: la Guía definitiva , no estoy muy seguro. lo que el servidor almacena como secreto del cliente en su base de datos:

  • la contraseña de texto sin formato del cliente o
  • un hash MD5 de la contraseña del cliente concatenada con el nombre de usuario y el reino

En la página 287 del libro, se lee

  

El cliente y el servidor conocen la contraseña secreta

También esta respuesta indica que

  

[la autenticación de digestión] hace que sea necesario almacenar las contraseñas en el servidor de forma simple o de forma equivalente

Esta respuesta también indica que el servidor almacena la contraseña en texto sin formato:

  

el servidor busca la contraseña esperada para el usuario desde su base de datos de usuario

Sin embargo, RFC 2617 contradice esto (énfasis mío):

  

Normalmente [lo que almacena el servidor] puede contener pares que constan de nombre de usuario y H (A1), donde H (A1) es el valor digerido del nombre de usuario, el dominio y la contraseña como se describió anteriormente.

Mi pregunta es: en el contexto de la autenticación de resumen, ¿el servidor almacena la contraseña de texto sin formato del cliente o almacena un hash de la contraseña de texto sin formato (combinada con el nombre de usuario y el dominio)?

Nota: esta es una pregunta teórica, no pretendo usar la autenticación implícita en HTTP no cifrado y sé que MD5 es propenso a ataques de diccionario.

† Con "secreto" me refiero a la cadena que el cliente combina con un nonce recibido del servidor y luego los hashes para enviarlo al servidor para su autenticación.

    
pregunta Matthias Braun 25.07.2017 - 15:19
fuente

1 respuesta

4

Depende de la implementación. La autenticación implícita es solo un mecanismo de autenticación para comunicar las credenciales. El servidor recibirá la contraseña de texto sin formato cuando se establezca la contraseña, pero puede elegir qué quiere hacer con ella en función de la implementación. Podría almacenarlo encriptado de manera reversible (de hecho, en texto plano) y compararlo con el hash calculado en ambos lados (inseguro), o podría hacer un hash del hash de la entrada del usuario y verificar que coincida con un hash almacenado que también está hash con el hash. No depende de cómo el servidor almacena la contraseña.

Para un servidor Windows, dependerá de si el controlador de dominio que lo respalda tiene contraseñas reversibles activadas o no.

    
respondido por el AJ Henderson 25.07.2017 - 15:55
fuente

Lea otras preguntas en las etiquetas