Haszowanie to proces generowania wyniku o stałym rozmiarze z danych wejściowych o zmiennym rozmiarze. Proces ten realizowany jest za pomocą wzoru matematycznego zwanego „funkcją skrótu” (zaimplementowanego jako algorytm mieszający).

Nie wszystkie funkcje skrótu wymagają zastosowania kryptografii, ale „kryptograficzne funkcje skrótu” stanowią serce kryptowalut. Dzięki kryptograficznym funkcjom skrótu można osiągnąć wysoki poziom integralności i bezpieczeństwa danych w blockchain i innych systemach rozproszonych.

Zarówno tradycyjne funkcje skrótu, jak i kryptograficzne funkcje skrótu są deterministyczne. Determinizm odnosi się do faktu, że algorytm mieszający zawsze będzie generował ten sam wynik (zwany także „streszczeniem” lub „wartością skrótu”), o ile dane wejściowe się nie zmienią.

Zazwyczaj algorytmy mieszające kryptowalut są zaprojektowane jako funkcje jednokierunkowe, co oznacza, że ​​nie można ich łatwo odzyskać bez znacznego czasu obliczeniowego i zasobów. Innymi słowy, niezwykle łatwo jest utworzyć wynik z danych wejściowych, ale stosunkowo trudno jest utworzyć dane wejściowe z danych wyjściowych w odwrotnej kolejności. 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 dają wyniki o różnych rozmiarach, ale rozmiar wyjściowy każdego algorytmu mieszającego jest zawsze taki sam. Na przykład algorytm SHA-256 może wygenerować tylko 256-bitowy wynik, podczas gdy SHA-1 zawsze generuje 160-bitowy skrót.

Aby to zilustrować, sprawdziliśmy słowa „Binance” i „binance” za pomocą algorytmu haszującego SHA-256 (algorytm używany w Bitcoinie).

SHA-256

Wchodzić

Wyjście (256 bitów)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binancja

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Należy pamiętać, że niewielka zmiana wielkości pierwszej litery spowoduje zupełnie inną wartość skrótu. Niezależnie od długości wartości wejściowej, dane wyjściowe przy użyciu SHA-256 mają zawsze stałą długość 256 bitów (lub 64 znaków). Co więcej, niezależnie od tego, ile razy algorytm uruchomi te dwa słowa, wynik obu pozostaje taki sam.

I odwrotnie, jeśli uruchomisz te same dane wejściowe za pomocą algorytmu mieszającego SHA-1, otrzymasz następujące wyniki:

SHA-1

Wchodzić

Wyjście (160 bitów)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binancja

e58605c14a76ff98679322cca0eae7b3c4e08936


Należy pamiętać, że „SHA” jest akronimem algorytmów bezpiecznego mieszania. Algorytm odnosi się do zbioru kryptograficznych funkcji skrótu, do którego zaliczają się algorytmy SHA-0 i SHA-1 oraz zbiory SHA-2 i SHA-3. SHA-256 wraz z SHA-512 i innymi wariantami należą do grupy SHA-2. Obecnie za bezpieczne uważane są jedynie grupy SHA-2 i SHA-3.


Jakie jest znaczenie funkcji skrótu?

Tradycyjne funkcje skrótu mają wiele zastosowań, w tym przeszukiwanie baz danych, analizę dużych plików i zarządzanie danymi. 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. W przypadku Bitcoina kryptograficzne funkcje skrótu stanowią integralną część procesu wydobycia, wpływając zarówno na nowy adres, jak i generację klucza.

Operacje mieszające są naprawdę potężne przy przetwarzaniu dużych ilości informacji. Na przykład uruchom duży plik lub zestaw danych za pomocą funkcji skrótu, a następnie użyj jej wyników, aby szybko zweryfikować dokładność i kompletność danych. Funkcje mieszające działają, ponieważ są deterministyczne: dane wejściowe zawsze dają skompresowane, uproszczone dane wyjściowe (tj. wartość skrótu). Technologia ta eliminuje konieczność przechowywania i „zapamiętywania” dużych ilości danych.

Operacje skrótu są szczególnie przydatne w obszarze technologii blockchain. Blockchain Bitcoina obejmuje wiele operacji obejmujących operacje skrótu, z których większość jest częścią procesu wydobycia. Tak naprawdę prawie wszystkie protokoły kryptowalut opierają się na hashowaniu w celu łączenia grup transakcji i kompresowania ich w bloki, generując jednocześnie łącza kryptograficzne pomiędzy poszczególnymi blokami, skutecznie tworząc łańcuch bloków.


kryptograficzna funkcja skrótu

Podobnie funkcje mieszające wykorzystujące techniki kryptograficzne można zdefiniować jako kryptograficzne funkcje mieszające. Ogólnie rzecz biorąc, złamanie kryptograficznej funkcji skrótu wymaga niezliczonych prób użycia siły. Aby „przywrócić” kryptograficzną funkcję skrótu, należy odgadnąć dane wejściowe metodą prób i błędów, aż do wygenerowania odpowiedniego wyniku. Jednakże możliwe jest również, że różne dane wejściowe dadzą dokładnie ten sam wynik, więc pojawia się „konflikt”.

Z technicznego punktu widzenia kryptograficzna funkcja skrótu musi posiadać trzy właściwości, aby można ją było uznać za skuteczną w zapewnianiu bezpieczeństwa. Trzy główne atrybuty to zapobieganie kolizjom, zapobieganie przedobrazowi i zapobieganie drugiemu obrazowi wstępnemu.

Zanim omówimy każdy atrybut z osobna, podsumujmy pokrótce logikę każdego atrybutu.

  • Odporność na kolizje: Nie jest możliwe, aby dwa różne wejścia wygenerowały tę samą wartość skrótu.

  • Ochrona przed obrazowaniem: niemożliwe jest „przywrócenie” funkcji skrótu (tj. nie można znaleźć danych wejściowych z danego wyjścia).

  • Drugi opór obrazu wstępnego: Nie można znaleźć innego wejścia, które koliduje z określonym wejściem.


opór konfliktowy

Jak wspomniano wcześniej, kolizje występują, gdy różne dane wejściowe generują dokładnie tę samą wartość skrótu. Dlatego funkcję skrótu uważa się za odporną na kolizje, o ile nikt nie wykryje kolizji. Należy zauważyć, że ponieważ możliwe dane wejściowe są nieskończone, a możliwe wyniki są skończone, zawsze występują kolizje z funkcjami skrótu.

Zakładając, że prawdopodobieństwo znalezienia kolizji wynosi zaledwie miliony lat, można powiedzieć, że funkcja mieszająca jest odporna na kolizje. Dlatego chociaż w rzeczywistości nie ma bezkolizyjnych funkcji skrótu, niektóre z nich (takie jak SHA-256) są uważane za odporne na kolizje, o ile są wystarczająco mocne.

Wśród różnych algorytmów SHA grupy SHA-0 i SHA-1 powodują konflikty, więc nie są już bezpieczne. Obecnie zestawy SHA-2 i SHA-3 uważane są za odporne na kolizje.


Antyobrazowość

Właściwość antyikoniczna związana jest z koncepcją funkcji jednokierunkowych. Mówi się, że funkcja skrótu jest antyobrazowa, zakładając, że prawdopodobieństwo znalezienia danych wejściowych generujących określony wynik jest niezwykle niskie.

Należy pamiętać, że osoba atakująca patrzy na dane wyjście, aby odgadnąć dane wejściowe, zatem ta właściwość różni się od odporności na kolizje. Co więcej, dwa różne wejścia generujące ten sam wynik będą powodować konflikt, ale tak naprawdę nie ma znaczenia, które wejście zostanie użyte.

Właściwości zapobiegające obrazowaniu są cenne dla ochrony danych, ponieważ prosty skrót wiadomości może potwierdzić jej autentyczność bez ujawniania informacji. W praktyce wielu dostawców usług i aplikacji internetowych przechowuje i wykorzystuje skróty wygenerowane na podstawie haseł, a nie hasła w postaci zwykłego tekstu.


Odporność na drugi przedobraz

Krótko mówiąc, odporność na drugie obrazy wstępne leży gdzieś pomiędzy dwiema właściwościami wymienionymi powyżej. Drugi atak obrazu wstępnego ma miejsce, gdy ktoś może znaleźć określone dane wejściowe, które dają wynik taki sam jak inne znane dane wejściowe.

Innymi słowy, drugi atak obrazu wstępnego jest powiązany ze znalezieniem konfliktów, ale zamiast szukać dwóch losowych danych wejściowych, które generują tę samą wartość skrótu, szukasz innego wejścia, które generuje tę samą wartość skrótu, biorąc pod uwagę określone dane wejściowe.

Drugi atak poprzedzający obraz zwykle oznacza konflikt. Dlatego każda odporna na kolizje funkcja skrótu jest również odporna na ataki drugiego obrazu wstępnego. Jednakże odporność na kolizje oznacza, że ​​na jednym wyjściu można znaleźć pojedyncze wejście, więc osoba atakująca może w dalszym ciągu przeprowadzić atak preimage na funkcję odporną na kolizje.


Kopanie kryptowalut

Funkcje skrótu są wykorzystywane na kilku etapach wydobywania bitcoinów, takich jak sprawdzanie sald, łączenie wejść i wyjść transakcji oraz mieszanie transakcji w tym samym bloku w celu utworzenia drzewa Merkle. Jednak jednym z głównych powodów, dla których łańcuch bloków Bitcoin jest bezpieczny, jest to, że górnicy muszą wykonać niezliczone operacje mieszające, zanim w końcu znajdą prawidłowe rozwiązanie dla następnego bloku.

W szczególności górnicy muszą wypróbować kilka różnych danych wejściowych podczas tworzenia skrótów bloków kandydujących. Zasadniczo górnicy mogą zweryfikować blok tylko wtedy, gdy wygenerowany skrót wyjściowy zaczyna się od określonej liczby zer. Liczba zer określa trudność wydobycia i zmienia się wraz ze współczynnikiem mieszania dedykowanym dla sieci.

W tym przypadku współczynnik mieszania reprezentuje ilość mocy obliczeniowej włożonej w wydobywanie Bitcoina. Jeśli szybkość mieszania sieci wzrośnie, protokół Bitcoin automatycznie dostosuje trudność wydobycia, tak aby średni czas wymagany do wygenerowania bloku pozostał bliski 10 minut. I odwrotnie, jeśli wielu górników zdecyduje się zaprzestać wydobycia, co spowoduje znaczny spadek szybkości mieszania, trudność wydobycia zostanie obniżona, aż średni czas bloku powróci do 10 minut.

Pamiętaj, że górnicy mogą generować wiele skrótów jako prawidłowe dane wyjściowe (zaczynając od określonej liczby zer), więc nie muszą szukać kolizji. Istnieje wiele możliwych rozwiązań bloku, ale w zależności od progu trudności wydobycia, górnicy muszą znaleźć tylko jedno z rozwiązań.

Wydobywanie bitcoinów jest zadaniem kosztownym i nie ma potrzeby, aby górnicy oszukiwali system, co zamiast tego spowodowałoby znaczne straty finansowe. Im więcej górników dołącza do łańcucha bloków, tym większy i potężniejszy staje się łańcuch blokowy.


Podsumować

Nie ma wątpliwości, że funkcje skrótu są niezbędnym narzędziem w informatyce, a ich zdolność do przetwarzania ogromnych ilości danych jest szczególnie wyjątkowa. W połączeniu z kryptografią algorytmy mieszające mogą być wykorzystywane na różne sposoby w celu zapewnienia bezpieczeństwa i uwierzytelniania na różne sposoby. W przypadku prawie wszystkich sieci kryptowalut kryptograficzne funkcje skrótu mają kluczowe znaczenie. Dlatego jeśli interesuje Cię technologia blockchain, bardzo przydatne będzie zrozumienie właściwości i mechanizmu działania kryptograficznych funkcji skrótu.