Tecnicamente, esse atraso deliberado é para evitar ataques como o "ataque de linearização" (também existem outros ataques e razões) .
Para ilustrar o ataque, considere um programa (sem esse atraso deliberado), que verifica uma série inserida para ver se ela corresponde à série correta, que nesse caso é " xyba " . Para maior eficiência, o programador decidiu verificar um caractere de cada vez e sair assim que um caractere incorreto for encontrado, antes de iniciar os comprimentos também são verificados.
O comprimento de série correto levará mais tempo para processar do que um comprimento de série incorreto. Ainda melhor (para o atacante), um número de série com o primeiro caractere correto levará mais tempo do que qualquer outro com um primeiro caractere incorreto. As etapas sucessivas no tempo de espera são porque cada vez que há mais um loop, é necessário fazer uma comparação na entrada correta.
- Portanto, o invasor pode selecionar uma sequência de quatro caracteres e que a sequência iniciada por x leva mais tempo. (pelo trabalho de adivinhação)
- O atacante pode então fixar o caractere como xe variar o segundo caractere; nesse caso, eles descobrirão que y leva mais tempo.
- O atacante pode então fixar os dois primeiros caracteres como xy e variar o terceiro caractere; nesse caso, eles descobrirão que b leva mais tempo.
- O atacante pode então fixar os três primeiros caracteres como xyb e variar o quarto caractere; nesse caso, eles descobrirão que a leva mais tempo.
Portanto, os atacantes podem recuperar o caractere serial de cada vez.
Linearization.java.
Linearization.docx, saída de amostra
O número de série tem quatro caracteres e cada caractere possui 128 valores possíveis. Existem 128 4 = 2 28 = 268.455.456 possíveis seriados . Se o atacante deve adivinhar aleatoriamente números de série completos, ele adivinharia o número de série em cerca de
2 27 = 134.217.728 tentativas, o que é uma enorme quantidade de trabalho . Por outro lado, usando o ataque de linearização acima, é necessária uma média de apenas 128/2 = 64 palpites para cada letra, para um trabalho total esperado de cerca de 4 * 64 = 2 8 = 256 palpites, o
que é uma quantidade trivial de trabalho.
Grande parte das artes marciais escritas é adaptada disso (tirada de "Information Security: Principles and Practice" de Mark Stamp). Além disso, os cálculos acima não levam em consideração a quantidade de suposições necessárias para descobrir o comprimento de série correto.