¿Por qué tomaría más tiempo procesar una contraseña incorrecta que una correcta?

17

El lugar más destacado en el que me he dado cuenta es cuando estoy haciendo SSH en el trabajo, pero siento que también he observado este comportamiento en otros lugares.

Cuando intento iniciar sesión en los servidores de Linux desde mi escritorio de Windows en el trabajo, me doy cuenta de que si escribo mal mi contraseña, me llevará unos 5 segundos antes de que vuelva a "Acceso denegado". Luego, cuando escribo mi contraseña correctamente, el inicio de sesión (junto con los mensajes de bienvenida, etc.) es prácticamente instantáneo.

¿Hay alguna razón lógica para esto, o sería una configuración extraña que es específica de las máquinas aquí en el trabajo?

Cam Jackson
fuente
1
Hay una buena discusión / respuesta sobre esto en stackoverflow.com/questions/712339/… , incluida la reducción específica del retraso de fallas de Linux aquí y aquí
drzaus
lo mismo sucederá cuando inicie sesión en Windows con una contraseña incorrecta, pero noto que el tiempo varía de vez en cuando, en un amplio rango de unos pocos segundos a aproximadamente 1-2 minutos
phuclv

Respuestas:

21

Probablemente haya un tiempo de espera artificial incorporado para dificultar el éxito de un ataque de fuerza bruta.

Verá esto en muchas solicitudes de inicio de sesión que implican autenticación segura ...

Rhys Gibson
fuente
1
Ah, no había pensado en eso. Eso tiene mucho sentido y explicaría por qué siento que he visto el mismo retraso en otros lugares.
Cam Jackson
también conocido como tarpitting. Gracias, Michael Kjörling ( superuser.com/questions/916187/... )
rfportilla
10

Este es un retraso previsto para evitar ataques de fuerza bruta. Una demora más larga también evita que el atacante pueda adivinar que la diferencia entre el nombre de usuario es incorrecto y la contraseña es incorrecta (el hash y la verificación de la contraseña lleva mucho más tiempo que verificar el nombre de usuario).

Jens Erat
fuente
1

Técnicamente, este retraso deliberado es para prevenir ataques como el "ataque de linealización" (también hay otros ataques y razones) .

Para ilustrar el ataque, considere un programa (sin este retraso deliberado), que verifica una serie ingresada para ver si coincide con la serie correcta, que en este caso es " xyba " . Para mayor eficiencia, el programador decidió verificar un carácter a la vez y salir tan pronto como se encuentre un carácter incorrecto, antes de comenzar también se verifican las longitudes.

La longitud de serie correcta tardará más en procesarse que una longitud de serie incorrecta. Aún mejor (para el atacante), un número de serie que tenga el primer carácter correcto tomará más tiempo que cualquiera que tenga un primer carácter incorrecto. Los pasos sucesivos en el tiempo de espera se deben a que cada vez que hay un ciclo más, la comparación debe realizarse en la entrada correcta.

  • Entonces, el atacante puede seleccionar una cadena de cuatro caracteres y que la cadena que comienza con x toma más tiempo. (por adivinar trabajo)
  • Luego, el atacante puede corregir el carácter como x y variar el segundo carácter, en cuyo caso descubrirán que y toma más tiempo.
  • Luego, el atacante puede corregir los primeros dos caracteres como xy y variar el tercer carácter, en cuyo caso descubrirán que b toma más tiempo.
  • Luego, el atacante puede corregir los primeros tres caracteres como xyb y variar el cuarto carácter, en cuyo caso descubrirá que a toma más tiempo.

Por lo tanto, los atacantes pueden recuperar el carácter de serie en serie.

Linearization.java.

Linearization.docx, salida de muestra

El número de serie tiene cuatro caracteres y cada carácter tiene 128 valores posibles. Entonces hay 128 4 = 2 28 = 268,435,456 posibles seriales . Si el atacante debe adivinar al azar los números de serie completos, ella adivinaría el número de serie en aproximadamente 2 27 = 134,217,728 intentos, lo cual es una enorme cantidad de trabajo . Por otro lado, al usar el ataque de linealización anterior, se requiere un promedio de solo 128/2 = 64 conjeturas para cada letra, para un trabajo total esperado de aproximadamente 4 * 64 = 2 8 = 256 conjeturas, que es una cantidad trivial de trabajo.

Gran parte del escrito marcial está adaptado de esto (tomado de "Seguridad de la información: Principios y práctica" de Mark Stamp). Además, los cálculos anteriores no tienen en cuenta la cantidad de conjeturas necesarias para determinar la longitud de serie correcta.

Ashesh Kumar Singh
fuente