En seguridad informática , la autenticación de desafío-respuesta es una familia de protocolos en la 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 de desafío-respuesta es la autenticación de contraseña , donde el desafío es pedir la contraseña y la respuesta válida es la contraseña correcta.
Claramente, un adversario que puede espiar la autenticación de una contraseña puede autenticarse a sí mismo de la misma manera. Una solución es emitir varias contraseñas, cada una de ellas marcada con un identificador. El verificador puede solicitar cualquiera de las contraseñas y el probador debe tener esa 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 para ayudar con un desafío diferente en un momento diferente.
Por ejemplo, cuando otros métodos de seguridad de las comunicaciones no están disponibles, el ejército de los EE. UU. Utiliza el 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 se supone que el verificador debe elegir al azar, y respuestas aleatorias de tres letras a ellos. Para mayor seguridad, cada conjunto de códigos solo es válido por un período de tiempo particular que normalmente es de 24 horas.
Una técnica de desafío-respuesta más interesante funciona de la siguiente manera. Digamos, Bob está controlando el acceso a algún recurso. Alice viene buscando la entrada. Bob lanza un desafío, quizás "52w72y". Alice debe responder con la única cadena de caracteres que "encaja" con el desafío que presentó Bob. El "ajuste" está determinado por un algoritmo "conocido" por Bob y Alice. (La respuesta correcta puede ser tan simple como "63x83z" (cada carácter de respuesta es uno más que el del desafío), pero en el mundo real, las "reglas" serían mucho más complejas). Bob emite un desafío diferente cada vez, y así conocer una respuesta correcta previa (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 del conocimiento de un valor secreto. Los CAPTCHA , por ejemplo, son una especie de variante de la prueba de Turing , destinada a determinar si un espectador de una aplicación web es una persona real. El desafío enviado al espectador es una imagen distorsionada de un texto, y el espectador responde escribiendo ese texto. La distorsión está diseñada para dificultar el reconocimiento óptico automático de caracteres (OCR) y evitar que un programa de computadora pase como humano.
Técnicas criptográficas
La autenticación no criptográfica era generalmente adecuada en los días previos 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 que era probable que nadie estuviera escuchando a escondidas el canal de comunicación para observe la contraseña que se ingresa. Para abordar el problema de los canales inseguros, es necesario un enfoque más sofisticado. Muchas soluciones criptográficas implican autenticación bidireccional , en la que tanto el usuario como el sistema deben convencerse mutuamente de que conocen el secreto compartido (la contraseña), sin que este secreto se transmita de forma clara a través del canal de comunicación, donde los espías podrían estar alfombrilla de ratón.
Una forma de hacerlo implica usar la contraseña como clave de cifrado para transmitir información generada aleatoriamente como desafío , después de 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 reto es un encriptada número entero N , mientras que la respuesta es la encriptada número entero N + 1 , demostrando que el otro extremo fue capaz de desencriptar el número entero N . En otras variaciones, una función hash opera con una contraseña y un valor de desafío aleatorio para crear un valor de respuesta.
Dichos intercambios cifrados o hash no revelan directamente la contraseña a un intruso. Sin embargo, pueden proporcionar suficiente información para permitir que un fisgón deduzca 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 uno. terminar pensando que ha autenticado un nuevo intento de conexión del otro.
Los protocolos de autenticación generalmente emplean un nonce criptográfico como desafío para garantizar que cada secuencia desafío-respuesta sea única. Esto protege contra un ataque man-in-the-middle y el posterior ataque de repetición . Si no es práctico implementar un nonce verdadero, un generador de números pseudoaleatorios criptográficamente seguro fuerte y una función de 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 mensajes retrasados. 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 caducidad de quizás menos de un segundo, lo que probablemente no tenga ningún efecto sobre la aplicación y, por lo tanto, mitigue 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 deshonesto que se hace pasar por el servidor real.
La autenticación de desafío-respuesta puede ayudar a resolver el problema del intercambio de claves de sesión por cifrado. Utilizando una función de derivación de claves , el valor de desafío y el secreto pueden combinarse para generar una clave de cifrado impredecible para la sesión. Esto es particularmente efectivo contra un ataque man-in-the-middle, 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.
Secuencia de autenticación mutua de ejemplo simple
- El servidor envía un valor de desafío único sc al cliente
- El cliente envía un valor de desafío único cc al servidor
- El servidor calcula sr = hash (cc + secret) y lo envía al cliente
- El cliente calcula cr = hash (sc + secret) y lo envía al servidor
- El servidor calcula el valor esperado de cr y asegura que el cliente respondió correctamente
- El cliente calcula el valor esperado de sr y asegura que el servidor respondió correctamente
dónde
- sc es el desafío generado por el servidor
- cc es el desafío generado por el cliente
- cr es la respuesta del cliente
- sr es la respuesta del servidor
Almacenamiento de contraseñas
Para evitar el almacenamiento de contraseñas, algunos sistemas operativos (por ejemplo, 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 dado. Sin embargo, esto presenta un problema para muchos (pero no todos) algoritmos de desafío-respuesta, 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 hash almacenados sean tan sensibles como las contraseñas reales. SCRAM es un algoritmo de desafío-respuesta que evita este problema.
Ejemplos de
Ejemplos de algoritmos de desafío-respuesta más sofisticados son:
- Sistemas de acuerdo de clave y prueba de contraseña de conocimiento cero (como Secure Remote Password (SRP) )
- Protocolo de autenticación por desafío mutuo (CHAP) ( RFC 1994 )
- CRAM-MD5 , OCRA: algoritmo desafío-respuesta OATH ( RFC 6287 )
- Mecanismo de autenticación de respuesta de desafío salado (SCRAM) ( RFC 5802 )
- El sistema desafío-respuesta de ssh basado en RSA [1] .
Algunas personas consideran un CAPTCHA como una especie de autenticación de desafío-respuesta que bloquea los spambots . [2]
Ver también
- Protocolo de autenticación por desafío mutuo
- Filtrado de spam de desafío-respuesta
- CRAM-MD5
- Función hash criptográfica
- Nonce criptográfico
- Kerberos
- Protocolo de Otway-Rees
- Protocolo de Needham-Schroeder
- Protocolo Wide Mouth Frog
- Acuerdo de clave autenticada con contraseña
- Mecanismo de autenticación de respuesta de desafío salado
- SQRL
- Protocolo de límite de distancia
- Ataque de reflexión
- Repetir ataque
- Ataque de intermediario
- WebAuthn
Referencias
- ^ 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.
- ^ "Autenticación de desafío-respuesta" .