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.