Dlaczego niepoprawna próba hasła potrwa dłużej niż prawidłowe?

17

Najbardziej znaczącym miejscem, które zauważyłem, jest SSH w pracy, ale wydaje mi się, że obserwowałem to zachowanie także gdzie indziej.

Kiedy próbuję zalogować się do serwerów Linux z pulpitu Windows w pracy, zauważyłem, że jeśli źle wpisam hasło, zajmie mi to około 5 sekund, zanim odzyskam „Odmowa dostępu”. Następnie, gdy poprawnie wpisuję hasło, logowanie (wraz z wiadomościami powitalnymi itp.) Jest praktycznie natychmiastowe.

Czy ma to jakiś logiczny powód, czy może wynikałoby to z jakiejś dziwnej konfiguracji, która jest specyficzna dla komputerów w pracy?

Cam Jackson
źródło
1
Dobra dyskusja / odpowiedź na to pytanie znajduje się na stackoverflow.com/questions/712339/... , w tym szczególnie zmniejszając opóźnienie awarii Linuksa tutaj i tutaj
drzaus
to samo stanie się, gdy zalogujesz się do systemu Windows przy użyciu niepoprawnego hasła, ale zauważam, że czas zmienia się od czasu do czasu, w szerokim zakresie od kilku sekund do około 1-2 minut
phuclv

Odpowiedzi:

21

Prawdopodobnie jest wbudowany sztuczny limit czasu, który utrudnia powodzenie ataku brutalnej siły.

Zobaczysz to na wielu monitach logowania, które wymagają bezpiecznego uwierzytelnienia ...

Rhys Gibson
źródło
1
Ach, nie myślałem o tym. To ma sens i wyjaśnia, dlaczego czuję, że widziałem to samo opóźnienie w innym miejscu.
Cam Jackson
aka plandeki. Dzięki, Michael Kjörling ( superuser.com/questions/916187/… )
rfportilla
10

Jest to pewne zamierzone opóźnienie, aby zapobiec atakom brutalnej siły. Dłuższe opóźnienie również uniemożliwia atakującemu odgadnięcie różnicy między nazwą użytkownika a błędem hasła (haszowanie i sprawdzanie hasła zajmuje zauważalnie więcej czasu niż sprawdzenie nazwy użytkownika).

Jens Erat
źródło
1

Z technicznego punktu widzenia to celowe opóźnienie ma na celu zapobieganie atakom takim jak „atak linearyzacyjny” (istnieją również inne ataki i powody) .

Aby zilustrować atak, rozważ program (bez tego celowego opóźnienia), który sprawdza wprowadzony numer seryjny, aby sprawdzić, czy pasuje do poprawnego numeru seryjnego, którym w tym przypadku jest przypadek „ xyba . W celu zwiększenia wydajności programista postanowił sprawdzić jeden znak na raz i wyjść z gry, gdy tylko zostanie znaleziony nieprawidłowy znak, przed rozpoczęciem sprawdzania długości.

Przetwarzanie prawidłowej długości seryjnej potrwa dłużej niż niepoprawna długość seryjna. Jeszcze lepiej (dla atakującego) numer seryjny, który ma poprawny pierwszy znak, potrwa dłużej niż jakikolwiek, który ma nieprawidłowy pierwszy znak. Kolejne kroki w czasie oczekiwania są takie, że za każdym razem, gdy pojawia się jeszcze jedna pętla, porównanie przechodzi przez prawidłowe wejście.

  • Atakujący może więc wybrać czteroznakowy ciąg, a ciąg rozpoczynający się od x zajmuje najwięcej czasu. (zgadnij pracę)
  • Atakujący może następnie naprawić znak jako x i zmienić drugi znak, w którym to przypadku przekona się, że y trwa najdłużej.
  • Atakujący może następnie naprawić pierwsze dwa znaki jako xy i zmieniać trzeci znak, w którym to przypadku przekona się, że b zajmuje najdłużej.
  • Atakujący może następnie rozwiązać pierwsze trzy charakteru jako XYB i różnią czwartą postać, w którym to przypadku będą one uważają, że trwa najdłużej.

Dlatego atakujący mogą odzyskać seryjnie jedną postać na raz.

Linearization.java.

Linearyzacja.docx, przykładowe wyjście

Numer seryjny składa się z czterech znaków i każdy znak ma 128 możliwych wartości. Potem są 128 4 = 2 28 = 268 435 456 możliwych seriali . Jeśli atakujący musi losowo odgadnąć pełne numery seryjne, odgadnie numer seryjny w około 2 27 = 134 217 728 próbach, co jest ogromnym nakładem pracy . Z drugiej strony, stosując powyższy atak linearyzacyjny, wymagana jest średnio tylko 128/2 = 64 domysłów na każdą literę, co daje całkowitą oczekiwaną pracę wynoszącą około 4 * 64 = 28 = 256 domysłów, co jest banalną kwotą pracy.

Wiele z napisanych wojen jest zaadaptowanych z tego (zaczerpniętych z Mark Security Stamp: „Bezpieczeństwo informacji: zasady i praktyka”). Również powyższe obliczenia nie uwzględniają ilości domysłów potrzebnych do ustalenia prawidłowej długości szeregowej.

Ashesh Kumar Singh
źródło