Perché un tentativo di password errata richiederebbe molto più tempo per l'elaborazione di una corretta?


17

Il posto più importante che ho notato è quando SSH è al lavoro, ma mi sembra di aver osservato questo comportamento anche altrove.

Quando provo ad accedere ai server Linux dal mio desktop di Windows sul lavoro, ho notato che se digito male la mia password, ci vogliono circa 5 secondi prima di riavere "Accesso negato". Quindi, quando digito correttamente la mia password, il login (insieme ai messaggi di benvenuto, ecc.) È praticamente istantaneo.

C'è qualche motivo logico per questo, o sarebbe dovuto a qualche configurazione strana che è specifica per le macchine qui al lavoro?


1
C'è una buona discussione / risposta su questo su stackoverflow.com/questions/712339/… , inclusa la riduzione specifica del ritardo del fallimento di Linux qui e qui
drzaus,

lo stesso accadrà quando accedi a Windows con una password errata, ma noto che il tempo varia di volta in volta, in una vasta gamma da pochi secondi a circa 1-2 minuti
phuclv

Risposte:


21

Probabilmente c'è un timeout artificiale incorporato per rendere più difficile il successo di un attacco di forza bruta.

Lo vedrai in molti prompt di login che prevedono l'autenticazione sicura ...


1
Ah, non ci avevo pensato. Questo ha perfettamente senso e spiegherebbe perché mi sento di aver visto lo stesso ritardo altrove.
Cam Jackson,

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

10

Questo è un ritardo previsto per prevenire attacchi di forza bruta. Un ritardo più lungo impedisce inoltre all'autore dell'attacco di indovinare la differenza tra nome utente errato e password errata (hashing e controllo della password richiedono tempi più lunghi rispetto al controllo del nome utente).


1

Tecnicamente, questo ritardo deliberato serve a prevenire attacchi come "l'attacco di linearizzazione" (ci sono anche altri attacchi e ragioni) .

Per illustrare l'attacco, prendere in considerazione un programma (senza questo ritardo deliberato), che controlla un seriale inserito per vedere se corrisponde al seriale corretto, che in questo caso sembra essere " xyba " . Per motivi di efficienza, il programmatore ha deciso di controllare un carattere alla volta e di uscire non appena viene rilevato un carattere errato, prima di iniziare anche la verifica delle lunghezze.

La lunghezza seriale corretta richiederà più tempo rispetto a una lunghezza seriale errata. Ancora meglio (per attaccante), un numero seriale con il primo carattere corretto richiederà più tempo di qualsiasi altro con un primo carattere errato. I passaggi successivi nel tempo di attesa sono perché ogni volta che c'è un altro loop, il confronto per passare attraverso l'input corretto.

  • Pertanto, l'attaccante può selezionare una stringa di quattro caratteri e che la stringa che inizia con x richiede più tempo. (per indovinare lavoro)
  • L'attaccante può quindi correggere il carattere come x e variare il secondo carattere, nel qual caso scoprirà che y impiega più tempo.
  • L'attaccante può quindi correggere i primi due caratteri come xy e variare il terzo carattere, nel qual caso scopriranno che b impiega più tempo.
  • L'attaccante può quindi correggere i primi tre caratteri come xyb e variare il quarto carattere, nel qual caso troveranno che a impiega più tempo.

Quindi, gli attaccanti possono recuperare il personaggio seriale una alla volta.

Linearization.java.

Linearization.docx, output di esempio

Il numero seriale è lungo quattro caratteri e ogni carattere ha 128 possibili valori. Quindi ci sono 128 4 = 2 28 = 268.435.456 possibili serial . Se l'attaccante dovesse indovinare casualmente numeri di serie completi, indovinerebbe il numero di serie in circa 2 27 = 134.217.728 tentativi, che è un'enorme quantità di lavoro . D'altra parte, usando l'attacco di linearizzazione sopra, è richiesta una media di solo 128/2 = 64 ipotesi per ogni lettera, per un lavoro totale previsto di circa 4 * 64 = 2 8 = 256 ipotesi, che è una quantità banale di lavoro.

Gran parte della marziale scritta è adattata da questo (tratto da "Sicurezza delle informazioni: principi e pratica" di Mark Stamp). Inoltre, i calcoli sopra riportati non tengono conto della quantità di congetture necessarie per determinare la lunghezza seriale corretta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.