Termin skrót (lub Hashing) odnosi się do procesu tworzenia wyników o stałej wielkości z wejść o zmiennej wielkości. Dzieje się to poprzez zastosowanie znanych wzorów matematycznych, zwanych funkcjami skrótu (stosowanymi jako algorytmy skrótu).

Choć nie wszystkie funkcje skrótu wykorzystują kryptografię, to tzw. funkcje skrótu kryptograficznego są sednem kryptowalut. Dzięki nim blockchain i inne rozproszone systemy mogą osiągnąć ogromne poziomy integralności i bezpieczeństwa danych.

Zarówno tradycyjne, jak i kryptograficzne funkcje skrótu są deterministyczne. Oznacza to, że tak długo, jak wejście (wejścia) się nie zmienia, algorytm skrótu zawsze wygeneruje te same wyjścia (znane również jako Digest lub Hash).

Zwykle algorytmy skrótu dla kryptowalut są projektowane jako funkcje jednego kierunku, co oznacza, że niełatwo je odwrócić bez dużych ilości czasu i zasobów obliczeniowych. Innymi słowy, bardzo łatwo jest uzyskać wyniki z wejść, ale stosunkowo trudno jest to odwrócić (uzyskać wejścia z wyników). Ogólnie rzecz biorąc, im trudniej znaleźć wejścia, tym algorytm skrótu jest bardziej bezpieczny.


Jak działają funkcje skrótu?

Różne funkcje skrótu generują wyniki o różnych rozmiarach, ale rozmiary możliwych wyników dla każdego algorytmu skrótu są zawsze stałe. Na przykład algorytm SHA-256 może generować wyniki o rozmiarze 256 bitów, podczas gdy SHA-1 zawsze generuje skrót o rozmiarze 160 bitów.

Aby to wyjaśnić, uruchommy słowo „Binance” i „binance” przez algorytm skrótu SHA-256 (stosowany w Bitcoin).

SHA-256

Wejście

Wyjście (256 bitów)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Zauważ, że niewielka zmiana (w postaci pierwszej litery) spowodowała zupełnie inną wartość skrótu. Ale ponieważ używamy SHA-256, wyjścia zawsze będą miały stały rozmiar wynoszący 256 bitów (lub 64 znaki), niezależnie od rozmiaru wejścia. Nie ma również znaczenia, ile razy uruchamiamy te dwa słowa przez algorytm, ponieważ wyniki pozostaną stałe.

Z drugiej strony, jeśli uruchomimy te same wejścia przez algorytm skrótu SHA-1, otrzymamy następujące wyniki:

SHA-1

Wejście

Wyjście (160 bitów)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Warto zauważyć, że termin SHA jest skrótem od Secure Hash Algorithms. Odnosi się do zestawu funkcji skrótu kryptograficznego, które obejmują algorytmy SHA-0 i SHA-1 oraz zestawy SHA-2 i SHA-3. SHA-256 jest częścią zestawu SHA-2, obok SHA-512 i innych wariantów. Obecnie zestawy SHA-2 i SHA-3 są uznawane za bezpieczne.


Dlaczego to jest ważne?

Funkcje skrótu tradycyjnego mają szeroki zakres zastosowań, w tym wyszukiwanie w bazach danych, analizę dużych plików i zarządzanie danymi. Z drugiej strony funkcje skrótu kryptograficznego są szeroko stosowane w aplikacjach bezpieczeństwa informacji, takich jak uwierzytelnianie wiadomości i odciski palców cyfrowych. W przypadku Bitcoin funkcje skrótu kryptograficznego są kluczowym elementem procesu wydobywania i odgrywają również rolę w tworzeniu adresów i kluczy.

Prawdziwa moc skrótu ujawnia się przy przetwarzaniu ogromnych ilości informacji. Na przykład można uruchomić duży plik lub zestaw danych przez funkcję skrótu, a następnie użyć wyniku, aby szybko zweryfikować dokładność i integralność danych. To możliwe dzięki deterministycznej naturze funkcji skrótu: każde wejście zawsze prowadzi do uproszczonych i skondensowanych wyników (skrótów). Ta technika eliminuje potrzebę przechowywania i zapamiętywania dużych ilości danych.

Skrót jest szczególnie przydatny w kontekście technologii blockchain. Blockchain Bitcoin zawiera wiele operacji związanych ze skrótem, głównie podczas procesu wydobywania. W rzeczywistości prawie wszystkie protokoły kryptowalutowe opierają się na skrótach, aby łączyć i kondensować zestawy transakcji w blokach. Ponadto służy do tworzenia zaszyfrowanych połączeń między każdym blokiem, co skutkuje efektywnym tworzeniem blockchaina.


Funkcje skrótu kryptograficznego

Ponownie, funkcję skrótu (hash) wykorzystującą techniki kryptograficzne można zdefiniować jako funkcję skrótu kryptograficznego. Złamanie funkcji skrótu kryptograficznego wymaga niezliczonej liczby prób ataku brute-force. Aby odwrócić funkcję skrótu kryptograficznego, należy zgadywać, co było wejściem przez próbę i błąd, aż uzyska się odpowiednie wyniki. Możliwe jest jednak, że różne wejścia generują te same wyniki, co prowadzi do wystąpienia „kolizji”.

Technicznie rzecz biorąc, funkcja skrótu kryptograficznego musi spełniać trzy właściwości, aby można ją było uznać za skuteczną. Możemy opisać te właściwości jako: odporność na kolizję, odporność na preimage oraz odporność na second preimage.

Zanim omówimy każdą właściwość, podsumujmy ich logikę w trzech krótkich zdaniach.

  • Odporność na kolizję: nie można znaleźć dwóch różnych wejść, które generują ten sam skrót (hash) jako wynik.

  • Odporność na preimage: nie można „odwrócić” funkcji skrótu (odnaleźć wejść z określonych wyników).

  • Odporność na second-preimage: nie można znaleźć drugiego wejścia, które koliduje z określonym innym wejściem.


Odporność na kolizję

Jak już wspomniano, kolizja występuje, gdy różne wejścia generują dokładnie ten sam skrót. Dlatego funkcja skrótu jest uznawana za odporną na kolizje, dopóki ktoś nie znajdzie kolizji. Należy zauważyć, że kolizje będą zawsze istnieć dla każdej funkcji skrótu, ponieważ możliwe wejścia są nieograniczone, podczas gdy możliwe wyniki są ograniczone.

Innymi słowy, funkcja skrótu jest odporna na kolizje, gdy prawdopodobieństwo znalezienia kolizji jest tak niskie, że wymaga milionów lat obliczeń. Dlatego, mimo że nie ma funkcji skrótu wolnych od kolizji, niektóre są wystarczająco silne, aby uznać je za odporne (na przykład SHA-256).

Spośród różnych algorytmów SHA, zestawy SHA-0 i SHA-1 nie są już bezpieczne z powodu występowania kolizji. Obecnie zestawy SHA-2 i SHA-3 są uznawane za odporne na kolizje.


Odporność na preimage

Właściwość odporności na preimage związana jest z koncepcją funkcji jednego kierunku. Funkcja skrótu jest odporna na preimage, gdy istnieje bardzo małe prawdopodobieństwo, że ktoś znajdzie wejścia generujące określone wyniki.

Należy zauważyć, że ta właściwość różni się od poprzedniej, ponieważ jeden z napastników spróbuje zgadnąć, jakie były wejścia, patrząc na określone wyniki. Z drugiej strony kolizja występuje, gdy ktoś znajdzie różne wejścia, które generują te same wyniki, ale nie ma znaczenia, które wejścia zostały użyte.

Właściwość odporności na preimage ma wartość w ochronie danych, ponieważ prosty skrót wiadomości może potwierdzić jej integralność bez ujawniania jakichkolwiek informacji. W praktyce wielu dostawców usług i aplikacji internetowych przechowuje i używa skrótów (hashów) generowanych z haseł zamiast haseł w postaci tekstu jawnego.


Odporność na second-preimage

Aby uprościć, można powiedzieć, że odporność na second-preimage znajduje się gdzieś pomiędzy innymi poprzednimi właściwościami. Atak second-preimage występuje, gdy ktoś jest w stanie znaleźć określone wejście, które generuje ten sam wynik, co inne już znane wejście.

Innymi słowy, atak second-preimage polega na znalezieniu kolizji, ale zamiast szukać dwóch losowych wejść, które generują ten sam skrót jako wynik, szukają wejścia, które generuje ten sam skrót, który został wygenerowany przez inne określone wejście.

W związku z tym każda funkcja skrótu odporna na kolizje jest również odporna na ataki second-preimage, ponieważ ten ostatni zawsze oznaczałby wystąpienie kolizji. Ale napastnicy mogą nadal przeprowadzić atak wczesny na funkcję odporną na kolizje, ponieważ obejmuje to znalezienie jednego wejścia z jednego wyniku.


Wydobycie

Istnieje wiele kroków w procesie wydobywania Bitcoin, które zawierają funkcje skrótu, takie jak weryfikacja sald, łączenie wejść i wyjść z transakcjami oraz skrót transakcji wewnątrz bloku w celu utworzenia drzewa Merkle. Jednak jednym z głównych powodów, dla których blockchain Bitcoin jest bezpieczny, jest fakt, że górnicy potrzebują niezliczonej liczby skrótów, aby znaleźć ważne rozwiązanie dla następnego bloku.

Konkretnie, górnik musi wypróbować różne różne wejścia podczas tworzenia wartości skrótu dla swojego kandydata na blok. W istocie będą mogli zweryfikować swój blok tylko wtedy, gdy stworzą skrót, który zaczyna się od określonej liczby zer. Liczba zer określa trudność wydobycia i różni się w zależności od przydzielonej stawki haszowania w sieci.

W tym przypadku wskaźnik haszowania reprezentuje ilość mocy obliczeniowej inwestowanej w wydobycie Bitcoin. W przypadku zwiększenia wskaźnika haszowania w sieci protokół Bitcoin automatycznie dostosowuje trudność wydobywania, aby średni czas potrzebny na wydobycie bloku pozostał bliski 10 minut. Z drugiej strony, jeśli wielu górników zdecyduje się na zaprzestanie wydobywania, co spowoduje znaczny spadek wskaźnika haszowania, trudność wydobywania zostanie dostosowana, co ułatwi proces wydobywania (aż średni czas wydobycia bloku wróci do 10 minut).

Należy zauważyć, że górnicy nie muszą znajdować kolizji, ponieważ istnieje wiele skrótów, które mogą generować jako ważne wyjścia (zaczynające się od określonej liczby zer). Dlatego istnieje wiele możliwych rozwiązań dla konkretnego bloku i górnicy nie muszą znajdować jednego z nich zgodnie z początkiem określonym przez trudność wydobywania.

Ponieważ proces wydobywania Bitcoin jest bardzo kosztowny, górnicy nie mają wystarczającego powodu, aby oszukiwać system, ponieważ doprowadziłoby to do dużych strat finansowych. Im więcej górników dołącza do blockchaina, tym staje się on silniejszy.


Zakończenie

Nie ma wątpliwości, że funkcje skrótu są podstawowymi narzędziami w informatyce, zwłaszcza przy przetwarzaniu ogromnych ilości danych. Algorytmy skrótu mogą być wszechstronne, gdy są łączone z kryptografią, co zapewnia bezpieczeństwo i uwierzytelnienie na wiele różnych sposobów. W związku z tym funkcje skrótu kryptograficznego są niezwykle istotne dla niemal wszystkich sieci kryptowalutowych. Dlatego zrozumienie ich właściwości i mechanizmów działania z pewnością jest przydatne dla każdego, kto interesuje się technologią blockchain.