Ktoś powiedział mi, że widział systemy oprogramowania, które:
- odzyskać zaszyfrowane hasła MD5 z innych systemów;
- odszyfrować zaszyfrowane hasła i
- przechowuj hasła w bazie danych systemu, korzystając z własnego algorytmu systemu.
Czy to jest możliwe? Myślałem, że odszyfrowanie skrótów MD5 nie jest możliwe / wykonalne.
Wiem, że istnieją słowniki MD5, ale czy istnieje algorytm deszyfrowania?
hash
cryptography
md5
encryption
John Bubriski
źródło
źródło
Odpowiedzi:
Nie. MD5 nie jest szyfrowaniem (chociaż może być używane jako część niektórych algorytmów szyfrowania), jest to funkcja skrótu jednokierunkowa . Wiele oryginalnych danych jest faktycznie „utraconych” w ramach transformacji.
Pomyśl o tym: MD5 ma zawsze 128 bitów. Oznacza to, że istnieje 2 128 możliwych skrótów MD5. Jest to dość duża liczba, a jednak zdecydowanie zdecydowanie skończona. A jednak istnieje nieskończona liczba możliwych danych wejściowych dla danej funkcji skrótu (a większość z nich zawiera więcej niż 128 bitów lub 16 bajtów). Tak więc w rzeczywistości istnieje nieskończona liczba możliwości dla danych, które uzyskałyby skrót do tej samej wartości. Interesującą rzeczą, która sprawia, że skróty są interesujące jest to, że niezwykle trudno jest znaleźć dwa fragmenty danych, które mają taką samą wartość, a szanse na przypadkowe zdarzenie są prawie zerowe.
Prostym przykładem (bardzo niepewnej) funkcji skrótu (i to ilustruje ogólną ideę jednokierunkowego działania) byłoby wzięcie wszystkich bitów kawałka danych i potraktowanie go jako dużej liczby. Następnie wykonaj dzielenie liczb całkowitych za pomocą dużej (prawdopodobnie pierwszej) liczby n i weź resztę (patrz: moduł ). Pozostanie Ci pewna liczba od 0 do n . Jeśli ponownie wykonasz to samo obliczenie (w dowolnym czasie, na dowolnym komputerze, w dowolnym miejscu), używając dokładnie tego samego ciągu, uzyska on tę samą wartość. A jednak nie ma sposobu, aby dowiedzieć się, jaka była pierwotna wartość, ponieważ istnieje nieskończona liczba liczb, które mają dokładnie tę resztę, po podzieleniu przez n .
To powiedziawszy, stwierdzono, że MD5 ma pewne słabości, takie jak przy złożonej matematyce, możliwe jest znalezienie kolizji bez wypróbowania 2 128 możliwych ciągów wejściowych. A fakt, że większość haseł jest krótka, a ludzie często używają wspólnych wartości (takich jak „hasło” lub „tajne”) oznacza, że w niektórych przypadkach można dość dobrze zgadnąć czyjeś hasło przez Googlinga dla skrótu lub używając Rainbow stół . To jest jeden z powodów, dlaczego należy zawsze „ sól ” zakodowane hasła, tak, że dwa identyczne wartości, gdy mieszany, nie będzie mieszania do tej samej wartości.
Po przejściu fragmentu danych za pomocą funkcji skrótu nie ma możliwości powrotu.
źródło
Nie możesz - teoretycznie. Chodzi o to, że to tylko jeden sposób. Oznacza to, że jeśli komuś uda się uzyskać listę skrótów, nadal nie może uzyskać hasła. Dodatkowo oznacza to, że nawet jeśli ktoś używa tego samego hasła w wielu witrynach (tak, wszyscy wiemy, że nie powinniśmy, ale ...) każdy, kto ma dostęp do bazy danych witryny A, nie będzie mógł użyć hasła użytkownika na strona B.
Fakt, że MD5 jest skrótem, oznacza również, że traci informacje. W przypadku dowolnego skrótu MD5, jeśli zezwolisz na hasła o dowolnej długości, może istnieć wiele haseł, które wytwarzają ten sam skrót. Dla dobrego skrótu znalezienie obliczeń przekraczających dość trywialną maksymalną długość byłoby niewykonalne obliczeniowo, ale oznacza to, że nie ma gwarancji, że jeśli znajdziesz hasło, które ma skrót docelowy, to z pewnością jest to oryginalne hasło. Z astronomicznego punktu widzenia mało prawdopodobne jest wyświetlenie dwóch haseł o rozsądnej długości tylko ASCII, które mają ten sam skrót MD5, ale nie jest to niemożliwe.
MD5 to zły skrót do używania haseł:
Nie jestem ekspertem od bezpieczeństwa, więc nie przedstawię konkretnych zaleceń poza „Nie wprowadzaj własnego systemu uwierzytelniania”. Znajdź jednego od renomowanego dostawcy i skorzystaj z niego. Zarówno projektowanie, jak i wdrażanie systemów bezpieczeństwa to trudna sprawa.
źródło
Technicznie jest to „możliwe” , ale pod bardzo surowymi warunkami ( tęczowe tabele , brutalne wymuszanie na podstawie bardzo małej możliwości, że hasło użytkownika znajduje się w tej bazie danych mieszania).
Ale to nie znaczy, że tak
lub
Nie chcesz „cofać” skrótu MD5 . Korzystając z metod opisanych poniżej, nigdy nie będziesz musiał. „Odwracanie” MD5 jest faktycznie uważane za szkodliwe - kilka stron internetowych oferuje możliwość „łamania” i brutalnego szyfrowania MD5 - ale wszystko to są ogromne bazy danych zawierające słowa słownikowe, wcześniej przesłane hasła i inne słowa. Jest bardzo mała szansa , że będzie miał skrót MD5, którego potrzebujesz odwrócić. A jeśli już solone hash MD5 - to nie będzie działać albo! :)
Sposób logowania za pomocą skrótu MD5 powinien być następujący:
Podczas rejestracji:
Użytkownik tworzy hasło -> Hasło jest szyfrowane przy użyciu MD5 -> Hash przechowywany w bazie danych
Podczas logowania:
Użytkownik wprowadza nazwę użytkownika i hasło -> (sprawdzono nazwę użytkownika) Hasło jest haszowane przy użyciu MD5 -> Hash jest porównywany z hashem przechowywanym w bazie danych
Gdy potrzebne jest „Utracone hasło”:
2 opcje:
lub
źródło
Nie bezpośrednio. Ze względu na zasadę szufladki istnieje (prawdopodobnie) więcej niż jedna wartość mieszająca się z dowolnym danym wyjściem MD5. Dlatego nie można tego z całą pewnością odwrócić. Ponadto MD5 niezbędne, aby zapewnić, że trudno jest znaleźć jakąkolwiek taką odwróconą hash (jednak nie było ataków, które wytwarzają kolizji - to znaczy, że wytwarzają dwie wartości hash do tego samego rezultatu, ale nie można kontrolować, co otrzymaną wartość MD5 będzie być).
Jeśli jednak ograniczysz przestrzeń wyszukiwania do, na przykład, wspólnych haseł o długości mniejszej niż N, możesz nie mieć już właściwości nieodwracalności (ponieważ liczba wyjść MD5 jest znacznie większa niż liczba ciągów w danej dziedzinie). Następnie możesz użyć tabeli tęczy lub podobnego do odwróconego skrótu.
źródło
password
bardziej niż wszystkie inne nieskończone dane wejściowe, które wytwarzają ten sam skrót, ale wszystkie wyglądają dość losowo, ale możesz być wystarczająco blisko.Niemożliwe, a przynajmniej nie w rozsądnym czasie.
Często jest to obsługiwane przez „reset” hasła. Oznacza to, że dajesz im nowe (losowe) hasło i wysyłasz je w wiadomości e-mail.
źródło
Nie możesz przywrócić hasła md5. (W dowolnym języku)
Ale ty możesz:
daj użytkownikowi nowy.
sprawdź jakiś tęczowy stół, by odzyskać stary.
źródło
Nie, musiał się mylić ze słownikami MD5.
Skrypty kryptograficzne (MD5 itp.) Są jednym ze sposobów i nie można wrócić do oryginalnej wiadomości z jedynie streszczeniem, chyba że masz inne informacje na temat oryginalnej wiadomości itp., Których nie powinieneś.
źródło
Deszyfrowanie (bezpośrednie uzyskiwanie zwykłego tekstu z wartości mieszanej w sposób algorytmiczny), nie.
Istnieją jednak metody wykorzystujące tak zwany stół tęczowy . Jest to całkiem wykonalne, jeśli twoje hasła są mieszane bez soli.
źródło
MD5 jest algorytmem mieszającym, nie można przywrócić wartości skrótu.
Należy dodać „funkcję zmiany hasła”, w której użytkownik podaje inne hasło, oblicza skrót i zapisuje go jako nowe hasło.
źródło
Nie ma na to łatwego sposobu. Jest to przede wszystkim punkt zaszyfrowania hasła. :)
Jedną z rzeczy, które powinieneś być w stanie zrobić, to ustawić dla nich tymczasowe hasło ręcznie i wysłać je.
Waham się o tym wspomnieć, ponieważ jest to zły pomysł (i nie ma gwarancji, że i tak zadziała), ale możesz spróbować poszukać skrótu w tęczowej tabeli, takiej jak milw0rm, aby sprawdzić, czy możesz w ten sposób odzyskać stare hasło.
źródło
Zobacz wszystkie inne odpowiedzi tutaj na temat tego, jak i dlaczego nie jest on odwracalny i dlaczego i tak nie chcesz.
Jednak dla kompletności istnieją tęczowe tabele, na których można wyszukać możliwe dopasowania. Nie ma gwarancji, że odpowiedzią w tęczowej tabeli będzie oryginalne hasło wybrane przez użytkownika, aby je bardzo pomylić.
To również nie zadziała w przypadku solonych skrótów. Solenie jest zalecane przez wielu ekspertów ds. Bezpieczeństwa.
źródło
Nie ma możliwości „cofnięcia” funkcji skrótu w zakresie znalezienia dla niej funkcji odwrotnej. Jak wspomniano wcześniej, jest to cały sens funkcji haszującej. Nie powinno być odwracalne i powinno umożliwiać szybkie obliczanie wartości skrótu. Zatem jedynym sposobem na znalezienie ciągu wejściowego, który daje określoną wartość skrótu, jest wypróbowanie wszystkich możliwych kombinacji. Z tego powodu nazywa się to atakiem brutalnej siły.
Wypróbowanie wszystkich możliwych kombinacji zajmuje dużo czasu, dlatego wartości skrótu są używane do przechowywania haseł w stosunkowo bezpieczny sposób. Jeśli osoba atakująca jest w stanie uzyskać dostęp do bazy danych ze wszystkimi hasłami użytkowników, tracisz w każdym razie. Jeśli masz wartości skrótu i (mówiąc idealnie) silne hasła, znacznie trudniej będzie uzyskać hasła z wartości skrótu dla atakującego.
Przechowywanie wartości skrótu również nie stanowi problemu z wydajnością, ponieważ obliczanie wartości skrótu jest stosunkowo szybkie. Dlatego większość systemów oblicza wartość skrótu hasła wpisanego przez użytkownika (co jest szybkie), a następnie porównuje ją z wartością skrótu przechowywaną w bazie danych użytkowników.
źródło
MD5 uważa się za zepsuty, nie dlatego, że można odzyskać oryginalną zawartość z skrótu, ale ponieważ dzięki pracy można utworzyć dwie wiadomości, które mają skrót do tego samego skrótu.
Nie można cofnąć skrótu MD5.
źródło
Możesz znaleźć narzędzia online, które wykorzystują słownik do odzyskania oryginalnej wiadomości.
W niektórych przypadkach metoda słownikowa może być po prostu bezużyteczna:
Na przykład, oto jedno narzędzie online do deszyfrowania MD5 .
źródło
Jedyną rzeczą, która może być skuteczna, jest (jeśli wspomnimy, że hasła są właśnie zaszyfrowane, bez dodawania jakiejkolwiek soli, aby zapobiec atakom powtórkowym, jeśli tak, więc musisz znać sól), przy okazji, skorzystaj z narzędzia do ataku słownikowego , pliki wielu słów, liczb itp., a następnie utwórz dwa wiersze, jeden wiersz to słowo, liczba (w słowniku), drugi to skrót słowa, i porównaj skróty, jeśli je dopasujesz ...
to jedyny sposób, bez wchodzenia w kryptoanalizę.
źródło
Tak, dokładnie to, o co prosisz, jest możliwe. Nie można „odszyfrować” hasła MD5 bez pomocy, ale możliwe jest ponowne zaszyfrowanie hasła MD5 w innym algorytmie, ale nie wszystkie za jednym razem.
To, co robisz, polega na tym, aby użytkownicy mogli zalogować się do nowego systemu przy użyciu starego hasła MD5. W momencie logowania podali Twojemu programowi logowania niehasowaną wersję hasła, które okazało się zgodne z hasłem MD5, który posiadasz. Następnie możesz przekonwertować to nieskasowane hasło na nowy algorytm mieszający.
Oczywiście jest to proces przedłużony, ponieważ musisz poczekać, aż użytkownicy powiedzą ci, jakie są hasła, ale to działa.
(Uwaga: siedem lat później, no cóż, mam nadzieję, że ktoś uzna to za przydatne)
źródło
Nie da się tego zrobić. Możesz użyć słownika lub wypróbować różne wartości, dopóki nie uzyskasz szukanego skrótu. Ale nie można go „odszyfrować”.
źródło
MD5 ma swoje słabości (patrz Wikipedia ), więc istnieją projekty, które próbują wstępnie wyliczyć Hashe. Wikipedia wskazuje również na niektóre z tych projektów. Wiem, że wiem (i szanuję) to kryminał. Nie możesz podać użytkownikowi własnego hasła, ale możesz podać hasło, które działa. Ale myślę: po prostu napisz nowe hasło na wypadek, gdyby zapomniały.
źródło
Algorytm skrótu MD5 nie jest odwracalny, więc dekodowanie MD5 nie jest możliwe, ale niektóre strony internetowe mają zestaw dopasowanych haseł, więc możesz wypróbować online dekodowanie skrótu MD5.
Wypróbuj online:
MD5 Deszyfruj
md5online
md5decrypter
źródło
Teoretycznie nie jest możliwe odszyfrowanie wartości skrótu, ale masz kilka brudnych technik odzyskiwania oryginalnego zwykłego tekstu.
źródło
Nie, nie jest możliwe odwrócenie funkcji skrótu, takiej jak MD5: biorąc pod uwagę wyjściową wartość skrótu, nie można znaleźć komunikatu wejściowego, chyba że znana jest wystarczająca ilość informacji o komunikacie wejściowym.
Deszyfrowanie nie jest funkcją zdefiniowaną dla funkcji skrótu; szyfrowanie i deszyfrowanie są funkcjami szyfru, takiego jak AES w trybie CBC; funkcje skrótu nie szyfrują ani nie odszyfrowują . Funkcje skrótu są używane do przetworzenia komunikatu wejściowego. Jak sama nazwa wskazuje, algorytm odwrotny nie jest z założenia możliwy .
MD5 został zaprojektowany jako kryptograficznie bezpieczna, jednokierunkowa funkcja skrótu. Generowanie kolizji dla MD5 jest teraz łatwe - nawet jeśli duża część komunikatu wejściowego jest wcześniej ustalona. Tak więc MD5 jest oficjalnie uszkodzony i MD5 nie powinien już być uznawany za kryptograficznie bezpieczny skrót. Jednak nadal nie można znaleźć komunikatu wejściowego, który prowadzi do wartości skrótu: znajdź X, gdy znany jest tylko H (X) (a X nie ma wstępnie obliczonej struktury z co najmniej jednym 128-bajtowym blokiem wstępnie obliczonych danych) . Nie są znane ataki pre-image na MD5.
Zasadniczo możliwe jest również odgadywanie haseł przy użyciu brutalnej siły lub (rozszerzonych) ataków słownikowych, porównywanie baz danych lub próba znalezienia skrótów haseł w tak zwanych tablicach tęczy. Jeśli znaleziono dopasowanie, to jest obliczeniowo pewne, że znaleziono dane wejściowe. Funkcje skrótu są również zabezpieczone przed atakami kolizyjnymi: znalezienie
X'
tego jestH(X') = H(X)
daneH(X)
. Jeśli więcX
zostanie znalezione, to jest obliczeniowo pewne, że rzeczywiście był to komunikat wejściowy. W przeciwnym razie przeprowadziłbyś mimo wszystko atak kolizyjny. Tęczowe tabele mogą być użyte do przyspieszenia ataków, a istnieją wyspecjalizowane zasoby internetowe, które pomogą Ci znaleźć hasło z określonym hashem.Oczywiście można ponownie użyć wartości skrótu,
H(X)
aby zweryfikować hasła wygenerowane w innych systemach. Jedyne, co musi zrobić system odbiorczy, to zapisać wynik funkcji deterministycznej,F
która przyjmujeH(X)
jako dane wejściowe. KiedyX
podano do ówczesnego systemuH(X)
, a zatemF
może zostać przeliczone, a wyniki mogą być porównywane. Innymi słowy, odszyfrowanie wartości skrótu nie jest wymagane tylko w celu sprawdzenia , czy hasło jest prawidłowe, a nadal możesz przechowywać skrót jako inną wartość.Zamiast MD5 ważne jest użycie skrótu hasła lub PBKDF (funkcja wyprowadzania klucza na podstawie hasła). Taka funkcja określa, jak używać soli razem z hashem. W ten sposób identyczne skróty nie będą generowane dla identycznych haseł (od innych użytkowników lub w innych bazach danych). Z tego powodu skróty haseł również nie pozwalają na używanie tablic tęczowych, o ile sól jest wystarczająco duża i odpowiednio losowa.
Skróty hasła zawierają również czynnik roboczy (czasem konfigurowany za pomocą licznika iteracji ), który może znacznie spowolnić ataki, które próbują znaleźć hasło na podstawie wartości soli i wartości skrótu. Jest to ważne, ponieważ baza danych z solami i wartościami skrótu może zostać skradziona. Wreszcie hash hasła może być również trudny do zapamiętywania, dlatego do obliczenia skrótu wymagana jest znaczna ilość pamięci. Uniemożliwia to użycie specjalnego sprzętu (GPU, ASIC, FPGA itp.), Aby umożliwić osobie atakującej przyspieszenie wyszukiwania. Inne dane wejściowe lub opcje konfiguracji, takie jak pieprz lub stopień równoległości, mogą być również dostępne dla skrótu hasła.
Nadal jednak pozwoli każdemu zweryfikować podane hasło,
H(X)
nawet jeśliH(X)
jest to skrót hasłem. Hashy haseł są nadal deterministyczne, więc jeśli ktoś zna wszystkie dane wejściowe, a sam algorytm hashX
może być użyty do obliczeniaH(X)
i - ponownie - wyniki mogą być porównane.Powszechnie używane skróty haseł są bcrypt , scrypt i PBKDF2 . Istnieje również Argon2 w różnych formach, który jest zwycięzcą stosunkowo niedawnego konkursu mieszania haseł. Tutaj na CrackStation znajduje się dobry post na blogu dotyczący prawidłowego zabezpieczenia hasłem.
Możliwe jest, że przeciwnicy nie będą mogli wykonać obliczenia skrótu, sprawdzając, czy hasło jest prawidłowe. W tym celu można zastosować pieprz jako dane wejściowe do skrótu hasła. Alternatywnie wartość skrótu można oczywiście zaszyfrować przy użyciu szyfru, takiego jak AES i trybu działania, takiego jak CBC lub GCM. Wymaga to jednak przechowywania tajnego klucza / klucza niezależnie i z wyższymi wymaganiami dostępu niż hash hasła.
źródło
MD5 to kryptograficzna (jednokierunkowa) funkcja skrótu, więc nie ma bezpośredniego sposobu jej odkodowania. Głównym celem kryptograficznej funkcji skrótu jest to, że nie można jej cofnąć.
Jedną rzeczą, którą możesz zrobić, jest strategia brute force, w której zgadujesz, co zostało zaszyfrowane, a następnie haszujesz tą samą funkcją i sprawdza, czy pasuje. Chyba, że zaszyfrowane dane są bardzo łatwe do odgadnięcia, może to zająć dużo czasu.
źródło
Nie jest jeszcze możliwe wstawienie skrótu hasła do algorytmu i odzyskanie hasła w postaci zwykłego tekstu, ponieważ haszowanie jest jednokierunkowe. Ale to, co zrobili ludzie, to generowanie skrótów i przechowywanie ich w dużej tabeli, aby po wprowadzeniu określonego skrótu sprawdzał w tabeli hasło pasujące do skrótu i zwraca je tobie. Przykładem witryny, która to robi, jest http://www.md5online.org/ . Nowoczesny system przechowywania haseł przeciwdziała temu za pomocą algorytmu solenia, dzięki czemu po wpisaniu tego samego hasła w polu hasła podczas rejestracji generowane są różne skróty.
źródło
Nie, nie można odszyfrować / odwrócić md5, ponieważ jest to jednokierunkowa funkcja skrótu, dopóki nie można znaleźć rozległych luk w zabezpieczeniach MD5. Innym sposobem jest to, że niektóre witryny mają dużą liczbę zestawów baz danych haseł, więc możesz spróbować online dekodować ciąg skrótu MD5 lub SHA1. Wypróbowałem stronę internetową taką jak http://www.mycodemyway.com/encrypt-and-decrypt/md5 i działa ona dobrze dla mnie, ale to całkowicie zależy od twojego skrótu, jeśli ten skrót jest przechowywany w bazie danych, możesz uzyskać rzeczywisty ciąg .
źródło