Haszowanie odnosi się do procesu generowania wyników o stałym rozmiarze z danych wejściowych o zmiennym rozmiarze. Odbywa się to za pomocą 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ą serce kryptowalut. Dzięki nim blockchainy i inne systemy rozproszone mogą osiągnąć znaczny poziom integralności i bezpieczeństwa danych.
Zarówno normalne, jak i kryptograficzne funkcje skrótu są deterministyczne. Determinizm oznacza, że dopóki dane wejściowe nie ulegną zmianie, algorytm mieszający zawsze będzie generował ten sam wynik (znany również jako skrót lub skrót).
Algorytmy mieszające kryptowaluty są zwykle projektowane jako funkcje jednokierunkowe, co oznacza, że nie można ich odwrócić bez dużego czasu obliczeniowego i zasobów. Innymi słowy, dość łatwo jest wygenerować wynik na podstawie danych wejściowych, ale stosunkowo trudno jest zrobić to w drugą stronę (wygenerować dane wejściowe tylko na podstawie 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 każdego algorytmu mieszającego są zawsze stałe. Na przykład algorytm SHA-256 może generować tylko 256-bitowe dane wyjściowe, podczas gdy SHA-1 zawsze generuje 160-bitowe podsumowanie.
Aby to zilustrować, przepuśćmy słowa „Binance” i „binance” przez algorytm mieszający SHA-256 (ten używany w Bitcoinie).
Należy pamiętać, że niewielka zmiana (przypadek pierwszej litery) spowodowała zupełnie inną wartość funkcji 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 danych wejściowych. Ponadto nie ma znaczenia, ile razy przeprowadzimy te dwa słowa przez algorytm, oba wyniki pozostaną stałe.
A jeśli przekażemy te same dane wejściowe przez algorytm mieszający SHA-1, otrzymamy następujące wyniki:
Co ciekawe, skrót SHA oznacza Secure Hash Algorithms (bezpieczne algorytmy szyfrowania). Jest to zestaw kryptograficznych funkcji skrótu obejmujący algorytmy SHA-0 i SHA-1, a także grupy SHA-2 i SHA-3. SHA-256 należy do rodziny SHA-2, wraz z SHA-512 i innymi wariantami. Obecnie tylko grupy SHA-2 i SHA-3 są uważane za bezpieczne.
Jakie jest znaczenie tej technologii?
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 stanowią integralną część procesu wydobycia, a także odgrywają rolę w generowaniu nowych adresów i kluczy.
Prawdziwa siła hashowania ujawnia się podczas pracy z ogromnymi ilościami informacji. Można na przykład uruchomić duży plik lub zestaw danych za pomocą funkcji skrótu, a następnie użyć jej wyników, aby szybko sprawdzić dokładność i integralność danych. Jest to możliwe ze względu na deterministyczny charakter funkcji skrótu: dane wejściowe zawsze dają uproszczone, skompresowane wyjście (hasz). Metoda ta eliminuje konieczność przechowywania i „zapamiętywania” dużych ilości danych.
Haszowanie jest szczególnie przydatne w kontekście technologii blockchain. Blockchain Bitcoina ma kilka operacji związanych z haszowaniem, z których większość jest wykonywana w procesie wydobycia. W rzeczywistości prawie wszystkie protokoły kryptowalut opierają się na hashowaniu w celu łączenia i łączenia grup transakcji w bloki oraz tworzenia łączy kryptograficznych pomiędzy każdym blokiem, tworząc w ten sposób ł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 wielu prób użycia brutalnej siły. Aby „rozwinąć” kryptograficzną funkcję skrótu, należy wybrać dane wejściowe metodą prób i błędów, aż do uzyskania odpowiedniego wyniku. Istnieje jednak również możliwość, że różne dane wejściowe dadzą ten sam wynik, w którym to 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 dobrze zabezpieczoną. Możemy je opisać jako: odporność na kolizję oraz odporność na atak znalezienia pierwszego i drugiego prototypu.
Zanim opiszemy każdą właściwość, podsumujmy ich logikę w trzech krótkich zdaniach.
Odporność na kolizje: niemożność znalezienia dwóch różnych danych wejściowych, które dają ten sam skrót.
Odporność na znalezienie pierwszego podglądu: brak możliwości „odwrócenia” funkcji skrótu (znalezienie wejścia przez dane wyjście).
Opór przed znalezieniem drugiego przykładu: niemożność znalezienia drugiego wejścia, które ma taki sam skrót jak pierwszy.
Odporność na kolizje
Jak wspomniano wcześniej, kolizja ma miejsce, gdy różne dane wejściowe dają ten sam skrót. Funkcja skrótu jest wówczas uważana za odporną na kolizje, dopóki ktoś nie odkryje takiej kolizji. Należy zauważyć, że kolizje zawsze będą występować dla dowolnej funkcji skrótu ze względu na nieskończoną liczbę wejść i skończoną liczbę wyjść.
Zatem funkcja skrótu jest odporna na kolizje, gdy prawdopodobieństwo wykrycia kolizji jest tak małe, że obliczenia wymagałyby milionów lat. Z tego powodu, choć nie ma bezkolizyjnych funkcji skrótu, niektóre są na tyle silne, że można je uznać za stabilne (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 za odporne na kolizje uważa się jedynie grupy SHA-2 i SHA-3.
Opór przed znalezieniem pierwszego prototypu
Właściwość ta jest ściśle związana z pojęciem funkcji jednostronnych. Funkcja skrótu jest uważana za niezawodną w znajdowaniu pierwszego podglądu, o ile istnieje bardzo małe prawdopodobieństwo, że ktoś może znaleźć dane wejściowe przy użyciu wygenerowanych danych wyjściowych.
Należy zauważyć, że ta właściwość różni się od poprzedniej, ponieważ osoba atakująca musi odgadnąć dane wejściowe na podstawie określonego wyniku. Ten rodzaj kolizji ma miejsce, gdy ktoś znajdzie dwa różne wejścia, które dają ten sam wynik, niezależnie od tego, które konkretne wejście zostało użyte.
Właściwość dowodu pierwszego spojrzenia jest cenna dla bezpieczeństwa danych, ponieważ prosty skrót wiadomości może potwierdzić jej autentyczność bez konieczności ujawniania dodatkowych informacji. W praktyce wielu dostawców usług i aplikacji internetowych przechowuje i wykorzystuje skróty wygenerowane na podstawie haseł, zamiast używać ich w formacie tekstowym.
Opór przed znalezieniem drugiego prototypu
Ten typ stabilności plasuje się gdzieś pomiędzy dwiema poprzednimi właściwościami. Atak znalezienia drugiego prototypu polega na znalezieniu konkretnego wejścia, za pomocą którego możliwe jest wygenerowanie takiego wyjścia, które zostało już wygenerowane przy użyciu innego, znanego wcześniej wejścia.
Innymi słowy, drugi atak wyszukiwania obejmuje wykrywanie kolizji, ale zamiast znajdować dwa losowe dane wejściowe, które generują ten sam skrót, atak ma na celu znalezienie danych wejściowych, które mogą odtworzyć skrót, który został już wygenerowany przez inne dane wejściowe.
Dlatego każda funkcja skrótu odporna na kolizje jest również odporna na atak polegający na znalezieniu drugiej liczby pierwszej, ponieważ ta ostatnia zawsze wymaga kolizji. Jednak nadal możliwe jest wykonanie pierwszego ataku wyszukiwania w funkcji odpornej na kolizje, ponieważ wiąże się to z wyszukiwaniem jednego wejścia i jednego wyjścia.
Górnictwo
Istnieje wiele etapów wydobywania bitcoinów, które są wykonywane przy użyciu funkcji skrótu. Jest to sprawdzanie salda, łączenie wejść i wyjść transakcji oraz mieszanie wszystkich transakcji w 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ć jak najwięcej operacji mieszania, aby ostatecznie znaleźć właściwe rozwiązanie dla następnego bloku.
Górnik musi użyć kilku różnych danych wejściowych podczas generowania skrótu dla swojego bloku kandydującego. Weryfikacja bloku będzie możliwa tylko wtedy, gdy poprawnie wygenerowany wynik w postaci skrótu będzie zaczynał się od określonej liczby zer. Liczba zer określa trudność wydobycia i różni się w zależności od hashrate'u sieci.
W tym przypadku hashrate jest miarą mocy twojego komputera, którą inwestujesz w wydobywanie Bitcoinów. Jeśli hashrate zacznie rosnąć, protokół Bitcoin automatycznie dostosuje trudność wydobycia, tak aby średni czas wymagany do wydobycia bloku wynosił około 10 minut. Jeśli kilku górników zdecyduje się zaprzestać wydobycia, co spowoduje znaczny spadek hashrateu, trudność wydobycia zostanie dostosowana, aby tymczasowo ułatwić obliczenia (do czasu, aż średni czas tworzenia bloku powróci do 10 minut).
Zauważ, że górnicy nie muszą szukać kolizji, ponieważ istnieje kilka skrótów, które mogą wygenerować jako prawidłowe dane wyjściowe (zaczynając od określonej liczby zer). Zatem dla danego bloku możliwych rozwiązań jest kilka, a górnicy muszą znaleźć tylko jedno z nich – zgodnie z progiem wyznaczonym przez trudność wydobycia.
Ponieważ wydobywanie bitcoinów jest kosztownym zadaniem, górnicy nie mają motywacji do oszukiwania systemu, ponieważ spowodowałoby to znaczne straty finansowe. W związku z tym im więcej górników przyłącza się do łańcucha bloków, tym staje się on większy i silniejszy.
Wyniki
Nie ma wątpliwości, że funkcje skrótu są jednym z głównych narzędzi informatyki, szczególnie podczas pracy z ogromnymi ilościami danych. W połączeniu z kryptografią algorytmy mieszające mogą być bardzo przydatne, zapewniając bezpieczeństwo i uwierzytelnianie na różne sposoby. Dlatego kryptograficzne funkcje skrótu są niezbędne dla prawie wszystkich sieci kryptowalut, a zrozumienie ich właściwości i mechanizmów działania z pewnością przyda się każdemu zainteresowanemu technologią blockchain.

