Pytanie:
Czy haszowanie / sprzedawanie haseł ma jakąś prawdziwą wartość?
Steve
2015-10-28 16:33:08 UTC
view on stackexchange narkive permalink

Dbam o system, który przechowuje wiele informacji „niskiej jakości”, nic finansowego oprócz imienia i nazwiska / adresu / adresu e-mail itp. Ktoś zasugerował, abyśmy zwiększyli zabezpieczenia z obecnego wewnętrznego algorytmu szyfrowania haseł, aby użyć skrótu zalecanego przez ICO / solenie. Trochę poczytałem i staram się zobaczyć korzyści, moja argumentacja powróciła do „ekspertów”, którzy to sugerują, ale nie (nie mogą) odpowiedzieć na moje dość proste pytanie.

O ile wiem, haszowanie / salting zapobiega odczytaniu i odszyfrowaniu hasła przez hakera i jest do tego doskonały, bez argumentów. Ale jeśli czegoś nie brakuje, aby odczytać wartość hasła, haker musi mieć dostęp do bazy danych, aby móc ukraść wartości haseł? ... jeśli mają dostęp do bazy danych, to w rzeczywistości nie potrzebują hasło (a), ponieważ mogą po prostu ukraść dane bezpośrednio z bazy danych, tj. dostęp do aplikacji, który uzyskują z haseł, nie dałby im nic poza bezpośrednim odczytem bazy danych? ...

Czego mi brakuje?

Komentarze nie służą do rozszerzonej dyskusji; ta rozmowa została [przeniesiona do czatu] (http://chat.stackexchange.com/rooms/30971/discussion-on-question-by-steve-is-there-any-real-value-in-hashing-salting- passw).
Pytanie jest chronione, więc komentowanie ... Pamiętaj, że dostęp do bazy danych różni się od posiadania poświadczeń. Odczyt bazy danych oznacza, że ​​możesz pobierać i wykorzystywać dane tak długo, jak masz do nich dostęp (jak w przypadku gotówki). Zapis DB oznacza, że ​​możesz manipulować, ale tylko do momentu naprawienia tego problemu. Następnie po fakcie, chyba że zablokujesz i zmusisz wszystkich użytkowników do odnowienia poświadczeń z weryfikacją tożsamości, intruzi mogą nadal używać starych poświadczeń i być może niezauważeni i sprawić, że inni zostaną obarczeni winą (jak karta kredytowa).
To musi być duplikatem innego pytania tutaj.
Dwanaście odpowiedzi:
Matthew
2015-10-28 16:40:44 UTC
view on stackexchange narkive permalink

Użytkownicy często używają tych samych haseł w wielu witrynach. Twoja witryna może nie zawierać żadnych danych finansowych, ale co zrobić, jeśli to samo hasło jest używane w ich banku lub w sklepie internetowym?

Możesz argumentować, że to nie jest twój problem, ale jest to częsty problem i dlatego zawsze, gdy dojdzie do naruszenia, jednym z natychmiastowych stwierdzeń jest „zmień swoje hasło i zmień je na wszystkich innych witrynach, w których używałeś tego samego hasła”.

Jeśli Twoja witryna coś wykorzystała podobnie jak Bcrypt (bez błędów w implementacji - patrz Ashley Madison), szanse na to, że osoba atakująca będzie w stanie dowiedzieć się, jakie hasła zostały użyte, są mniejsze i wydłużają czas, w którym użytkownicy mogą zmienić swoje hasła w innym miejscu. Jeśli po prostu przechowujesz hasło w swojej bazie danych bez haszowania, atakujący może odejść z adresami e-mail i hasłami i natychmiast rozpocząć atakowanie innej witryny.

Adres e-mail i pary haseł są często wymieniane między atakującymi, w postaci „list kombi”, co oznacza, że ​​nawet jeśli osoba atakująca jest zainteresowana tylko Twoją witryną, może uzyskać pewne korzyści, sprzedając dane komuś innemu.

Dodano w odpowiedzi na komentarz do pytania wspominającego o dwukierunkowej zaszyfrowanej pamięci masowej

Problem z podejściem do szyfrowania dwukierunkowego polega na tym, że informacje do odszyfrowania muszą być przechowywane gdzieś w systemie. Jeśli atakujący uzyska dostęp do Twojej bazy danych, istnieje duża szansa, że ​​będzie miał również dostęp do Twojego klucza szyfrowania. Hash nie może zostać odwrócony w ten sposób - narzędzia online do odwracania hashów skutecznie wyszukują hash na wstępnie obliczonej liście.

Nawet jeśli nie mają klucza szyfrowania, mogą być w stanie aby dowiedzieć się, jaki był klucz - mogą użyć znanego ataku w postaci zwykłego tekstu, wprowadzając hasło do systemu i sprawdzając wynik. Prawdopodobnie nie byłby to szybki proces, ale warto byłoby to zrobić, gdyby w Twoich danych były jakieś cele o wysokiej wartości (celebrytki, politycy ...).

Z drugiej strony, w przypadku silnego, solonego hasha, jedynym sposobem na znalezienie oryginalnego hasła z dużą pewnością jest zaszyfrowanie wszystkich możliwych danych wejściowych przy użyciu odpowiedniej soli. W przypadku czegoś takiego jak Bcrypt zajęłoby to lata, chociaż słabe hasła nadal można znaleźć stosunkowo szybko.

OK, to słuszna uwaga, strona jest napisana w klasycznym ASP, więc musiałbym znaleźć komponent, aby to zrobić, co nie powinno być zbyt trudne, ale potem muszę jakoś wymusić zmianę hasła dla wszystkich użytkowników ... Nie mogę tego zmienić, ponieważ nie mogę wysłać im hasła (czy można to zrobić w kodzie?), Tj. Wygenerować hasło i wysłać je e-mailem?, A następnie wymusić zmianę hasła przy logowaniu ... co jeszcze!
Będzie to możliwe i wydaje się najlepszym rozwiązaniem. Jedyną rzeczą, o której mogę pomyśleć, jest to, że przypomnienie hasła będzie musiało zostać usunięte, a zamiast tego użyj resetowania hasła ... czy są jakieś inne problemy, o których muszę pomyśleć?
@Steve Wiele rzeczy, które warto rozważyć, ale większość z nich omówiono w ściągawce do OWASP Authentication Cheatsheet https://www.owasp.org/index.php/Authentication_Cheat_Sheet - warto przeczytać
Ponadto - Twoi pracownicy prawdopodobnie mają dostęp do klucza deszyfrującego ... więc co ich powstrzymuje przed odszyfrowaniem całej bazy haseł i umieszczeniem jej w Internecie po odejściu z firmy? Jak wspomniano, ludzie ponownie używają swoich haseł, więc prawdopodobnie zostaną wyrządzone szkody
@Steve,, nie musisz wymuszać zmiany hasła na swoich użytkownikach, to jest decyzja polityczna. Ponieważ nie mogę stwierdzić wszystkich szczegółów na podstawie twojego pytania, widzę dwie opcje. 1, jeśli pwds są naprawdę zaszyfrowane, po prostu odszyfruj i hash / salt za pomocą nowego kryptograficznie bezpiecznego algorytmu. 2, jeśli pwds są jednokierunkowe hashowane aktualnym (słabszym) algorytmem, napisz nowy kod, który jest uruchamiany przy logowaniu i tworzy nowy hash / salt z hasłem podanym przez użytkownika (zakładając, że stary weryfikator wskazuje zgodność). Nikomu nie trzeba się tym przejmować. Po drodze, aby uzyskać 100% zgodność, powiadom pozostałych użytkowników, że muszą zresetować hasło.
@AndrewPhilips, który wprowadziłby problem pozbycia się starej "odszyfrowalnej" bazy danych, a wszelkie pozostawione kopie uczyniłyby całą zmianę bezużyteczną. Resetowanie hasła to sposób na przejście tutaj.
@gnp, nie ma problemu z utylizacją, po prostu usuń / null zawierający dane starego hasła podczas nagrywania nowego. Pierwszym komentarzem Steve'a było to, że będzie musiał wymusić zmianę pwd. Powinien wiedzieć, że nie wymuszanie zmiany jest technicznie wykonalne. W tym przypadku mają więc dwa pytania: (1) pytanie dotyczące zasad (wymusić zmianę pwd?) I (2) pytanie techniczne (czy wszyscy użytkownicy muszą zmienić pwds?). Chociaż, podobnie jak Ty, skłaniam się ku polityce zmian, czasami może to negatywnie wpłynąć na społeczność użytkowników. W takich przypadkach dobrze jest mieć wybór.
Mark Buffalo
2015-10-28 17:55:03 UTC
view on stackexchange narkive permalink

Dobre pytanie i cieszę się, że je zadałeś. Chcę, aby ludzie znaleźli ten wątek, gdy go wygooglują, aby - miejmy nadzieję - nie popełnili tych samych błędów, które popełnia wiele innych firm.

Nie należy po prostu używać hash hasła, należy je posolić i upewnić się, że algorytm haszujący używa jakiejś formy SlowEquals . Nie powinieneś na tym poprzestać: powinieneś używać bezpiecznego algorytmu haszującego, który jest bardzo odporny na collisions , takiego jak bcrypt lub scrypt.


Dlaczego Sól? Co to są kolizje?

Zamierzam użyć md5 jako przykładu, ponieważ jest on bardzo dobrze znany. Nie używaj go, ponieważ jest podatny na kolizje i jest bardzo szybki , co oznacza, że ​​znacznie łatwiej go złamać. Wyobraźmy sobie, że po prostu haszujesz swoje hasła bez soli. Skończyło się na tym, że generowałbyś statyczny sygnał wyjściowy prawie za każdym razem.

Na przykład „ myDarnPassword ” zostałby przekonwertowany na „ aca6716b8b6e7f0afa47e283053e08d9 ” po zaszyfrowaniu jako md5. W tym momencie możesz stworzyć atak słownikowy i użyć tęczowych tabel. Można nawet wygenerować bazę danych, która konwertuje dowolną liczbę losowych znaków na łatwą do przeszukiwania bazę danych, która nie będzie wymagała czasochłonnego wyszukiwania w tęczowych tabelach. Możesz to powoli tworzyć w miarę upływu czasu i wyszukiwać skróty później.

Utworzyłbyś taką tabelę, która wygląda następująco:

  + --------- ---------- + ---------------------------------- + | HASŁO | UNSALTED_HASH | + ------------------- + --------------------------- ------- + | myDarnPassword | aca6716b8b6e7f0afa47e283053e08d9 | + ------------------- + --------------------------- ------- + | pleaseDontSueMe11 | 0dd395d0ec612905bed27020fb29f8d3 | + ------------------- + --------------------------- ------- +  

Następnie wybierasz z bazy danych mniej więcej tak:

  SELECT [hasło] FROM [table] WHERE [ unsalted_hash] = 'aca6716b8b6e7f0afa47e283053e08d9'  

I zwróciłoby myDarnPassword , plus wszelkie kolizje, które wystąpiły.

Mając wystarczającą moc obliczeniową i czas, można stworzyć biliony kombinacji i całkiem łatwo złamać dużą liczbę haseł w bardzo krótkim czasie (polecam podzielenie baz danych na długości haseł ze względu na samą ich liczbę ). Potrzebowałbyś jednak do tego ogromnej ilości miejsca na dysku twardym.

W tym momencie wszystko, co naprawdę musisz zrobić, to sprawdzić to bez marnowania mocy obliczeniowej na brutalne forsowanie wszystkiego za każdym razem. A jeśli w przeszłości ukradłeś hasła innych osób z bazy danych, możesz je dodać i przekonwertować na skróty. Wiele witryn internetowych już to zrobiło.

Kiedy witryna sprawdza poprawność hasła, porównuje je z zapisanym hashem, a jeśli pasuje do skrótu w bazie danych, jest uważane za prawidłowe hasło. Możesz wtedy pozwolić użytkownikowi na zalogowanie się.

Salting hasha może pomóc w pokonaniu tego ataku, ale nie uchroni Cię przed kolizjami. Możesz porównać zhakowane skróty ze swoją listą skrótów, które wygenerowały kolizje, a następnie wprowadzić to hasło w witrynie internetowej, nawet jeśli masz nieprawidłowe hasło: tak długo, jak hash jest poprawny, otrzymujesz hasło .


Kogo obchodzi, jeśli ktoś złamie moje hasła? Nie obchodzi mnie to!

Poniżej znajduje się tylko niewielki zbiór przykładów tego, co phisherzy i inne złośliwe osoby mogą zrobić z Twoimi niezaszyfrowanymi i niesolonymi hasłami w postaci zwykłego tekstu. Niekoniecznie musi być używane do bezpośredniego kierowania na Ciebie, ale powiedzmy, że Haker chce skierować reklamy do Osoby A . Wywnioskujmy, w jaki sposób możesz dotrzeć do Osoby A .

  1. Jesteś Hackerem . Twoim zadaniem jest hakowanie witryn internetowych i tworzenie bazy danych w celu zebrania tych informacji.
  2. Osoba A to osoba, która Cię interesuje. Osoba A pojawia się w bazie danych jednej z zaatakowanych witryn. Znasz teraz ich adres e-mail i hasło , którego używają w tej witrynie.
  3. Teraz możesz spróbować zalogować się na ich adres e-mail za pomocą hasła , które ukradłeś z tej witryny. Świetnie, to działa!
  4. Teraz, gdy masz już dostęp do ich poczty e-mail, możesz pobrać wszystkie ich e-maile przez IMAP lub przez ich pocztę internetową. W tym miejscu znajdziesz wiele interesujących rzeczy. Komunikują się z osobą B .
  5. W rzeczywistości możesz wygooglować nazwy użytkowników i adresy e-mail niektórych osób, a także wyświetlić witryny internetowe, w których piszą. Spowoduje to wyświetlenie innych witryn internetowych, z których korzysta użytkownik. Może możesz spróbować zhakować te witryny, a może po prostu wywnioskować, do czego one służą. Teraz możesz udawać, że jesteś taki jak oni lub znaleźć dodatkowe informacje. Informacje / działania mogą obejmować:
    • Nazwy użytkowników . Osoba A publikuje posty online jako Mark Buffalo . To stosunkowo unikalna nazwa. Następnie możesz wygooglować Marka Buffalo i poszukać witryn, na których publikuje. Może ujawnia więcej swojej osobowości na innych stronach?
    • Hasła . Może Mark Buffalo ma to samo hasło na tej stronie. Może możesz zalogować się do tej witryny i przeglądać jego prywatną korespondencję z innymi?
    • Dane osobowe . Ponieważ znasz tożsamość Mark Buffalo , co będzie, jeśli udostępni on dane osobowe w witrynie certains? Co jeśli opublikuje na Craigslist, szukając eskort męskich lub żeńskich, i zostawił tam swój numer telefonu? Znalazłeś już informacje o jego telefonie, więc możesz znaleźć sposób na skonfigurowanie go i szantażowanie go o pieniądze / informacje / władzę. Nie ma to wiele wspólnego z podalaniem haseł, chyba że nie podasz numeru telefonu, ale dzięki wyciekowi znajdują swój numer telefonu na innej stronie internetowej. To jeden z wielu bardzo potężnych sposobów gromadzenia informacji i wykorzystywania ich przeciwko tobie. W końcu jest to forum Information Security , więc chcę skorzystać z tego przykładu.
    • Informacje rodzinne . Teraz robi się strasznie. Mamy dane osobowe Marka Buffalo. Przyjrzyjmy się jego sieciom społecznościowym. Och, ma konto Facebook (ja nie). Czy możemy uzyskać do tego dostęp za pomocą tego samego hasła? Jeśli Buffalo używa tej samej kombinacji hasła i adresu e-mail, prawdopodobnie. Prawdopodobnie możesz wywnioskować to z jego e-maila, do którego uzyskałeś dostęp wcześniej, w którym znalazłeś wiele interesujących rzeczy. Możemy się teraz zalogować i czytać jego wiadomości na Facebooku. Teraz wiemy, kim są członkowie jego rodziny. Dzięki temu możemy łatwiej koordynować atak szantażowy.
    • Inne dane logowania . Ponieważ wcześniej uzyskaliśmy dostęp do jego poczty elektronicznej, widzimy, że ma on również konto Skype. Jeden z nich jest tajny. Logujemy się i widzimy, że flirtuje z ludźmi na Skype. Mamy teraz więcej materiałów do szantażu.
    • Podszywanie się pod inne osoby . Możesz teraz logować się i podszywać się pod Buffalo na różnych stronach internetowych. Może w rzeczywistości jest prostym strzelcem i nigdy nie ścigał żadnej eskorty ani niczego w tym rodzaju? Cóż, teraz możesz zmienić go w potępionego, szukającego eskorty, przynajmniej z wyglądu, używając jego danych uwierzytelniających do podszywania się pod niego online. Wyobraź sobie szkody, jakie może wyrządzić politykowi, który został niesłusznie oskarżony i zmuszony do rezygnacji.
    • Rzeczy, które ułatwiają włamywanie się do innych osób . Następnie możesz wysyłać e-maile do Osoby B z zainfekowanymi załącznikami i udawać, że go znasz. Przeczytałeś wystarczająco dużo e-maili, więc jesteś w stanie naśladować Marka Buffalo do tego stopnia, że ​​wyglądasz jak on. Tworzysz wiadomość e-mail w taki sposób, że Osoba B niczego nie podejrzewa, co się naprawdę dzieje, a teraz możesz zrobić to samo z Osobą B lub gorzej.

A to tylko niewielki zbiór pomysłów. Poświadczenia kogoś innego można wykorzystać na wiele różnych sposobów. Sól i haszuj swoje hasła, używaj odpornych na kolizje algorytmów mieszających, takich jak bcrypt i scrypt, oraz zapobiegaj atakom polegającym na wstrzykiwaniu SQL. Proszę, nie zamieniaj mnie w potępieńcę szukającego eskorty! Uratuj Marka Buffalo!

(Zdaję sobie sprawę, że niektóre witryny internetowe mogą blokować próbę dostępu do ich usług przy użyciu innego adresu IP, ale istnieje wiele sposobów obejścia tego problemu i nie wszystkie to robią) .

Swoją drogą, gratuluję potencjalnego pozwu zbiorowego, jeśli zostaniesz zhakowany.

Dzięki za historię, rozumiem. Chociaż sposób, w jaki następnie wnoszą przeciwko mnie pozew zbiorowy, jest trochę wątpliwy, jeśli użytkownik używa wszędzie tego samego hasła, może to być skierowane przeciwko każdemu
@Steve Cóż, byliby w stanie wykazać, że nie robiłeś wszystkiego, co było możliwe, aby chronić dane dotyczące hasła - dane dotyczące włamania są zwykle powiązane ze źródłem. Jeśli doszło do wielu naruszeń, ale Twój system był jedynym z hasłami w postaci zwykłego tekstu, nie będzie dobrze wyglądał. Zasady różnią się w zależności od kraju, ale generalnie wymagają wykazania, że ​​podjęto standardowe w branży środki ostrożności, nawet jeśli wydają się one przesadą w przypadku określonej aplikacji.
Istnieją ścieżki danych. Małe okruchy, które możesz zostawić wszędzie. Jeśli „haker” kiedykolwiek zostanie złapany, są szanse, że może on wskazać źródło jego złośliwego zachowania i doprowadzi do Ciebie, niezależnie od tego, czy inne systemy mają odblokowane i niesolone hasła.
@Downvoter, czy możesz się z nami podzielić słowami? Czy jesteś zdenerwowany, że ujawniłem typowe wzorce używane przez złośliwe osoby, których obecnie sam używasz? Czy się mylę? Czy obraziłem cię swoim wypaczonym poczuciem humoru? Proszę Podziel się. :)
Może po prostu zresetować wszystkie Twoje hasła, jeśli uzyska dostęp do Twojej poczty e-mail. Po prostu przejdź do PayPal i stron bankowych, prosząc o zresetowanie hasła. Dlatego musisz być naprawdę proaktywny z kontami e-mail, są one krytyczne, powinieneś używać bardzo dobrego hasła do swojego e-maila + uwierzytelnianie dwukierunkowe
@Freedo, zgodził się.
Po prostu wstawię to tutaj: https://xkcd.com/792/
+1 esp. za ostatnie zdanie. W wielu krajach obowiązują przepisy dotyczące prywatności, które dotyczą wszystkich usług oferujących konta użytkowników. Nawet jeśli uważasz, że Twoja baza danych nie zawiera żadnych poufnych informacji, sam akt stosowania standardowych w branży praktyk haszowania / soli może zmniejszyć potencjalną odpowiedzialność w przypadku włamania - pokazuje, że podejmujesz rozsądne kroki, aby nie być najsłabszym łącze w wieloczęściowej operacji hakerskiej.
@Steve `Chociaż sposób, w jaki następnie wytoczą przeciwko mnie pozew zbiorowy, jest trochę niepewny` - Nazywa się to„ zaniedbaniem ”. W kontekście prawnym oznacza to „zaniedbanie zachowania należytej ostrożności, skutkujące szkodą lub obrażeniami ciała u innej osoby”. To jest podstawa do pozwu. Wystarczy zapytać Sony, Ashley Madison, Home Depot, Target ...
@Freedo, Chciałbym dodać: niektórzy ludzie od czasu do czasu wysyłają sobie e-maile z innych kont e-mail, więc możesz nie być w stanie zresetować tych haseł, jeśli nie używają tego samego konta e-mail. Może to wymagać lekkiej pracy detektywa. Chciałem tylko pokazać, jak źle to może się stać, na tylu przykładach, o których mogłem w tej chwili myśleć.
Myślę, że w swojej odpowiedzi mogłeś użyć terminu [tęczowy stół] (https://en.wikipedia.org/wiki/Rainbow_table). Nie sądzę jednak, aby do tego zadania była używana tradycyjna baza danych SQL. ;)
Oczywiście. Tradycyjna baza danych SQL byłaby używana, gdybyś chciał przechowywać wszystkie wyniki online, aby inni mogli je sprawdzić. :) Widziałeś te strony?
Zapomniałem, jak ograniczeni potrafią być niektórzy ochroniarze. Niektóre witryny istnieją od lat i tylko dlatego, że nie są wspierane, nie oznacza, że ​​właściciel będzie przedmiotem procesu sądowego (z sformułowania, jak sądzę, mamy wielu ludzi z USA na tej tablicy, a ja przypuszczam, że kultura pozywania jest tam bardziej rozpowszechniona). Jeśli przeczytasz niektóre z rzeczy, o których tutaj napisano, nikt nie powinien mieć możliwości umieszczenia strony internetowej, chyba że ma wystarczające zasoby, aby poświęcić na ściganie każdego potencjalnego problemu bezpieczeństwa ... biznes polega na równoważeniu ryzyka, gdy nie można go usunąć całkowicie
Naprawdę strzelasz sobie w stopę, jeśli zdecydujesz się nie chronić informacji o ludziach. = /
@Steve Czego się spodziewałeś? Przyszedłeś tutaj, pytając, czy wszystkie standardy branżowe, zalecenia i najlepsze praktyki są naprawdę tylko BS i czy możesz je po prostu zignorować. Jak myślisz, dlaczego ludzie zareagowali tak, jak to zrobili? Ze swojego komentarza po prostu odrzucasz to wszystko jako paranoję. Poważnie chłopie, zrób pracę dobrze albo w ogóle jej nie rób. Nie bądź facetem, który daje branży złą sławę, ponieważ jesteś zbyt leniwy lub zbyt niekompetentny, aby poprawnie wykonywać swoją pracę.
Naprawdę nie rozumiem, gdzie to wymknęło się spod kontroli, dopóki nie postawiłeś tych zarzutów. Pomyślałem, że to dobre pytanie, na które naprawdę trzeba było odpowiedzieć. Może nas źle zrozumiałeś?
@MarkHulkalo Myślę, że ludzie mają dość tego samego pytania w różnych formach, zadawanego przez kogoś, kto uważa, że ​​jest tak sprytny, że może zrobić to po swojemu i rażąco zignorować wszystkie najlepsze praktyki branżowe.
Żeby było jasne. Rozumiem i zgadzam się ze wszystkim, co zostało powiedziane, i pracuję nad uporządkowaniem witryn, które mają budżet, aby to poprawić. Chodzi mi o to, że niektóre witryny nie mają żadnego budżetu i / lub są stare, a dane nie są naprawdę cenne. W takim razie pytanie brzmi: usuń witrynę i zatrzymaj działalność LUB zaakceptuj częściowe rozwiązanie ... a to nie moja sprawa. Jedyne, na co zwróciłem uwagę, to fakt, że to prawdziwa decyzja, a samo krzyczenie na mnie kretyna nie jest uznaniem rzeczywistości. Widzę komentarze, że to godzina pracy ... uwierz mi, że nie, gdy pracujesz z Classic ASP!
Selenog
2015-10-28 17:32:33 UTC
view on stackexchange narkive permalink

Powszechnym typem naruszenia jest dostęp tylko do odczytu do tabeli użytkowników. Dzieje się tak, ponieważ ta tabela jest używana w kodzie, który dokonuje logowania, dla którego nie musisz być już uwierzytelniony. Uzyskanie haseł pozwoliłoby wówczas na dostęp do odczytu wszystkich danych, ale nawet jeśli atakujący ma już pełny dostęp do odczytu w bazie danych, nadal może uzyskać dostęp do zapisu za pomocą haseł, będąc w stanie zalogować się na konto i łatwo zmienić niektóre dane.

Nawet nie zawsze jest to wyłom - w oldschoolowych systemach * nix (te nie zaimplementowane „shadow passwords”) taki dostęp ma każdy zalogowany (nieuprzywilejowany) użytkownik.
user90546
2015-10-29 15:33:51 UTC
view on stackexchange narkive permalink

Jednym z bardzo prostych powodów zaszyfrowania i zaszyfrowania haseł użytkowników jest to:

Hasło użytkownika jest jego / jej tajnym

Nikt inny nie powinien o tym wiedzieć. Nie ty, nie twój kolega, nie DBA. Nikt . To takie proste ...

Twoim zdaniem ... operacyjnie w pewnych okolicznościach musisz „zostać klientem”, ale ponieważ jest to witryna bezpieczeństwa, spodziewam się, że logika działania nie jest wysoko oceniana!
Jeśli masz dostęp administracyjny do (odpowiednio zaprojektowanego) systemu, możesz „zostać klientem” bez znajomości jego hasła. Nigdy nie musiałem prosić kogoś o hasło, aby móc sprawdzić, co może zrobić ich konto; Po prostu używam „sudo” (lub jego odpowiednika).
@Steve Wiesz, że wszystkie te duże serwisy zawsze mówią Ci, abyś nigdy nikomu nie podawał swojego hasła, nawet jeśli brzmią, jakby pochodziły z pomocy $ SERVICE?
@Steve: po prostu dodaj do swojej witryny pewne funkcje, które pokazują witrynę tak, jak zobaczyłby ją użytkownik $ USER, dostępne tylko dla administratorów. Nie ma potrzeby używania rzeczywistego logowania.
Thor Erik
2015-10-28 16:40:29 UTC
view on stackexchange narkive permalink

Częścią saltingu jest utrudnianie analizy i kradzieży hasła oraz używanie ich kombinacji nazwy użytkownika / adresu e-mail i hasła w innych witrynach.

Dość często użytkownicy ponownie wykorzystują 1 lub 2 wiele witryn. Zmiana algorytmu na taki, który działa soli i zajmuje trochę więcej czasu (np. Bcrypt, scrypt itp.) Jest wysoce zalecana i dość prosta do wdrożenia w większości języków.

SEM
2015-10-29 15:44:59 UTC
view on stackexchange narkive permalink

Sól ma dwojakie zadanie: po pierwsze, wprowadza unikalny (-ish) element do każdego hasła, więc jeśli zdarzy się, że dwóch użytkowników użyje tego samego hasła, zaszyfrowany tekst hasła będzie się różnić. Jeśli Użytkownik A widzi, że skrót jego hasła to „QWERTYU123”, a skrót hasła tego Użytkownika B to także „QUERTYU123”, wówczas Użytkownik A może wywnioskować, że ma to samo hasło co Użytkownik B.

Po drugie, wprowadza znaczny wzrost szybkości dla każdego, kto ma dostęp do bazy danych, który chce brutalnie wymusić hasła za pomocą ataku słownikowego. Bez soli osoba atakująca może po prostu zaszyfrować „TRUSTNO1”, aby uzyskać skrót „QUERTYU123”, a następnie przeskanować kolumnę z hasłem, aby sprawdzić, czy ten tekst się pojawia. Korzystając z soli, atakujący musi ponownie zhasować „TRUSTNO1” dla każdego wiersza w bazie danych, aby sprawdzić dopasowanie, co znacznie zwiększa ilość procesora wymaganą do sprawdzenia każdego wpisu w słowniku.

Nick Gammon
2015-10-31 10:00:44 UTC
view on stackexchange narkive permalink

jeśli mają dostęp do bazy danych, w rzeczywistości nie potrzebują hasła (a), ponieważ mogą po prostu ukraść dane bezpośrednio z bazy danych

Hasło jest cenną rzeczą. Dzieje się tak, ponieważ wiele, wiele osób ponownie używa tego samego hasła. Więc hasło do twojego klubu gołębiarskiego może być tym samym, którego używają do swojej bankowości internetowej.

Dbam o system, który zawiera dużo informacji „niskiej jakości”, tylko finansowe, ale nazwa / adres / e-mail itp.

Te też są cenne. Straciłem rachubę liczby wiadomości e-mail, które ostatnio otrzymałem od „eBay” lub „Apple”, twierdząc, że moje konto zostało ograniczone, chyba że „zweryfikuję” moje dane. Zwykle są oczywiście fałszywe, ponieważ nie wymieniają mojego prawdziwego imienia. Ale jeśli przechowujesz imię i nazwisko oraz adres e-mail, znacznie łatwiej jest stworzyć realistycznie wyglądającą wiadomość e-mail z prośbą o więcej danych osobowych. Na przykład:

Szanowny Panie Smith z 42 Station Street, Gotham City.

Właśnie zdaliśmy sobie sprawę, że nasz klub obciążył Cię zbyt dużą opłatą w tym roku finansowym i chcielibyśmy zwrócić Ci 10 USD. W odpowiedzi podaj swoje dane bankowe, abyśmy mogli wpłacić pieniądze na Twoje konto.

Dlatego nie odrzucaj e-maili i nazwisk.


Na dole Linia jest jednak taka, że ​​haszowanie i solowanie istniejącej bazy danych powinno zająć około godziny kodowania i testowania. Następnie możesz wykonać „konwersję wsadową” haseł w postaci zwykłego tekstu na hasła zaszyfrowane i zasolone.

RVD
2015-10-28 19:59:45 UTC
view on stackexchange narkive permalink

Szyfrowanie informacji o użytkowniku, takich jak imię i nazwisko, adres e-mail itp., i przechowywanie ich w bazie danych zamiast przechowywania ich w surowym formacie zapewnia dodatkowy poziom bezpieczeństwa aplikacji. Po drugie, osoby mające dostęp do Twojej bazy danych również nie mogą łatwo odczytać danych. Wszelkie informacje, które przechowujesz, pochodzące od dowolnego klienta, są objęte tajemnicą. Ponieważ są to ich dane, a programista jest odpowiedzialny za przechowywanie ich w sposób, który utrudnia hakerowi nadanie znaczenia, czy są to informacje niskiej jakości, czy informacje ściśle tajne. Ponadto deszyfrowanie i szyfrowanie danych powinno odbywać się po stronie serwera, ponieważ zazwyczaj serwery są przechowywane za zaporą ogniową. Więc staje się bezpieczniejszy z punktu widzenia bezpieczeństwa.

codykochmann
2015-10-29 01:50:03 UTC
view on stackexchange narkive permalink

Rozumiem, co masz na myśli, gdyby osoba atakująca mogła również uzyskać dostęp do bazy danych. Rzecz w tym, że dobrze zaprojektowany system bezpieczeństwa pozwoli tylko na przechowywanie w bazie danych informacji, które zarówno użytkownik, jak i serwer zaszyfrowali indywidualnie.

Ogólnie hasło jest pierwszym pasmem ukrytych wartości, które możesz podać użytkownikom, a które mogą zostać zaszyfrowane w celu odszyfrowania ich danych w celu zapewnienia drugiej warstwy bezpieczeństwa, jeśli klucze szyfrowania bazy danych są kiedykolwiek zagrożone. W ten sposób nawet w przypadku naruszenia dane użytkownika są nadal bezpieczne.

anomaly
2015-10-29 23:59:19 UTC
view on stackexchange narkive permalink

W tym kontekście punkt haszowania opiera się na idei funkcji jednokierunkowej lub zapadkowej: funkcji, którą łatwo obliczyć, ale trudno ją odwrócić. Gdy użytkownik generuje hasło, system oblicza jego skrót i przechowuje tę wartość w bazie danych. Gdy użytkownik podaje hasło, aby uzyskać dostęp do systemu, oblicza swój hash i porównuje go z wartością w bazie danych. Jeśli są takie same, świetnie; jeśli nie, to hasło było błędne i należy uniemożliwić użytkownikowi dostęp do systemu. Aby to zadziałało, hash potrzebuje dwóch właściwości: (1) Różne oryginalne wartości mają różne wartości; (2) Przejście od wartości mieszania do wartości początkowej jest trudne pod względem obliczeniowym.

Po co więc w ogóle zawracać sobie głowę hashami? Jeśli ktoś włamie się do Twojej bazy danych (nie tylko przez włamanie do komputera, ale także przez ataki socjotechniczne, pozostawienie wydruku w autobusie, działania niezadowolonego pracownika itp.), Wszystko, co otrzyma, to seria wartości skrótu. Trudno jest odzyskać oryginalną wartość z wartości skrótu, więc nie jest to zbyt przydatne dla hakera. Jeśli hasła w postaci zwykłego tekstu są przechowywane w bazie danych, haker wygrywa, jeśli baza danych zostanie naruszona; ma bezpośredni dostęp do wszystkich kont i haseł i może w zasadzie robić, co chce. Taka konfiguracja oznacza również, że Ty nie masz dostępu do haseł innych osób. To coś dobrego; nawet jeśli ufasz sobie, prawdopodobnie nie ufasz - i nie powinieneś ufać - swojemu odpowiednikowi w banku, swojemu poprzednikowi lub następcy w pracy itp. Nie powinieneś polegać na hojności lub kaprys administratora w celu zapewnienia bezpieczeństwa informacji.

Jeśli chodzi o sole, wspomniałem powyżej, że hashe muszą mieć dwie nietrywialne właściwości, aby były skuteczne. (Na razie pomijam kilka dodatkowych). Funkcje posiadające te właściwości są nietrywialne do znalezienia i byłoby nierozsądne polegać na konkretnym administratorze witryny, aby wymyślił przyzwoity. Zamiast tego istnieją powszechnie dostępne skróty, których używa większość ludzi. Chodzi o to, aby zapewnić, że różne witryny skutecznie używają różnych skrótów: zamiast po prostu haszować „hasło”, zamiast tego używamy „sól” + „hasło” dla różnych wartości „sól”. Oznacza to, że jeśli ktoś używa tego samego hasła w dwóch witrynach, w rzeczywistości ma różne skróty w tych dwóch systemach, więc haker nie może użyć jednego do złamania drugiego. Poza tym bez soli hakerzy mogliby po prostu brutalnie wymusić wszystkie skróty haseł o rozsądnej długości. Wspomniałem powyżej, że hashe muszą być trudne do odwrócenia. Jeśli masz tabelę wszystkich możliwych skrótów haseł do, powiedzmy, 10 liter (lub nawet tylko najczęściej używanych haseł), odwrócenie skrótu jest trywialne; po prostu sprawdź to w tabeli.

Karl Bielefeldt
2015-10-30 23:13:35 UTC
view on stackexchange narkive permalink

Oprócz innych odpowiedzi należy pamiętać, że istnieje wiele stopni luk między całkowicie bezpiecznym a pełnym dostępem do bazy danych. Luka w zabezpieczeniach może ujawnić tylko niektóre hasła lub tylko kilka ich pierwszych znaków lub być trudna do skojarzenia z określonym użytkownikiem itp. Haszowanie i solenie może sprawić, że drobne naruszenie nie zamieni się w poważne.

Ponadto intruzi lubią ograniczać własne narażenie. Im dłużej wykorzystują lukę lub tylne drzwi, aby dostać się do systemu, tym większe jest prawdopodobieństwo, że zostaną wykryte i zablokowane, zanim osiągną swój cel. Jeśli zostawisz swoje hasła niezaszyfrowane i niesolone, po prostu dałeś im bardzo łatwy sposób na powrót do systemu podszywającego się pod dowolnego użytkownika, który jest niezwykle trudny do wykrycia i złagodzenia.

jmoreno
2015-10-30 11:19:26 UTC
view on stackexchange narkive permalink

Myślę, że najlepiej ująć to w następujący sposób: jest rok 2015, najbardziej prywatne i osobiste informacje, które Twoi użytkownicy powierzają, to ich hasło i identyfikator użytkownika. Chroń je, nie swoim życiem, ale swoją ignorancją, nie swoją zdolnością, ale swoją niezdolnością.

Jeśli nie znasz hasła i nie masz możliwości odzyskania hasła, nikt nie może go ukraść od ciebie lub zmusić cię do ujawnienia tego.

Każdy kompetentny złodziej cyfrowy, mając wybór między thosuand nazwiskami i adresami a tysiącem adresów e-mail / nazw użytkowników i haseł, za każdym razem zajmie później. >

Rozumiem koszty i czas, ale jeśli zostanie to zrobione poprawnie, od samego początku nie zajmie to więcej czasu, a przejście na bezpieczniejszą metodę to nie to czasochłonne.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...