Czy moje hasło jest…

3 lipca 2019

Czy moje hasło jest bezpieczne? #od0dopentestera
A może znalazło się w jakimś wycieku danych?
Jak mogę to sprawdzić?

Pierwsza możliwość to samodzielne odnalezienie linków do baz zawierających dane z wycieków.
Następnie należy je wypakować, odpowiednio przetworzyć i spróbować odnaleźć w nich swoje hasła.
Ale nie każdy posiada odpowiednie zdolności techniczne.

Wiemy, że podawanie naszych haseł na zewnętrznych serwisach nie jest najlepszym pomysłem.
W celu zachowania bezpieczeństwa będziemy wiec korzystać z funkcji haszującej, która z dowolnego ciągu znaków tworzy inny ciąg o stałej długości.
Operacja ta jest nieodwracalna – to znaczy, ze stworzonego w taki sposób hasza nie da się otrzymać pierwotnej wartości (pomijając ataki siłowe).

Tak wygenerowany hash sha1 możemy sprawdzać w różnych bazach online.
Minusy? Nigdy nie mamy pewności jakie zamiary ma osoba udostępniająca tego rodzaju usługi.
Jeżeli hasło istnieje w bazie w postaci hasha – twórca witryny może je również posiadać w zwykłej postaci bez żadnego hashowania.
Znając naszą tożsamość może wykorzystać tą wiedzę do targetowanych ataków.

Dochodzimy więc do paradoksu.
Z jednej strony aby sprawdzić hasło musimy je jakoś przekazać do serwisu.
Z drugiej jednak strony ta czynność w odpowiednich warunkach może doprowadzić do jego wycieku.

Jak sprawę rozwiązał serwis have i been pwned?
Wykorzystując k-anonymity.

Załóżmy, że jesteśmy firmą produkującą innowacyjne leki.
Chcielibyśmy podzielić się wynikami badań w magazynach branżowych.
Nie możemy jednak podawać danych osobowych pacjentów.
Musimy je jakoś zanonimizować – czyli usunąć informacje, na podstawie których można by było zidentyfikować konkretną osobę.

Pierwszy sposób polega na ukrywaniu pewnych danych.
Wystarczy imię i nazwisko zamienić na gwiazdkę.
Drugi sposób to uogólnienie.
Zamiast podawać konkretny wiek danej osoby – podajemy zakres, a miasto zamieniamy na województwo.

Ale jak to się ma do bezpieczeństwa haseł?
Serwis lokalnie, na naszym komputerze wylicza hash sha1 a następnie pobiera z niego pierwsze 5 znaków.
Te 5 znaków wysyłane jest do serwera API, który to zwraca wszystkie rekordy, zaczynające się od tych wartości.
Przeglądarka ponownie lokalnie porównuje każdy z tych wyników z wyliczonym wcześniej hashem i jeżeli odnajdzie pasujący rekord – wie że dane hasło wyciekło.

Dzięki temu całe nasze hasło nigdy nie opuszcza naszego komputera w żadnej postaci.
5 znaków to bardzo mało.
Twórca witryny nie jest w stanie na tej podstawie stwierdzić czy nasze hasło znajduje się w bazie a może jest to zupełnie inny ciąg znaków, którego hash po prostu zaczyna się od podanej wartości.

Subskrybuj kanał na YouTube
Transkrypcja
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Dostępne również na Google i Apple Podcasts oraz Spotify i Anchor.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.

#bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki #podcast #swiat #gruparatowaniapoziomu #biznes #security

No Comments

Comments are closed.