Autenticación y Seguridad en la Web: Cookies, Sesiones, Basic, Base64 y Digest
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 5,07 KB
Cookies y Sesiones
Las cookies son una herramienta fundamental en el desarrollo web que permite a los servidores almacenar información específica sobre un usuario en el navegador del cliente. Cuando un desarrollador lo considera necesario para la funcionalidad de una aplicación, puede crear una cookie. Esta cookie contiene datos generados por el servidor que el cliente guarda. En peticiones posteriores, el cliente envía estas cookies de vuelta al servidor, permitiendo a este último utilizar los datos almacenados en combinación con otra información. Los navegadores almacenan las cookies en forma de ficheros.
La principal utilidad de las cookies es resolver la falta de estado en las comunicaciones web. Sin embargo, existen restricciones de seguridad: solo el servidor que generó una cookie puede acceder a ella. Las cabeceras HTTP Set-Cookie
y Cookie
se utilizan para crear y enviar cookies, respectivamente. Las cookies se estructuran en pares nombre-valor:
- Nombre: Definido por el desarrollador.
- Valor: Asignado por el programa que crea la cookie.
Las cookies pueden ser permanentes o tener un tiempo de vida limitado, según lo decida el desarrollador. No obstante, el cliente siempre puede acceder a ellas y borrarlas.
Legislación sobre Cookies
La legislación actual obliga a los sitios web a informar a los usuarios sobre el uso de cookies y su finalidad. Esto se debe a que las cookies pueden almacenar datos personales, como información de tarjetas de crédito, sin el control directo del usuario. Aunque el usuario puede rechazar la política de cookies, esto suele impedir el acceso al servicio.
Funcionamiento de las Cookies y Sesiones
El servidor crea una cookie y, en las peticiones siguientes, tiene acceso a la información previamente guardada, lo que le permite controlar la actividad del usuario. El cliente envía la cookie al servidor en la siguiente petición. Las sesiones, por otro lado, almacenan toda la información de la actividad del usuario en el servidor, lo que las hace más seguras. En este caso, lo que se intercambia en forma de cookie es un identificador de sesión, que se crea al iniciar una sesión. Las sesiones se apoyan en las cookies para gestionar estos identificadores.
Autenticación Basic
En el esquema de autenticación Basic, el servidor, además de indicar Basic
en la cabecera, devuelve información sobre el dominio en el que el usuario debe autenticarse. Esto permite contextualizar a los usuarios dentro de un dominio específico. Los usuarios se separan por dominios, lo que les permite acceder a sitios determinados dentro de ese dominio.
Base64
Base64 es una función que transforma grupos de 6 bits en un alfabeto de 64 caracteres. No es un algoritmo de cifrado, sino una función de transformación de datos.
Digest
El esquema de autenticación Digest protege las claves de usuario. Dado que Base64 no es un método de cifrado seguro, se utiliza la función resumen MD5 para este propósito. MD5 produce una cadena de longitud fija con caracteres hexadecimales, independientemente de la entrada. Siempre genera la misma salida para la misma entrada, pero es irreversible y determinista, es decir, no se puede obtener la entrada a partir de la salida. Si el fichero original se modifica, el valor resultante también cambia.
Ataque de Reinyección
Un ataque de reinyección consiste en tomar una petición y enviarla tal cual al servidor, logrando una autenticación exitosa sin conocer la contraseña original, ya que se envía directamente el hash MD5. Para evitar esto, no basta con una función resumen; se deben combinar con claves de un solo uso. De esta manera, el servidor espera un valor diferente en cada petición, impidiendo el ataque de reinyección. La contraseña del usuario se combina con un valor de un solo uso antes de ser enviada por la red.
Algoritmos de Digest
- MD5:
A1 = MD5(usuario:dominio:contraseña)
, donde A1 es el resultado de aplicar la función resumen a usuario, dominio y contraseña. - MD5-sess:
A1 = MD5(MD5(usuario:dominio:contraseña):nonce:cnonce)
.
Calidades de Protección en Digest (QOP)
- UNDEFINED: Cadena A1 + clave de un solo uso + MD5 de la concatenación del método HTTP y la URI, todo pasado por MD5.
- AUTH: A1 es la clave de un solo uso.
- SERVER: Contador de claves.
- CLIENTE: Quality of Service (QoS), en este caso es
auth
. - AUTH-INT: Similar a
auth
, pero también incluye la integridad del mensaje.
En la actualidad, si se fuerza el nonce
y no hay variabilidad, se pueden romper las claves de seguridad, como las de las redes Wi-Fi.