¿Cuál es la diferencia entre Digest y Basic Authentication?


¿Cuál es la diferencia entre Digest y Basic Autenticación ?

Author: Rashack, 2012-03-02

3 answers

La autenticación Digest comunica las credenciales de forma cifrada mediante la aplicación de una función hash al nombre de usuario, la contraseña, un valor nonce proporcionado por el servidor, el método HTTP y el URI solicitado.

Mientras que la autenticación Básica utiliza la codificación base64 sin cifrar.

Por lo tanto, la autenticación básica generalmente solo se debe usar cuando se proporciona seguridad de la capa de transporte, como https.

Ver RFC-2617 para todos los detalles sangrientos.

 154
Author: Andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-02 14:27:08

Autenticación de acceso básico HTTP

  • PASO 1 : el cliente realiza una solicitud de información, enviando un nombre de usuario y contraseña al servidor en texto plano
  • PASO 2 : el servidor responde con la información deseada o un error

La autenticación básica utiliza la codificación base64 (no el cifrado) para generar nuestra cadena criptográfica que contiene la información de nombre de usuario y contraseña. HTTP Basic no necesita para ser implementado a través de SSL, pero si no lo hace, no es seguro en absoluto. Así que ni siquiera voy a entretener la idea de usarlo sin.

Pros:

  • Es fácil de implementar, por lo que los desarrolladores de clientes tendrán menos trabajo que hacer y tardarán menos tiempo en entregar, por lo que es más probable que los desarrolladores quieran usar su API
  • A diferencia de Digest, puede almacenar las contraseñas en el servidor en cualquier método de cifrado que desee, como bcrypt, haciendo que las contraseñas sean más seguro
  • Solo se necesita una llamada al servidor para obtener la información, lo que hace que el cliente sea un poco más rápido de lo que podrían ser los métodos de autenticación más complejos

Contras:

  • SSL es más lento de ejecutar que HTTP básico, por lo que esto hace que los clientes sean ligeramente más lentos
  • Si no tiene el control de los clientes y no puede forzar al servidor a usar SSL, es posible que un desarrollador no use SSL, causando un riesgo de seguridad

En Resumen – si usted tiene el control de los clientes, o puede asegurarse de que utilizan SSL, HTTP Basic es una buena opción. La lentitud del SSL puede ser cancelada por la velocidad de solo hacer una solicitud

Sintaxis de la autenticación básica

Value = username:password
Encoded Value =  base64(Value)
Authorization Value = Basic <Encoded Value> 
//at last Authorization key/value map added to http header as follows
Authorization: <Authorization Value>

Autenticación de acceso HTTP Digest
Digest Access Authentication utiliza las metodologías hash(es decir, digest significa cortar en trozos pequeños) para generar el resultado criptográfico. HTTP Digest access Authentication es una forma más compleja de autenticación que funciona de la siguiente manera:

  • PASO 1 : un cliente envía una solicitud a un servidor
  • PASO 2 : el servidor responde con un código especial (llamado nonce , es decir, n umber utilizado solo una vez ), otra cadena que representa reino(un hash) y pide al cliente que autentique
  • PASO 3 : el cliente responde con este nonce y una versión cifrada del nombre de usuario, contraseña y reino (a hash)
  • PASO 4 : el servidor responde con la información solicitada si el hash del cliente coincide con su propio hash del nombre de usuario, contraseña y dominio, o un error si no

Pros:

  • No se envían nombres de usuario o contraseñas al servidor en texto plano, lo que hace que una conexión no SSL sea más segura que una solicitud básica HTTP que no se envía a través de SSL. Esto significa que no se requiere SSL, lo que hace que cada llamada sea un poco más rápida

Contras:

  • Para cada llamada necesaria, el cliente debe hacer 2, haciendo que el proceso sea ligeramente más lento que HTTP Basic
  • HTTP Digest es vulnerable a un ataque de seguridad man-in-the-middle que básicamente significa que podría ser hackeado
  • HTTP Digest evita el uso del cifrado de contraseñas seguras, lo que significa que las contraseñas almacenadas en el servidor podrían ser hackeadas

En resumen , HTTP Digest es inherentemente vulnerable a al menos dos los ataques, mientras que un servidor que utiliza un cifrado fuerte para contraseñas con HTTP Basic sobre SSL es menos probable que comparta estas vulnerabilidades.

Si no tiene control sobre sus clientes, sin embargo, podrían intentar realizar la autenticación básica sin SSL, que es mucho menos segura que Digest.

RFC 2069 Digest Access Authentication Syntax

Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)

RFC 2617 Digest Access Authentication Syntax

Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added 

Fuente y ejemplo

En Postman se ve como sigue:

introduzca la descripción de la imagen aquí

 79
Author: Premraj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-01 12:21:25

Veamos la diferencia entre las dos autenticación HTTP usando Wireshark (Herramienta para analizar paquetes enviados o recibidos) .

1. Autenticación básica Http

Básica

Tan pronto como el cliente escriba el username:password correcto,tal como lo solicita el servidor Web, el Servidor Web comprueba en la Base de datos si las credenciales son correctas y da acceso al recurso .

Así es como se envían los paquetes y recibido :

introduzca la descripción de la imagen aquí En el primer paquete ,el Cliente rellena las credenciales usando el método POST en el recurso - lab/webapp/basicauth .A cambio, el servidor responde con el código de respuesta http 200 ok, es decir, el nombre de usuario:contraseña eran correctos.

Detalle del paquete HTTP

Ahora , en el encabezado Authorization muestra que es Autorización básica seguida de una cadena aleatoria .Esta cadena es la versión codificada (Base64) de la credenciales admin:aadd (incluyendo dos puntos).

2 . Autenticación Http Digest (rfc 2069)

Hasta ahora hemos visto que la Autenticación Básica envía username:password en texto plano a través de la red .Pero la Autenticación del Resumen envía un HASH de la Contraseña usando el algoritmo Hash.

Aquí están los paquetes que muestran las peticiones hechas por el cliente y la respuesta del servidor .

Digerir

Tan pronto como el cliente escriba el credenciales solicitadas por el servidor, la contraseña se convierte en un response utilizando un algoritmo y luego se envía al servidor, Si la base de datos del servidor tiene la misma respuesta que la dada por el cliente el servidor da el acceso al recurso , de lo contrario un 401 error .

Paquete de autenticación de resumen detallado En el anterior Authorization , el response cadena se calcula utilizando los valores de Username,Realm,Password,http-method,URI y Nonce, como se muestra en la imagen :

Algoritmo de respuesta (los dos puntos son incluido)

Por lo tanto , podemos ver que la Autenticación Digest es más Segura , ya que implica Hash (cifrado MD5), por lo que las herramientas de rastreo de paquetes no pueden rastrear la Contraseña, aunque en Basic Auth se mostró la Contraseña exacta en Wireshark.

 20
Author: BoRRis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-21 13:45:28