Por que uma tentativa de senha incorreta levaria muito mais tempo para ser processada do que a correta?


17

O lugar mais proeminente que notei é o SSH no trabalho, mas sinto que também observei esse comportamento em outro lugar.

Quando tento fazer login nos servidores Linux a partir da área de trabalho do Windows no trabalho, percebi que, se eu digitar minha senha incorretamente, levará 5 segundos ou mais antes de recuperar o "Acesso Negado". Então, quando digito minha senha corretamente, o login (junto com as mensagens de boas-vindas etc.) é praticamente instantâneo.

Existe alguma razão lógica para isso ou seria uma configuração estranha específica para as máquinas aqui no trabalho?


1
Há uma boa discussão / resposta deste na stackoverflow.com/questions/712339/... , incluindo a redução especificamente o Linux atraso de falha aqui e aqui
drzaus

o mesmo vai acontecer quando você faz logon no Windows com uma senha incorreta, mas eu aviso o tempo varia de tempos em tempos, em uma ampla gama de alguns segundos para cerca de 1-2 minutos
phuclv

Respostas:


21

Provavelmente há um tempo limite artificial embutido para dificultar o êxito de um ataque de força bruta.

Você verá isso em muitos prompts de login que envolvem autenticação segura ...


1
Ah, não tinha pensado nisso. Isso faz todo o sentido e explicaria por que sinto que vi o mesmo atraso em outro lugar.
Cam Jackson

aka tarpitting. Obrigado, Michael Kjörling ( superuser.com/questions/916187/… )
rfportilla

10

Este é um atraso pretendido para evitar ataques de força bruta. Um atraso maior também impede que o invasor consiga adivinhar a diferença entre o nome de usuário e a senha (o hash e a verificação da senha levam mais tempo do que a verificação do nome de usuário).


1

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.