stringtranslate.com

Autenticación de desafío-respuesta

En seguridad informática , la autenticación desafío-respuesta es una familia de protocolos en los que una parte presenta una pregunta ("desafío") y la otra parte debe proporcionar una respuesta válida ("respuesta") para ser autenticada . [1]

El ejemplo más simple de un protocolo desafío-respuesta es la autenticación de contraseña , donde el desafío consiste en solicitar la contraseña y la respuesta válida es la contraseña correcta.

Un adversario que puede espiar una autenticación de contraseña puede entonces autenticarse a sí mismo reutilizando la contraseña interceptada. Una solución es emitir múltiples contraseñas, cada una de ellas marcada con un identificador. El verificador puede entonces presentar un identificador y el verificador debe responder con la contraseña correcta para ese identificador. Suponiendo que las contraseñas se eligen de forma independiente, un adversario que intercepta un par de mensajes de desafío-respuesta no tiene pistas que le ayuden con un desafío diferente en un momento diferente.

Por ejemplo, cuando no hay otros métodos de seguridad de las comunicaciones disponibles, el ejército estadounidense utiliza el sistema de cifrado numérico TRIAD AKAC-1553 para autenticar y cifrar algunas comunicaciones. TRIAD incluye una lista de códigos de desafío de tres letras, que el verificador debe elegir al azar, y respuestas aleatorias de tres letras a dichos códigos. Para mayor seguridad, cada conjunto de códigos solo es válido durante un período de tiempo determinado, que normalmente es de 24 horas.

Una técnica de desafío-respuesta más interesante funciona de la siguiente manera. Digamos que Bob está controlando el acceso a algún recurso. Alice llega buscando entrar. Bob lanza un desafío, tal vez "52w72y". Alice debe responder con la cadena de caracteres que "encaje" con el desafío lanzado por Bob. El "ajuste" se determina mediante un algoritmo acordado por Bob y Alice. (La respuesta correcta podría ser tan simple como "63x83z", con el algoritmo cambiando cada carácter del desafío usando un cifrado César . En el mundo real, el algoritmo sería mucho más complejo.) Bob lanza un desafío diferente cada vez, y por lo tanto, conocer una respuesta correcta anterior (incluso si no está "oculta" por los medios de comunicación utilizados entre Alice y Bob) no sirve de nada.

Otros protocolos no criptográficos

Los protocolos de desafío-respuesta también se utilizan para afirmar cosas distintas al conocimiento de un valor secreto. Los CAPTCHA , por ejemplo, son una variante de la prueba de Turing , destinada a determinar si un espectador de una aplicación web o móvil es una persona real. En los primeros CAPTCHA, el desafío enviado al espectador era una imagen distorsionada de un texto, y el espectador respondía escribiendo ese texto. La distorsión fue diseñada para dificultar el reconocimiento óptico de caracteres (OCR) automático e impedir que un programa informático se hiciera pasar por un humano.

Técnicas criptográficas

La autenticación no criptográfica era generalmente adecuada en los días anteriores a Internet , cuando el usuario podía estar seguro de que el sistema que solicitaba la contraseña era realmente el sistema al que intentaba acceder y de que era probable que nadie estuviera espiando el canal de comunicación para observar la contraseña que se estaba ingresando. Para abordar el problema del canal inseguro, es necesario un enfoque más sofisticado. Muchas soluciones criptográficas implican una autenticación bidireccional , donde tanto el usuario como el sistema deben convencerse mutuamente de que conocen el secreto compartido (la contraseña), sin que este secreto se transmita nunca en forma clara a través del canal de comunicación, donde los espías podrían estar al acecho.

Una forma de hacerlo implica usar la contraseña como clave de cifrado para transmitir alguna información generada aleatoriamente como el desafío , tras lo cual el otro extremo debe devolver como respuesta un valor cifrado similar que es una función predeterminada de la información ofrecida originalmente, probando así que fue capaz de descifrar el desafío. Por ejemplo, en Kerberos , el desafío es un entero cifrado N , mientras que la respuesta es el entero cifrado N + 1 , lo que demuestra que el otro extremo fue capaz de descifrar el entero N. También se puede aplicar una función hash a una contraseña y un valor de desafío aleatorio para crear un valor de respuesta. Otra variación utiliza un modelo probabilístico para proporcionar desafíos aleatorios condicionados a la entrada del modelo. [2]

Estos intercambios cifrados o encriptados no revelan directamente la contraseña a un espía. Sin embargo, pueden proporcionar suficiente información para permitirle deducir cuál es la contraseña, utilizando un ataque de diccionario o un ataque de fuerza bruta . El uso de información que se genera aleatoriamente en cada intercambio (y donde la respuesta es diferente del desafío) protege contra la posibilidad de un ataque de repetición , donde un intermediario malicioso simplemente registra los datos intercambiados y los retransmite en un momento posterior para engañar a un extremo y hacerlo creer que ha autenticado un nuevo intento de conexión del otro.

Los protocolos de autenticación suelen emplear un nonce criptográfico como desafío para garantizar que cada secuencia de desafío-respuesta sea única. Esto protege contra el espionaje con un ataque de repetición posterior . Si no es práctico implementar un nonce verdadero, un generador de números pseudoaleatorios criptográficamente seguro y una función hash criptográfica pueden generar desafíos que es muy poco probable que ocurran más de una vez. A veces es importante no utilizar nonces basados ​​en el tiempo, ya que pueden debilitar servidores en diferentes zonas horarias y servidores con relojes inexactos. También puede ser importante utilizar nonces basados ​​en el tiempo y relojes sincronizados si la aplicación es vulnerable a un ataque de mensaje retrasado. Este ataque ocurre cuando un atacante copia una transmisión mientras bloquea su llegada al destino, lo que le permite reproducir la transmisión capturada después de un retraso de su elección. Esto se logra fácilmente en canales inalámbricos. El nonce basado en el tiempo se puede utilizar para limitar al atacante a reenviar el mensaje, pero restringido por un tiempo de expiración de quizás menos de un segundo, probablemente sin efecto sobre la aplicación y, por lo tanto, mitigando el ataque.

La autenticación mutua se realiza mediante un protocolo de enlace de desafío-respuesta en ambas direcciones; el servidor se asegura de que el cliente conozca el secreto, y el cliente también se asegura de que el servidor conozca el secreto, lo que protege contra un servidor fraudulento que se hace pasar por el servidor real.

La autenticación de desafío-respuesta puede ayudar a resolver el problema de intercambiar claves de sesión para el cifrado. Mediante una función de derivación de clave , el valor del desafío y el secreto se pueden combinar para generar una clave de cifrado impredecible para la sesión. Esto es particularmente eficaz contra un ataque de intermediario, porque el atacante no podrá derivar la clave de sesión del desafío sin conocer el secreto y, por lo tanto, no podrá descifrar el flujo de datos.

Ejemplo simple de secuencia de autenticación mutua

dónde

Este ejemplo en particular es vulnerable a un ataque de reflexión .

Almacenamiento de contraseñas

Para evitar el almacenamiento de contraseñas, algunos sistemas operativos (por ejemplo, los de tipo Unix ) almacenan un hash de la contraseña en lugar de almacenar la contraseña en sí. Durante la autenticación, el sistema solo necesita verificar que el hash de la contraseña ingresada coincida con el hash almacenado en la base de datos de contraseñas. Esto hace que sea más difícil para un intruso obtener las contraseñas, ya que la contraseña en sí no se almacena y es muy difícil determinar una contraseña que coincida con un hash determinado. Sin embargo, esto presenta un problema para muchos algoritmos de desafío-respuesta (pero no todos), que requieren que tanto el cliente como el servidor tengan un secreto compartido. Dado que la contraseña en sí no se almacena, un algoritmo de desafío-respuesta generalmente tendrá que usar el hash de la contraseña como secreto en lugar de la contraseña en sí. En este caso, un intruso puede usar el hash real, en lugar de la contraseña, lo que hace que los hashes almacenados sean tan sensibles como las contraseñas reales. SCRAM es un algoritmo de desafío-respuesta que evita este problema.

Ejemplos

Ejemplos de algoritmos de desafío-respuesta más sofisticados son:

Algunas personas consideran que el CAPTCHA es un tipo de autenticación de desafío-respuesta que bloquea los robots de spam . [4]

Véase también

Referencias

  1. ^ Henk CA van Tilborg; Sushil Jajodia (8 de julio de 2014). Enciclopedia de criptografía y seguridad. Springer Science & Business Media. ISBN 978-1-4419-5906-5.
  2. ^ Ahmed, Ibrahim H.; Hanna, Josiah P.; Fosong, Elliot; Albrecht, Stefano V. (2021). Avances en aplicaciones prácticas de agentes, sistemas multiagente y bien social. La colección PAAMS . Apuntes de clase en informática. Vol. 12946. págs. 14-26. doi :10.1007/978-3-030-85739-4. ISBN 978-3-030-85738-7.S2CID237611496  .​
  3. ^ "Copia archivada". www.cag.lcs.mit.edu . Archivado desde el original el 14 de octubre de 2004 . Consultado el 19 de octubre de 2022 .{{cite web}}: CS1 maint: copia archivada como título ( enlace )
  4. ^ "Autenticación desafío-respuesta".