Haszowanie odnosi się do procesu generowania wyniku o stałym rozmiarze z danych wejściowych o zmiennym rozmiarze. Odbywa się to poprzez zastosowanie formuł matematycznych zwanych funkcjami skrótu (realizowanymi jako algorytmy mieszające).
Chociaż nie wszystkie funkcje skrótu wymagają zastosowania kryptografii, tak zwane kryptograficzne funkcje skrótu stanowią rdzeń kryptowalut. Dzięki nim blockchainy i inne systemy rozproszone są w stanie osiągnąć znaczny poziom integralności i bezpieczeństwa danych.
Zarówno konwencjonalne, jak i kryptograficzne funkcje skrótu są deterministyczne. Determinizm oznacza, że dopóki dane wejściowe się nie zmienią, algorytm mieszający zawsze będzie generował ten sam wynik (znany również jako skrót lub skrót).
Zazwyczaj algorytmy mieszające kryptowalut są zaprojektowane jako funkcje jednokierunkowe, co oznacza, że nie można ich łatwo przywrócić bez dużej ilości czasu obliczeniowego i zasobów. Innymi słowy, dość łatwo jest utworzyć wynik na podstawie danych wejściowych, ale stosunkowo trudno jest pójść w przeciwnym kierunku (aby wygenerować dane wejściowe na podstawie samych danych wyjściowych). Ogólnie rzecz biorąc, im trudniej jest znaleźć dane wejściowe, tym bezpieczniejszy jest algorytm mieszający.
Jak działa funkcja skrótu?
Różne funkcje mieszające dadzą wyniki o różnych rozmiarach, ale możliwe rozmiary wyjściowe dla każdego algorytmu mieszającego są zawsze stałe. Na przykład algorytm SHA-256 może generować wyniki tylko o długości 256 bitów, podczas gdy algorytm SHA-1 zawsze generuje skrót o długości 160 bitów.
Aby to zilustrować, przepuśćmy słowa „Binance” i „binance” przez algorytm mieszający SHA-256 (ten używany w Bitcoinie).
Należy zauważyć, że niewielka zmiana (wielkość liter pierwszej litery) spowodowała zupełnie inną wartość skrótu. Ponieważ jednak używamy SHA-256, dane wyjściowe będą zawsze miały stały rozmiar 256 bitów (lub 64 znaków) - niezależnie od rozmiaru wejściowego. Ponadto nie ma znaczenia, ile razy przeprowadzimy te dwa słowa przez algorytm, oba wyniki pozostaną stałe.
I odwrotnie, jeśli uruchomimy te same dane wejściowe za pomocą algorytmu mieszającego SHA-1, otrzymamy następujące wyniki:
Warto zauważyć, że akronim SHA oznacza Secure Hash Algorithms. Odnosi się do zestawu kryptograficznych funkcji skrótu, które obejmują algorytmy SHA-0 i SHA-1 wraz z grupami SHA-2 i SHA-3. SHA-256 należy do grupy SHA-2 wraz z SHA-512 i innymi wariantami. Obecnie tylko grupy SHA-2 i SHA-3 są uważane za bezpieczne.
Dlaczego mają znaczenie?
Konwencjonalne funkcje skrótu mają szeroki zakres zastosowań, w tym przeszukiwanie baz danych, analizę dużych plików i zarządzanie danymi. Z drugiej strony, kryptograficzne funkcje skrótu są szeroko stosowane w zastosowaniach związanych z bezpieczeństwem informacji, takich jak uwierzytelnianie wiadomości i cyfrowe pobieranie odcisków palców. Jeśli chodzi o Bitcoin, kryptograficzne funkcje skrótu są istotną częścią procesu wydobywania, a także odgrywają rolę w generowaniu nowych adresów i kluczy.
Prawdziwa moc mieszania pojawia się, gdy mamy do czynienia z ogromnymi ilościami informacji. Można na przykład uruchomić duży plik lub zbiór danych za pomocą funkcji skrótu, a następnie użyć jej wyników do szybkiego sprawdzenia dokładności i integralności danych. Jest to możliwe ze względu na deterministyczny charakter funkcji skrótu: dane wejściowe zawsze będą skutkować uproszczonym, skondensowanym wyjściem (hash). Taka technika eliminuje konieczność przechowywania i „zapamiętywania” dużych ilości danych.
Haszowanie jest szczególnie przydatne w kontekście technologii blockchain. Blockchain Bitcoina obejmuje kilka operacji obejmujących haszowanie, większość z nich odbywa się w procesie wydobycia. W rzeczywistości prawie wszystkie protokoły kryptowalut opierają się na haszowaniu w celu łączenia i kondensowania grup transakcji w bloki, a także na tworzeniu połączeń kryptograficznych pomiędzy każdym blokiem, skutecznie tworząc łańcuch bloków.
Kryptograficzne funkcje skrótu
Ponownie funkcję skrótu wykorzystującą techniki kryptograficzne można zdefiniować jako kryptograficzną funkcję skrótu. Ogólnie rzecz biorąc, złamanie kryptograficznej funkcji skrótu wymaga niezliczonych prób użycia siły. Aby osoba mogła „przywrócić” kryptograficzną funkcję skrótu, musiałaby odgadnąć, jakie były dane wejściowe, metodą prób i błędów, aż do uzyskania odpowiedniego wyniku. Istnieje jednak również możliwość, że różne wejścia dadzą dokładnie ten sam wynik, w takim przypadku nastąpi „kolizja”.
Z technicznego punktu widzenia kryptograficzna funkcja skrótu musi spełniać trzy właściwości, aby można ją było uznać za skutecznie bezpieczną. Możemy je opisać jako odporność na kolizje, odporność na przedobrazy i odporność na drugie przedobrazy.
Zanim omówimy każdą właściwość, podsumujmy ich logikę w trzech krótkich zdaniach.
Odporność na kolizje: nie można znaleźć dwóch różnych danych wejściowych, które dają ten sam skrót co dane wyjściowe.
Odporność na obraz wstępny: niemożliwe „przywrócenie” funkcji skrótu (znalezienie wejścia z danego wyjścia).
Opór drugiego obrazu wstępnego: nie można znaleźć drugiego wejścia, które koliduje z określonym wejściem.
Odporność na kolizje
Jak wspomniano, kolizja ma miejsce, gdy różne dane wejściowe dają dokładnie ten sam skrót. Zatem funkcja skrótu jest uważana za odporną na kolizje do momentu, gdy ktoś znajdzie kolizję. Należy pamiętać, że dla każdej funkcji skrótu zawsze będą występować kolizje, ponieważ możliwe dane wejściowe są nieskończone, a możliwe wyniki są skończone.
Inaczej mówiąc, funkcja skrótu jest odporna na kolizje, gdy możliwość znalezienia kolizji jest tak mała, że wymagałoby to milionów lat obliczeń. Zatem pomimo tego, że nie ma bezkolizyjnych funkcji skrótu, niektóre z nich są na tyle silne, że można je uznać za odporne (np. SHA-256).
Spośród różnych algorytmów SHA grupy SHA-0 i SHA-1 nie są już bezpieczne, ponieważ wykryto kolizje. Obecnie grupy SHA-2 i SHA-3 uważane są za odporne na kolizje.
Odporność na obraz wstępny
Właściwość oporu przedobrazu jest związana z koncepcją funkcji jednokierunkowych. Funkcja skrótu jest uważana za odporną na obraz wstępny, jeśli istnieje bardzo małe prawdopodobieństwo, że ktoś znajdzie dane wejściowe, które wygenerowały określone dane wyjściowe.
Należy zauważyć, że ta właściwość różni się od poprzedniej, ponieważ osoba atakująca będzie próbowała odgadnąć, jakie były dane wejściowe, patrząc na dane wyjście. Z drugiej strony kolizja ma miejsce, gdy ktoś znajdzie dwa różne dane wejściowe, które generują ten sam wynik, ale nie ma znaczenia, które dane wejściowe zostały użyte.
Właściwość odporności na obraz wstępny jest cenna dla ochrony danych, ponieważ prosty skrót wiadomości może potwierdzić jej autentyczność, bez konieczności ujawniania informacji. W praktyce wielu dostawców usług i aplikacji internetowych przechowuje i wykorzystuje skróty wygenerowane na podstawie haseł, a nie haseł w postaci zwykłego tekstu.
Opór drugiego przedobrazu
Dla uproszczenia możemy powiedzieć, że opór drugiego obrazu wstępnego znajduje się gdzieś pomiędzy pozostałymi dwiema właściwościami. Atak drugiego obrazu wstępnego ma miejsce, gdy ktoś jest w stanie znaleźć określone dane wejściowe, które generują takie same dane wyjściowe jak inne dane wejściowe, które już znają.
Innymi słowy, atak drugiego obrazu wstępnego polega na znalezieniu kolizji, ale zamiast szukać dwóch losowych danych wejściowych, które generują ten sam skrót, wyszukuje dane wejściowe, które generują ten sam skrót, który został wygenerowany przez inne określone dane wejściowe.
Dlatego każda funkcja skrótu odporna na kolizje jest również odporna na ataki drugiego obrazu wstępnego, ponieważ ten ostatni zawsze będzie sugerował kolizję. Jednakże nadal można przeprowadzić atak obrazu wstępnego na funkcję odporną na kolizje, ponieważ oznacza to znalezienie pojedynczego wejścia z jednego wyjścia.
Górnictwo
Wydobywanie Bitcoinów obejmuje wiele etapów obejmujących funkcje skrótu, takie jak sprawdzanie sald, łączenie danych wejściowych i wyjściowych transakcji oraz mieszanie transakcji w obrębie bloku w celu utworzenia drzewa Merkle. Jednak jednym z głównych powodów, dla których łańcuch bloków Bitcoin jest bezpieczny, jest fakt, że górnicy muszą wykonać niezliczone operacje mieszające, aby ostatecznie znaleźć prawidłowe rozwiązanie dla następnego bloku.
W szczególności górnik musi wypróbować kilka różnych danych wejściowych podczas tworzenia wartości skrótu dla swojego bloku kandydującego. Zasadniczo będą mogli zweryfikować swój blok tylko wtedy, gdy wygenerują wyjściowy skrót zaczynający się od określonej liczby zer. Liczba zer określa trudność wydobycia i zmienia się w zależności od szybkości mieszania przeznaczonej dla sieci.
W tym przypadku współczynnik mieszania reprezentuje ilość mocy komputera inwestowanej w wydobywanie Bitcoinów. Jeśli szybkość mieszania sieci wzrośnie, protokół Bitcoin automatycznie dostosuje trudność wydobycia, tak aby średni czas potrzebny na wydobycie bloku pozostał bliski 10 minut. Dla kontrastu, jeśli kilku górników zdecyduje się zaprzestać wydobycia, co spowoduje znaczny spadek szybkości mieszania, trudność wydobycia zostanie dostosowana, ułatwiając wydobycie (dopóki średni czas bloku nie powróci do 10 minut).
Zauważ, że górnicy nie muszą znajdować kolizji, ponieważ istnieje wiele skrótów, które mogą wygenerować jako prawidłowe dane wyjściowe (zaczynając od określonej liczby zer). Istnieje zatem kilka możliwych rozwiązań dla danego bloku, a górnicy muszą znaleźć tylko jedno z nich – zgodnie z progiem określonym przez trudność wydobycia.
Ponieważ wydobywanie bitcoinów jest zadaniem kosztownym, górnicy nie mają powodu oszukiwać systemu, ponieważ doprowadziłoby to do znacznych strat finansowych. Im więcej górników przyłącza się do łańcucha bloków, tym staje się on większy i silniejszy.
Zamykanie myśli
Nie ma wątpliwości, że funkcje skrótu są niezbędnymi narzędziami w informatyce, zwłaszcza gdy mamy do czynienia z ogromnymi ilościami danych. W połączeniu z kryptografią algorytmy mieszające mogą być dość wszechstronne, oferując bezpieczeństwo i uwierzytelnianie na wiele różnych sposobów. W związku z tym kryptograficzne funkcje skrótu są niezbędne dla prawie wszystkich sieci kryptowalut, więc zrozumienie ich właściwości i mechanizmów działania jest z pewnością pomocne dla wszystkich zainteresowanych technologią blockchain.

