Autor Wątek: Czy udostępnienie źródeł Warsztatu ułatwi zhakowanie haseł?  (Przeczytany 7413 razy)

Offline Xirdus

  • Redaktor

# Sierpień 01, 2014, 00:35:52
// wydzielono z Informacje i aktualności -Xirdus

Nie wierzę, że stronę tworzył tak utalentowany team, aby nie było w niej tylnych drzwi. Nie mówiąc już o bezpieczeństwie profili (szyfrowanie haseł itd).
Nie musi być bardzo utalentowany - wystarczy żeby nie było żadnych oczywistych błędów pozwalających na łatwy SQL Injection, Cross-Site Scripting czy inny trywialny hak i już jest dość bezpiecznie - nie jest to aż tak dużo. A hasła są całkowicie bezpieczne nawet przy świetnie odokumentowanym algorytmie z dokładnymi opisami co, gdzie i jak, o ile są przechowywane w bazie danych w formie hasha.
« Ostatnia zmiana: Sierpień 01, 2014, 21:19:20 wysłana przez Xirdus »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline ArekBal

  • Użytkownik

  • +1
# Sierpień 01, 2014, 14:38:08
Cytuj
o ile są przechowywane w bazie danych w formie hasha
To też zależy z jakiego hasha...
W każdym razie dodanie salta nie zaszkodzi.

Offline Xirdus

  • Redaktor

  • +1
# Sierpień 01, 2014, 15:28:12
To też zależy z jakiego hasha...
Dowolny hash dla którego nie da się wygenerować kolizji w sensownym czasie - choćby SHA-1.

Offline walkinguer

  • Użytkownik

# Sierpień 01, 2014, 16:56:48
Xirdus, myślałem, że napisałeś coś mądrzejszego. Hash niczego nie zabezpiecza. Po prostu szyfruje twoj tekst...

Jeśli wiem, którego użyłeś (sha-1),  to później z górki. Hasła zabezpiecza się tzw. saltem zarówno z bazy danych jak ze skryptu. Wtedy dopiero są bezpieczne, bo wymagany jest nie tylko dostęp do SQL ale również kodu strony.. Co i tak mało pomoże (jeśli robił to ktoś ogarnięty).


Miałem wcześniej raczej na myśli, że skoro na portalu istnieje funkcja wysyłania powiadomień, a nikt jeszcze nie zrobił funkcji "oznacz wszystkie jako przeczytane", to wnioski same się nasuwają..

Offline albireo

  • Użytkownik

  • +4
# Sierpień 01, 2014, 17:10:09
Hash niczego nie zabezpiecza. Po prostu szyfruje twoj tekst...
Hash niczego nie szyfruje.

Offline Karol

  • Użytkownik

# Sierpień 01, 2014, 17:11:33
Co do hashowania haseł to jakiś czas temu natknąłem się na ciekawą opcję - hasło jest hashowane milion razy algorytmem SHA-512 z losowym salt'em, aby sprawdzić poprawność wystarczy wpisane hasło posolić hashem z bazy i milion razy przejechać SHA-512 (identycznie jak tworzenie pierwotnego hasha) i to co wyjdzie musi być identyczne jak hash w bazie. Z dodatkowych plusów jest to, że operacja ta trwa kilka sekund nawet na dość mocnych serwerach co skutecznie eliminuje brute-force.

Offline albireo

  • Użytkownik

# Sierpień 01, 2014, 17:18:44
Co do hashowania haseł to jakiś czas temu natknąłem się na ciekawą opcję - hasło jest hashowane milion razy algorytmem SHA-512 z losowym salt'em, aby sprawdzić poprawność wystarczy wpisane hasło posolić hashem z bazy i milion razy przejechać SHA-512 (identycznie jak tworzenie pierwotnego hasha) i to co wyjdzie musi być identyczne jak hash w bazie. Z dodatkowych plusów jest to, że operacja ta trwa kilka sekund nawet na dość mocnych serwerach co skutecznie eliminuje brute-force.
Jeśli ta metoda polega tylko na hashowaniu wyniku poprzedniego hashowania, to nie jest najlepszy pomysł, bo zwiększa prawdopodobieństwo trafienia na kolizję.

Offline walkinguer

  • Użytkownik

# Sierpień 01, 2014, 17:40:42
(Off top)

Haszuje, szyfruje, zabezpiecza, nazwy nie czynią z nikogo programisty. Zwłaszcza, jeśli z góry wiadomo, że jest amatorem (patrz moje pozostałe posty). Ważne, że mnie rozumiecie. :)

(Mniejszy off top)

Wracając do tematu, wciąż uważam, że podwójny salt odpowiednio przygotowany jest najprostszym i jednocześnie najlepszym sposobem zabezpieczania haseł i nie ma sensu zastanawiać sie nad innymi. Dopóki nie udostępnia się własnego kodu...

Co nie zmienia faktu, że odpowiednio napisany kod również udostępniony może być bezpieczny. Jednak ja osobiście nigdy w życiu bym tego nie zrobił. Portal jest portalem, przechowuje dane na temat użytkowników i żaden z nich raczej nie życzy sobie wycieku danych.

Na tym forum zabawne jest to, że jeśli jedna osoba w danym temacie poruszy jakąś kwestię, której może doczepić się druga, to automatycznie dyskusja zmienia kierunek.

Offline Xirdus

  • Redaktor

# Sierpień 01, 2014, 18:49:47
Jeśli wiem, którego użyłeś (sha-1),  to później z górki.
Ta? To teraz takie małe ćwiczenie: SHA-1 mojego hasła to D0F8D96EF806C440D4D2BCE0BB56244540FD292F. Jakie jest moje hasło?

Inna sprawa, że solenie hasha jest bardzo dobrym pomysłem - proste w implementacji i o wiele zwiększa trudność znalezienia kolizji. Co nie znaczy że goły hash nie jest w typowych (nie-wielomilionowo-biznesowych) zastosowaniach wystarczający.

Co do hashowania haseł to jakiś czas temu natknąłem się na ciekawą opcję - hasło jest hashowane milion razy algorytmem SHA-512 z losowym salt'em, aby sprawdzić poprawność wystarczy wpisane hasło posolić hashem z bazy i milion razy przejechać SHA-512 (identycznie jak tworzenie pierwotnego hasha) i to co wyjdzie musi być identyczne jak hash w bazie. Z dodatkowych plusów jest to, że operacja ta trwa kilka sekund nawet na dość mocnych serwerach co skutecznie eliminuje brute-force.
SHA-512 z SHA-512 dalej ma długość 512 bitów. I jestem pewien, że da się zrobić program liczący milionowy hash w czasie zbliżonym do pojedynczego hasha.[potrzebne źródło]

Jeśli ta metoda polega tylko na hashowaniu wyniku poprzedniego hashowania, to nie jest najlepszy pomysł, bo zwiększa prawdopodobieństwo trafienia na kolizję.
Nie zwiększa. Co nie zmienia faktu że jest bez sensu.

Haszuje, szyfruje, zabezpiecza, nazwy nie czynią z nikogo programisty.
Ale właściwe stosowanie słów jest bardzo ważne, żeby wiedzieć o czym się mówi. Hash różni się od szyfru tym, że zaszyfrowana wiadomość z założenia musi dać się odszyfrować, a bezpieczny kryptograficznie hash wręcz przeciwnie.

Wracając do tematu, wciąż uważam, że podwójny salt odpowiednio przygotowany jest najprostszym i jednocześnie najlepszym sposobem zabezpieczania haseł i nie ma sensu zastanawiać sie nad innymi. Dopóki nie udostępnia się własnego kodu...
Jeśli sól siedzi bezpiecznie w bazie danych, najlepiej innej niż ta z użytkownikami, to udostępnienie kodu wcale hakerowi nie pomaga. No, może odrobinę.


Zdaje się, że wszyscy tutaj zapominają o prostym fakcie, że zanim haker dobierze się do naszych haseł, musi wpierw wykraść bazę danych :)

Offline walkinguer

  • Użytkownik

# Sierpień 01, 2014, 19:38:44
Cytuj
Ta? To teraz takie małe ćwiczenie:

Nie nie nie. Ja z tym nie mam nic wspólnego. Ale wytłumaczę mój tok myślenia. Załóżmy, że przeczytałem wszystkie wiadomości redaktora, lub administratora. On jest głupi i nie posiada hasła w stylu Ż2OSR72X, bo kto by się w to pierdzielił? Wywnioskowałem co może wpisać, znam haszysz z bazy danych.

Tworzę na szybko program i 200 propozycji hasła, dzięki czemu nie przeprowadzam prób na zabezpieczonym skrypcie. Być może któreś z haseł jest trafione.

Powinienem napisać inaczej - to może być spore ułatwienie. Może nie dostanę się do hasła administratora, ale są też użytkownicy. A co jak mój użytkownik posiada również facebooka, skrzynkę email w Gmail? Posiada też stronę internetową, której dane dostępu znajdują się na skrzynce.

Wtedy Salt w bazie danych nic nie pomaga, pomaga za to drugi znajdujący się w kodzie strony.

Cytuj
Zdaje się, że wszyscy tutaj zapominają o prostym fakcie, że zanim haker dobierze się do naszych haseł, musi wpierw wykraść bazę danych :)

I to nie moja wina. Ja tylko podałem serię problemów jakie najszybciej przyszły mi do głowy w momencie dotarcia do mojego umysłu wiadomości "Udostępnić kod strony..". 

A tutaj połowa tematów polega... Zresztą o tym już pisałem w poprzednim poście :)


Lepiej napiszcie co z tym zrobicie w końcu.

Offline Xirdus

  • Redaktor

# Sierpień 01, 2014, 20:51:33
Tworzę na szybko program i 200 propozycji hasła, dzięki czemu nie przeprowadzam prób na zabezpieczonym skrypcie. Być może któreś z haseł jest trafione.
Metoda słownikowa to zupełnie inna para kaloszy. I rzeczywiście jest łatwiejsza jeśli zna się algorytm hasha. Z tym że łatwiej walić słownikowe hasła do boxa na stronie niż wykraść bazę danych z hashami.

Powinienem napisać inaczej - to może być spore ułatwienie. Może nie dostanę się do hasła administratora, ale są też użytkownicy. A co jak mój użytkownik posiada również facebooka, skrzynkę email w Gmail? Posiada też stronę internetową, której dane dostępu znajdują się na skrzynce.
Przy takim układzie to dobry Boże nie pomoże.

I to nie moja wina. Ja tylko podałem serię problemów jakie najszybciej przyszły mi do głowy w momencie dotarcia do mojego umysłu wiadomości "Udostępnić kod strony..".
A ja staram się wykazać że twoje obawy są zupełnie nieuzasadnione ;)

Offline albireo

  • Użytkownik

# Sierpień 01, 2014, 21:08:19
Nie zwiększa. Co nie zmienia faktu że jest bez sensu.
Zwiększa, jeśli po pierwszym przebiegu była kolizja, to po każdym następnym też będzie, ale jeśli wcześniej kolizji nie było, to istnieje niezerowe prawdopodobieństwo, że się w kolejnym przebiegu pojawi.

Offline Xirdus

  • Redaktor

# Sierpień 01, 2014, 21:14:55
Zwiększa, jeśli po pierwszym przebiegu była kolizja, to po każdym następnym też będzie, ale jeśli wcześniej kolizji nie było, to istnieje niezerowe prawdopodobieństwo, że się w kolejnym przebiegu pojawi.
Pamiętaj że atakujący nie ma wglądu do hashy pośrednich, i nie ma możliwości dobierania sobie ilości przebiegów funkcji hashującej.

Offline Karol

  • Użytkownik

# Sierpień 01, 2014, 21:33:25
Ta? To teraz takie małe ćwiczenie: SHA-1 mojego hasła to D0F8D96EF806C440D4D2BCE0BB56244540FD292F. Jakie jest moje hasło?
never gonna give you up :D never gonna let you down, tra lalalala :D

Robienie hasha z hasha ma sens taki, że to obliczeniowo trwa i uodparnia na metody słownikowe i inne brute force, bo spróbuje coś w ten sposób "hakować" jak jeden test trwa 3s, a nie 0,003s.

Natomiast spróbujcie wydobyć hasło z tego -> $6$rounds=1000000$135031128$T0jsAJooWcjUvg.g.8Mo2259lH9P1JxfSGq7oHtHoMAbUpiSc5Ob71KWnJJW/ZxUpGXzS31GoxJcouQI7pVZT0

Jedyne co wiadomo to to, że jest to SHA-512 ($6$), oraz powtórzony 1000000 razy ($rounds=1000000$). Reszta to tyle razy przehashowane hasło z LOSOWĄ solą, żadnej soli w bazie, żadnej soli w kodzie.
« Ostatnia zmiana: Sierpień 01, 2014, 21:40:33 wysłana przez Karol »

Offline albireo

  • Użytkownik

# Sierpień 01, 2014, 21:46:16
Pamiętaj że atakujący nie ma wglądu do hashy pośrednich, i nie ma możliwości dobierania sobie ilości przebiegów funkcji hashującej.
Zakładam, że liczba przebiegów funkcji hashującej jest stała (przykładowy milion) i atakujący ją zna, (hashe pośrednie są nieistotne) i teraz przy kolejnych przebiegach dla (powiedzmy) dwóch różnych haseł mamy dwie sytuacje, albo mamy kolizję, wtedy w każdym następnym przebiegu kolizja będzie, albo nie mamy kolizji, wtedy w następnym przebiegu jest niezerowe (chyba, że funkcja hashująca jest bijekcją dla wejścia o długości równej długości wyjścia) prawdopodobieństwo pojawienia się kolizji, więc każdy kolejny przebieg zwiększa prawdopodobieństwo wystąpienia kolizji.