Interesowałem się bezpieczeństwem informacji. Niedawno przedstawiono mi ideę haszowania. Obecnie rozumiem, że haszowanie wymaga hasła wprowadzanego przez użytkownika. Następnie losowo generuje „hash”, używając zestawu zmiennych i szyfrując wszystko. Następnie, gdy wprowadzisz to hasło, aby się zalogować, dopasowuje to hasło do skrótu. Jest tylko kilka rzeczy, których o tym nie rozumiem.

  1. Dlaczego tak trudno jest złamać te skróty? Przypuszczam, że po znalezieniu metody, której używają, zaszyfruj to (przejdźmy z niezwykle prostym szyfrem, takim jak szyfr Cezara, gdy już się zorientujesz, ile musisz zmienić, możesz to zrobić dla całych książek). Nawet jeśli używa czegoś takiego jak czas i pomieszał to istnieje kilka naprawdę dużych sposobów na ograniczenie opcji (użyjmy szyfru Cezara oni używają modulacji roku x już wieszże są dwa możliwe lata realnie to po prostu musisz wymyśl drugi element układanki).

  2. Jeśli są generowane losowo (nawet jeśli dwa hasła są takie same, wychodzą inaczej), w jaki sposób mogą stwierdzić, czy to jest dobrze?

  3. W jaki sposób są pękane. Skąd hash cat wie, że pomyślnie odszyfrował hasło?

Powiązany film (ale nie odpowiada dokładnie na moje pytanie): https://www.youtube.com/watch?v=b4b8ktEV4Bg

Komentarze

  • Jako drobna odpowiedź na pytanie Q (3 ), a dokładniej programy takie jak oclHashcat w większości przypadków próbują miliony haszów na wstępnie określonej liście. W rzeczywistości nigdy nie ' odszyfrowują ' hasła (pamiętaj możesz tylko odszyfrować szyfrowanie – haszowanie! = szyfrowanie), ale oni wiedzą, że jeśli spróbują hasła, a wynikowy skrót jest zgodny z posiadanym, musi to być oryginalne hasło. Tzn. nie ' t odszyfrowują, wykonują próby i błędy miliony razy na sekundę, aby sprawdzić, czy uda im się znaleźć dopasowanie. Dlatego ' jest również dobre, gdy hash jest powolny .
  • @Peleus To jest bardzo podobne do tego, do czego doszedłem. Jedyną rzeczą jest to, że myślałem, że podczas haszowania hasła mieszają to losowo. W jaki sposób biorą hasło i ponownie je szyfrują, wykonując te same losowe ruchy. I jeśli te same dane wejściowe mogą dać inne dane wyjściowe, które również mnie dezorientują.
  • Nie ' Nie jestem pewien, czy ' re mówiąc ” Myślałem, że oni to zaszyfrowali losowo ” tak jak u ciebie ' ve uczył się teraz inaczej, ale żebyś wiedział, że ' zdecydowanie nie jest! Haszowanie nie jest przypadkowe, ' jest powtarzalne, ale ' nie można działać wstecz, gdy ' s all. Skrót SHA256 słowa ' cat ' będzie zawsze taki sam w 100% przypadków. To ' jest powodem, dla którego możemy ich niezawodnie używać jako haseł. Jeśli hash tworzył nową wartość za każdym razem i moglibyśmy porównać tylko z poprzednią wartością hash, ' nigdy nie wiemy, czy hasło było prawidłowe, czy nie! : D
  • Rozumiem. Ten film wyjaśnia dokładnie to, co chciałem wiedzieć. youtube.com/watch?v=vgTtHV04xRI
  • Lepszy film wyjaśniający, dlaczego używa się haszowania. W przeciwieństwie do powyższego, które wyjaśnia szyfrowanie RSA i dlaczego ' trudniej jest cofnąć się po hashu. youtube.com/watch?v=b4b8ktEV4Bg

Odpowiedź

Szybko, współczynnik 1081.

A jeśli wolisz, odpowiedz na to pytanie: co to jest 23 razy 47?

Który jest łatwiejszy? Łatwiej jest wykonać mnożenie (po prostu postępuj zgodnie z regułami), niż odzyskać argumenty podane tylko przez iloczyn. Mnożenie. (Nawiasem mówiąc, jest to podstawa niektórych algorytmów kryptograficznych, takich jak RSA .)

Kryptograficzne funkcje skrótu mają różne podstawy matematyczne, ale mają tę samą właściwość: „re łatwe do obliczenia idąc do przodu (oblicz H (x) przy danym x), ale praktycznie niemożliwe do obliczenia idąc wstecz (biorąc pod uwagę y, oblicz x takie, że H (x) = y). W rzeczywistości jeden ze znaków dobrego kryptograficznego skrótu funkcja polega na tym, że nie ma lepszego sposobu na znalezienie x niż wypróbowanie ich wszystkich i obliczenie H (x) aż do znalezienia dopasowania.

Inną ważną właściwością funkcji skrótu jest to, że dwa różne wejścia mają różne skróty. jeśli H (x 1 ) = H (x 2 ), możemy wywnioskować, że x 1 = x 2 Z matematycznego punktu widzenia jest to niemożliwe – jeśli dane wejściowe są dłuższe niż długość hasha, muszą wystąpić kolizje.Ale przy dobrej kryptograficznej funkcji skrótu nie jest znany sposób na znalezienie kolizji ze wszystkimi zasobami obliczeniowymi na świecie.

Jeśli chcesz dowiedzieć się więcej o kryptograficzna funkcja skrótu , przeczytaj tę odpowiedź Thomasa Pornina . Kontynuuj, poczekam.

Zauważ, że funkcja skrótu nie jest funkcją szyfrowania. Szyfrowanie oznacza, że możesz odszyfrować (jeśli znasz klucz). Z hashem nie ma magicznej liczby który pozwala ci się cofnąć.

Główne zalecane kryptograficzne funkcje skrótu to SHA-1 i SHA-2 (która jest dostępna w kilku rozmiarach wyjściowych, głównie SHA-256 i SHA-512). MD5 jest starszą wersją, która jest obecnie przestarzała, ponieważ zawiera znane kolizje. Ostatecznie nie ma matematycznego dowodu na to, że rzeczywiście są one dobrymi kryptograficznymi funkcjami mieszającymi, jest tylko powszechne przekonanie, ponieważ wielu zawodowych kryptografów spędziło lata swojego życia próbując je złamać, ale bezskutecznie.

Ok, to ” To część historii. Teraz skrót hasła nie jest bezpośrednio kryptograficzną funkcją skrótu. Funkcja skrótu hasła (PHF) pobiera dwa dane wejściowe: hasło i sól. sól jest generowana losowo, gdy użytkownik wybierze swoje hasło. przechowywane razem z zaszyfrowanym hasłem PHF (hasło, sól). (ważne jest, że dwa różne konta zawsze mają różne sole, a losowe generowanie odpowiednio dużej soli jest dobrym sposobem na uzyskanie tej właściwości z ogromnym prawdopodobieństwem). ponownie system weryfikacji odczytuje sól z bazy danych haseł, oblicza PHF (hasło, sól) i sprawdza, czy wynik jest tym, co jest przechowywane w bazie danych.

Problem polega na tym, że jeśli ktoś chce złamać hasło, będzie musiał znać hash, zanim będą mogli rozpocząć i muszą osobno atakować każde konto. Sól uniemożliwia wcześniejsze wykonanie wielu prac krakingowych, np. generując tęczową tabelę .

Odpowiedzi (2) i (3) – legalny weryfikator i atakujący dowiadują się w tym samym sposób, czy hasło (wprowadzone przez użytkownika lub odgadnięte przez atakującego) jest poprawne. Ostatni punkt historii: dobra funkcja skrótu hasła ma dodatkową właściwość, musi działać wolno. Prawidłowy serwer musi obliczyć go tylko raz na próbę logowania, podczas gdy atakujący musi obliczyć go tylko raz na przypuszczenie, więc spowolnienie bardziej boli atakującego (co jest konieczne, ponieważ atakujący zwykle ma więcej wyspecjalizowanego sprzętu).

Jeśli kiedykolwiek będziesz musiał haszować hasła, nie wymyślaj własnej metody . Użyj jednej standardowych metod : scrypt , bcrypt lub PBKDF2 .  

Komentarze

  • Cholera I przychodzą do witryny bezpieczeństwa od wszystkich innych i jedno jest bardzo jasne, że włożyliście szaloną ilość pracy w udzielenie odpowiedzi. Nie tylko poprawnie, ale i bardzo dokładnie. Chciałbym móc wybrać dwie odpowiedzi, ale twoja była o wiele bardziej podobna Szukałem.
  • @Griffin – Możesz jednak zagłosować w górę na oba. Lub rzeczywiście – gdy ' jest więcej niż t wo odpowiedzi – zagłosuj pozytywnie na wszystko, co uważasz za pomocne, nawet jeśli możesz zaakceptować tylko jedną. Wiele pytań ma więcej niż jedną dobrą odpowiedź, a czasami ' zaleca się nawet przeczytanie większości odpowiedzi, aby lepiej zrozumieć aktualny temat. Tak, czasami nawet ci, których głosowano w dół. Głosując (w obu przypadkach) pomagasz także przyszłym czytelnikom zdecydować o ważności odpowiedzi, zwłaszcza tym, którzy wciąż uczą się na dany temat. 😉
  • Głosowałem na oba! Były niezwykle przydatne.
  • +1: wszystkie odpowiedzi są dobre, ale ta jest mniej więcej tak bliska doskonałej odpowiedzi, jak ja ' kiedykolwiek widziałem na Stack Exchange. Zrobiłbym +10, gdybym mógł.
  • @IlmariKaronen Właśnie dlatego ' uwielbiam tu przychodzić.

Odpowiedź

Kryptograficzne funkcje skrótu to obiekty matematyczne, które można opisać jako „duże mieszanie i mieszanie niektórych bitów ”. Przyjmują jako dane wejściowe sekwencję bitów (prawdopodobnie bardzo długą) i oferują wyjście o stałym rozmiarze. Z grubsza mówiąc, są tak zagmatwane, że chociaż nie ma w nich nic tajemniczego (to tylko kod deterministyczny), nikt nie może wymyślić, jak je „odwrócić” (znaleźć pasujące wejście dla danego wyjścia), z wyjątkiem podstawowej metody o nazwie „szczęście”: wypróbuj losowe dane wejściowe, aż zostanie znalezione dopasowanie.

Z naukowego punktu widzenia, jak to się może zdarzyć, że funkcje skrótu mogą w ogóle istnieć, to dobre pytanie .

Haszowanie to nie szyfrowanie . Nie ma żadnego sekretu, ani klucza w haszowaniu.

Funkcje skrótu mają wiele zastosowań; jednym z nich jest „przechowywanie haseł”. Funkcja skrótu wygląda na dobrą rzecz do przechowywania haseł. Nie chcemy bezpośrednio przechowywać haseł (w przeciwnym razie okazjonalne zajrzenie do naszych baz danych przez atakującego dałoby mu zbyt wiele informacji; omówienie tego posta na blogu ) ; chcemy przechowywać tokeny do weryfikacji hasła : coś, co pozwala na weryfikację hasła (które przedstawia użytkownik), ale nie ujawnia samego hasła. Pomysł jest następujący: przechowujmy hash hasła. Kiedy hasło ma zostać zweryfikowane, po prostu obliczamy jego hash i sprawdzamy, czy pasuje do zapisanej wartości. Ale odgadnięcie hasła z wartości hash jest trudne, ponieważ funkcja skrótu jest odporna na „inwersję” (patrz wyżej).

Ponieważ hasła są szczególnym rodzajem danych (są to dane, które ludzie mogą zapamiętać), dla właściwego bezpieczeństwa potrzebujemy „wzmocnionego” funkcja skrótu:

  • Chcemy bardzo wolnej funkcji skrótu.
  • Nie chcemy jednej funkcji skrótu, ale wiele różnych funkcji skrótu, więc każde hasło będzie zaszyfrowane z własną funkcją skrótu; chodzi o powstrzymanie równoległych ataków. Ten proces przekształcania pojedynczej funkcji skrótu w wiele wariantów nazywa się salting .

Zobacz tę odpowiedź za dokładne omówienie tematu haszowania haseł.

Komentarze

  • Przepraszamy, ale twoja odpowiedź była bardzo dokładna i dobrze ułożona. drugą odpowiedź, aby bardziej przypominać to, czego szukałem.

Odpowiedź

Hashowanie to funkcja niektórych ciąg bitowy (zwykle o zmiennej długości) na inny ciąg bitowy (zwykle mniejszy i o stałej długości).

Hashowanie jest używane w bazach danych do pobierania danych oraz w strukturach danych w pamięci zwanych tablicami skrótów. Pozwala nam to zredukować dowolne dane, takie jak ciąg znaków lub skomplikowany obiekt z wieloma polami, do liczby binarnej, która może być następnie używana bezpośrednio jako indeks do rzadkiej tablicy w celu pobrania powiązanych danych (z pewnymi szczegółami do obsługi skrótu kolizje).

Funkcje haszujące używane w powyższy sposób są „kuzynami” kryptograficznych funkcji haszujących. Są zaprojektowane do różnych wymagań. Muszą być szybkie w obliczeniach i zapewnić dobrą dystrybucję.

W bezpiecznym przetwarzaniu kryptograficzne skróty są używane do przetrawiania danych na reprezentatywne, małe ciągi bitów. Funkcje kryptograficzne mają różne wymagania. Zostały zaprojektowane w taki sposób, aby były trudne do odwrócenia (pełnić funkcję „zapadni” lub „w jedną stronę”). Nie tylko to, ale ważnym wymaganiem jest to, że dla danego tekstu jawnego i wartości skrótu musi być trudno znaleźć inny tekst jawny, który generuje ten sam hash.

Hashowania można używać nie tylko do haseł, ale jako suma kontrolna do weryfikacji integralności danych i jako część wdrażania podpisów cyfrowych. Aby podpisać cyfrowo duży dokument, musimy po prostu zhaszować dokument w celu utworzenia „skrótu” (nazwa używana na wyjściu funkcji haszującej, gdy haszowane jest coś bardzo długiego). Następnie tylko to podsumowanie jest przesyłane przez system kryptograficzny klucza publicznego w celu utworzenia podpisu. Widać tam słabość: co się stanie, jeśli napastnikowi uda się stworzyć dokument, który ma ten sam skrót? Wtedy wygląda na to, że oryginalny podpis utworzony na oryginalnym dokumencie jest w rzeczywistości podpisem podrobionego dokumentu: faktycznie popełniono fałszerstwo polegające na przeszczepieniu podpisu.

Haszowanie hasła pozwala systemom nie przechowywać zwykłej wersji tekstu hasło, ale umożliwia im sprawdzenie, czy użytkownik próbujący uzyskać dostęp zna to hasło. Haszowanie nie tylko pozwala systemom nie przechowywać haseł w postaci zwykłego tekstu (które musiałyby być bardzo starannie strzeżone), ale także umożliwia, że nawet jeśli skróty są publicznie ujawnione, hasła są nadal bezpieczne (podobnie jak w przypadku krypto systemy są w stanie ujawnić klucze publiczne). W praktyce skróty są jednak chronione przed publicznym dostępem: na przykład pliki /etc/shadow w systemach uniksopodobnych, uzupełniające czytelne dla wszystkich pliki /etc/passwd .

Funkcja haszująca nie jest przypadkowa. Jednak randomizacja jest stosowana w celu powstrzymania atakujących, którzy tworzą duże słowniki haseł i skrótów, które umożliwiają im wyszukiwanie kodu skrótu i odzyskanie odpowiedniego hasła.

Aby bezpieczniej haszować hasło, możemy po prostu dodać kilka losowych bitów zwanych „solą”. Różne sole dodane do tego samego hasła prowadzą oczywiście do różnych skrótów (miejmy nadzieję, że z kilkoma lub bez kolizji).

Jeśli losowa sól ma, powiedzmy, 32 bity, oznacza to, że teoretycznie jedno hasło może haszować na ponad cztery miliardy różnych sposobów, przez co bardzo niepraktyczne jest posiadanie wstępnie obliczonego słownika wszystkich możliwych skrótów dużej liczby haseł.

Oczywiście, gdy użytkownik jest uwierzytelniany, nie wie nic o tej soli. To jest w porządku, ponieważ sól jest przechowywana wraz z hashem w profilu użytkownika (często w połączeniu z hashem w jeden kompaktowy ciąg bitów). Podczas sprawdzania poprawności wpisu hasła użytkownika, sól jest dodawana do dowolnego hasła weszła, aby haszowanie było przeprowadzane z odpowiednią solą. Jeśli hasło jest poprawne, hash będzie pasował, ponieważ używana sól jest również właściwa, ponieważ została pobrana z profilu użytkownika.

Więc w ten sposób losowość jest włączana do haszowania haseł, a jednocześnie pozwalając mu działać.

To, co sprawia, że skróty są trudne do złamania, to fakt, że są one zbudowane z funkcji „drzwi-pułapki” lub funkcji „jednokierunkowej”. W matematyce jest wiele przykładów takich rzeczy. , proste dodawanie jest pułapką. Jeśli dodamy kilka liczb całkowitych, aby uzyskać sumę, niemożliwe jest odzyskanie oryginalnych liczb, znając tylko sumę.

Skróty haseł nie są zaszyfrowanymi hasłami. Jeśli atakujący ma hash i sól hasła, a zdarza się, że odgadnie hasło, a następnie może to łatwo potwierdzić, dokładnie w taki sam sposób, w jaki robi to oprogramowanie uwierzytelniające logowanie: sprawdza hasło i sól przez funkcję haszowania i widzi, że poprawne hash.

Komentarze

  • Doskonałe umiejętności pisania i naprawdę łatwe y zrozumieć odpowiedź, która jest w całości poprawna pod względem merytorycznym, ale obejmuje wszystkie punkty i zachowuje naturalny przepływ, co czyni ją o wiele bardziej wszechstronną. To ' nie jest łatwe, dziękuję bardzo za odpowiedź!
  • bardzo pouczające. Omówiłeś wszystkie aspekty.

Odpowiedź

Jednym z kluczy do haszowania jest to, że odrzuca informacje. Nie można cofnąć skrótu, ponieważ brakuje niezbędnej wiedzy. Oto kilka przykładów działających (ale całkiem bezwartościowych) funkcji haszujących. Jeśli podasz mi hasło, mógłbym wykonać jedną z następujących czynności:

  • Policz liczbę samogłosek
  • Weź kod ASCII dla każdej litery i wykonaj XOR je wszystkie razem
  • Weź sumę kontrolną CRC32 binarnej reprezentacji hasła (ten faktycznie jest prawdziwym hashem, ale nie kryptograficznym)

W każdym z tych przypadków nie mogę odwrócić procesu. Zamiast tego muszę ponownie uruchomić proces, gdy ponownie podasz mi hasło, aby sprawdzić, czy obliczenia, które wykonałem, są zgodne.

przykład: jeśli na początku podasz mi hasło „małpa”, mogę zapisać cyfrę 3 (3 samogłoski). Później, gdy spróbuję uwierzytelnić hasło „smok”, ponownie sprawdzam to samo i wymyślam 2, nie pasuje do 3. Więc wiem, że podałeś mi złe hasło. Ale jeśli podasz mi hasło „melissa”, błędnie założyłbym, że wpisałeś prawidłowe hasło. To jest skrót kolizja .

Zbiór reguł, które należy zastosować, aby uzyskać liczbę, reprezentuje dane hasło to Twoja funkcja skrótu . Są one uważane za funkcje „jednokierunkowe”, ponieważ nie powinno być możliwości ich odwrócenia. Wysokiej jakości funkcje skrótu mają na celu ograniczenie liczby potencjalnych kolizji, dzięki czemu nie musisz się martwić o ten problem. Krok dalej, kryptograficzne funkcje skrótu zostały zaprojektowane tak, aby utrudnić znalezienie ciągu, który mógłby pasować do danego wyniku ( i być może celowo tworzyć kolizje). Zostały również zaprojektowane w celu ograniczenia ilości informacji, które można zebrać na temat danego wejścia z samego wyniku skrótu.

W rezultacie jedynym sposobem sprawdzenia, jakie hasło pasuje do danego hasha kryptograficznego, jest wypróbowanie wszystkich możliwości, aż natkniesz się na taką, która działa. Dalsze środki zaradcze (sól, BPKDF2 itp.) Sprawiają, że proces zgadywania jest jeszcze trudniejszy, ponieważ osoba odgadująca hasło przeskakuje przez kolejne kółka przy każdej próbie.

Zauważ, że całkowicie przemilczałem, jak kryptograficzna funkcja skrótu trudno wymyślić działające hasło (nawet jeśli nie jest to oryginalne). Nazywa się to atakiem „ preimage „. W powyższym trywialnym przykładzie wymyślenie” melissa „jako hasła kandydującego zawierającego 3 samogłoski jest przykładem takiego ataku.

Kryptograficzne funkcje skrótu zwykle robią to, uruchamiając dane wejściowe, chociaż kilka” rundy ”danego procesu, gdzie wynik każdej rundy staje się częścią danych wejściowych do następnej.Aby obliczyć wkład pierwszej rundy, musiałbyś obliczyć dane wejściowe drugiej rundy, co z kolei wymaga od ciebie obliczenia wkładu trzeciej rundy itd., Co oznacza, że każde odgadnięcie każdego składnika należy sprawdzić za pomocą długiego i złożonego zestawu obliczeń. Thomas Pornin ma dość wyczerpujące wyjaśnienie tego, jak działa ten opór. Całkiem przydatna lektura, jeśli naprawdę chcesz rozumiem.

Odpowiedź

  1. Określ stałą wartość z spełniającą równanie: xy ^ 7 + yz ^ 5 + x ^ 3z = 0. Potrzebujesz pomocy? OK, x = 32. Nadal nie możesz go rozwiązać? W takim razie nie powinieneś znać odpowiedzi w pierwszej kolejności.

    Wartość y, która sprowadzi to do równania pojedynczej zmiennej, sprawiając, że rozwiązanie tej pojedynczej zmiennej będzie trywialne dla każdego szóstoklasisty (prawdopodobnie potrzebuje kalkulatora), to tajemnica, którą podzieliłem się tylko z zaufanymi osobami. Bez niego z mogłoby być wszystkim; jego wartość zależy od y, więc nie można go w zadowalający sposób rozwiązać bez stałej, znanej y. Jeśli tego nie zrobisz ” nie znam wartości y, dzieje się tak dlatego, że nie ufałem ci na tyle, by dać ci ją prywatnie.

    To jest podstawowa zasada kryptografii; wzór matematyczny lub inny proces deterministyczny jest dobry -dokumentowane, a jedna lub więcej możliwych zmiennych formuły może być również publicznie znanych, co pozwala obu stronom uzgodnić sposób skonfigurowania swoich szyfrów, aby każda z nich mogła odszyfrować to, co szyfruje druga. Jednak dwie zmienne pozostań tajemnicą, jeśli znasz jedną, możesz odkryć drugą: ta, którą powinieneś znać, jest kluczem, a ta ty można odkryć za pomocą klucza jest wiadomość.

    W przypadku skrótu jest trochę inaczej. Hash nie wymaga zachowania jednego sekretu, aby zachować inny. Zamiast tego skróty działają w oparciu o nieodwracalną transformację matematyczną; dla dowolnego H (x) = y nie jest znane żadne H -1 (y) = x z wyjątkiem wypróbowania H (x) dla wszystkich możliwych x, dopóki nie otrzymasz y. Zwykle dzieje się tak, ponieważ kilka pośrednich wyników równania jest niejednoznacznych; na przykład obliczenie pierwiastka kwadratowego z liczby dodatniej technicznie daje oba wynik dodatni i ujemny, ponieważ każda liczba może zostać pomnożona przez siebie, aby otrzymać wynik. Odwrotność modułu jest podobnie niejednoznaczna; liczba 1, utworzona przez x mod 3, mogłaby zostać utworzona przez dowolne x = 3k + 1. Te typy transformacji „jednokierunkowych” są łączone w taki sposób, że próba obliczenia odwrotnej funkcji skrótu generuje nieskończone możliwości; dlatego łatwiejszym (najłatwiejszym) sposobem ich rozwiązania jest po prostu wypróbowanie każdego możliwego wejścia, aż jedno wyjście będzie pasować. nadal zajmuje dużo czasu.

  2. Hashe nie są przypadkowe. Jak już wspomniałem, skróty są wynikiem nieodwracalnej operacji matematycznej. Ta operacja nadal musi być deterministyczna; przy stałym wejściu wyjście jest stałe niezależnie od tego, ile razy wykonujesz operację. Nie ma elementu losowego.

    Miejsce, w którym mógłbyś się pomylić, znajduje się w wyrażeniu na to, co symuluje skrót, czyli losowa wyrocznia . Wyobraź sobie czarne pudełko, w którym znajduje się mały człowieczek z fotograficzną pamięcią i jakąś mistyczną metodą generowania idealnie losowych liczb. Zapisujesz coś na kartce papieru i przepychasz przez szczelinę, w której mężczyzna to bierze. Czyta to i dzieje się jedna z dwóch rzeczy. Albo nie przeczytał go wcześniej, w takim przypadku wygeneruje nową liczbę losową i przekaże ci ją, przekazując zarówno twoją wiadomość, jak i liczbę do jego pamięci. Albo przeczytał dokładnie wiadomość wcześniej, w takim przypadku pamięta liczbę, którą wygenerował, kiedy po raz pierwszy ją przeczytał i podaje ci tę liczbę. Generator liczb losowych nigdy nie wygeneruje liczby, którą już wygenerował, ma nieskończoną możliwą wielkość, a mały człowiek pamięć jest nieograniczona i nieomylna. Dlatego mały człowiek nigdy nie pomyśli, że przeczytał wiadomość wcześniej, jeśli tego nie zrobił, nigdy nie zapomni, że przeczytał wiadomość wcześniej, a więc nigdy, przenigdy nie stworzy dwóch różnych liczb dla tej samej wiadomości ani tej samej numer dla dwóch różnych wiadomości.

    To właśnie funkcje skrótu próbują zasymulować. Nie mogą modelować tego małego człowieka z pamięcią fotograficzną, ponieważ wymagałoby to nieskończonej przestrzeni dyskowej i nieograniczonej, uniwersalnej dostępności, nawet urządzenia, które nie są połączone z żadnym innym urządzeniem w żaden inny sposób. Zamiast tego opierają się na deterministycznych, ale losowych obliczeniach wyglądających , które „trawią” wiadomość do wartości skrótu. Ta sama funkcja skrótu, po otrzymaniu tej samej wiadomości wygeneruje ten sam skrót; jednak funkcje te mają ograniczoną liczbę wartości skrótu, które mogą zwracać. Stwarza to możliwość tzw. kolizji skrótów; jest więcej możliwych komunikatów niż wartości skrótu, więc prędzej czy później (miejmy nadzieję, że później) dwa różne ja Sage generują ten sam hash.

  3. Hashe można złamać z trzech podstawowych powodów.Po pierwsze, matematycy (a tym samym napastnicy), ponieważ stanowią deterministyczne, matematyczne wyprowadzenie swojego przekazu, w końcu znajdują matematyczny związek między komunikatem a jego hashem lub między dwoma komunikatami i wynikającymi z nich hashami. To, co kiedyś było przypadkowe, już nie jest. Pozwoliłoby to na szereg ataków w oparciu o charakter stwierdzonej słabości; Jeśli istnieje algorytmiczny sposób na wygenerowanie wiadomości kolidującej z wiadomością i jej hashem, to jest to problem. Jeśli istnieje sposób manipulowania wiadomością i przewidywania wynikowego skrótu, to jest to inny problem. Jeśli rzeczywiście istnieje sposób na odwrócenie wartości skrótu, wygenerowanie wiadomości z wartości skrótu, która po ponownym zhaszowaniu daje ten sam skrót, to „jest to poważny problem.

    Po drugie, ponieważ skróty mają ograniczony rozmiar, wcześniej czy później dwie wiadomości wygenerują ten sam skrót. Oznacza to, że osoba atakująca nie musi znajdować tej wiadomości, której używasz do tworzenia określonego skrótu ; wszystko, co musi zrobić, to znaleźć wiadomość , która generuje ten sam hash. Szanse na to są niewielkie, teoretycznie jedna szansa na dowolną liczbę możliwych haszów, ale wciąż lepsza niż jedna w nieskończoności.

    Wreszcie, chociaż istnieje wiele możliwych wiadomości, jest znacznie mniej liczba prawdopodobnych wiadomości. Wiadomości, które zazwyczaj podajemy funkcjom skrótu, mają zwykle pewną strukturę (opartą na języku, temacie, formatowaniu elektronicznym i celu), co oznacza, że mając określoną część wiadomości, możemy dokładniej odgadnąć inne części wiadomości. W terminologii informatycznej oznacza to, że wiadomości konwertowane na skróty często mają niższą entropię niż sama funkcja skrótu; Mówiąc najprościej, funkcja skrótu, która tworzy 256-bitowe podsumowania, może teoretycznie wytworzyć dowolną permutację tych bitów, 2 ^ 256. Jeśli jednak istnieje, powiedzmy, tylko 10 000 możliwych wiadomości, które mogłyby kiedykolwiek zostać wprowadzone do tej funkcji skrótu przez system badany pod kątem ataku, wówczas tylko 10 000 z 2 ^ 256 możliwych wartości skrótu zostanie kiedykolwiek zauważonych, a co ważniejsze, w najgorszym przypadku napastnik musiałby tylko wypróbować wszystkie 10000 możliwych danych wejściowych, aby znaleźć ten, który generuje wartość skrótu, której szuka.

Komentarze

  • I właśnie dlatego … uwielbiam bezpieczeństwo IT w ' serwisie wymiany stosów.
  • Również twoje wyjaśnienie nr 1 jest dokładnie tym, czego potrzebowałem. Jednak mam pytanie. Wygląda na to, że ” hashe ” są jak wersje numeryczne danej rzeczy (w tym przypadku hasła). Więc jeśli mam stronę internetową i 100 000 osób się rejestruje. Następnie 50% używa hasła ” hasło ” Jestem w stanie zaoszczędzić mnóstwo miejsca, po prostu przechowując zaszyfrowaną wartość ” hasło ” zamiast hasła mnóstwo razy?
  • Cóż, jeśli ' ponownie używaj bezpiecznego skrótu (> = 256-bitowy rozmiar skrótu), a następnie przechowuj zaszyfrowaną wartość ” hasło ” zwiększy rozmiar twojego miejsca na dane. Ponadto, gdyby osoba atakująca kiedykolwiek zobaczyła, że 50% kont użytkowników ma ten sam skrót hasła, ' wie, że wszyscy ' d musi zrobić, to złamać jedno hasło i ma dostęp do 50% kont użytkowników. Powinieneś ” odczytywać ” skróty hasła; istnieje wiele metod, ale efekt końcowy jest taki, że to samo hasło zaszyfrowane przez ten sam algorytm generuje inny skrót, z powodu dodatkowej unikalnej wartości soli dla każdego konta.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *