Czym jest Hash? Kryptograficzny Silnik Bitcoina
Czym jest Hash?
Słowo "hash" pochodzi od angielskiego czasownika "to hash," oznaczającego siekanie lub rozdrabnianie czegoś na kawałki. To trafny opis. Funkcja hashująca przyjmuje dowolne wejście, czy to słowo, zdanie, zapis transakcji czy cały plik, i przekształca je w ciąg znaków o stałej długości. Ten wynik nazywa się hashem lub wartością hash.
Niezależnie od tego, jak duże lub małe jest wejście, wynik ma zawsze dokładnie tę samą długość. Uruchom SHA-256 na pojedynczym znaku lub na dokumencie liczącym 500 stron, a wynik zawsze będzie ciągiem 64 znaków.
Oto jak to wygląda w praktyce:
bitcoin → 6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b
Bitcoin → b4056df6691f8dc72e56302ddad345d65fead3ead9299609a826e2344eb63aa4
bitcoin! → 9f5b4fe16c6f4970dc17d6db04e76e6dc2d2e0b834fcdbb27b73f1c3c5bb0e65
Zmiana pierwszej litery z małej na dużą lub dodanie pojedynczego wykrzyknika daje zupełnie inny wynik. Nie ma żadnego widocznego związku między tymi dwoma wynikami. To zachowanie nie jest wadą. Jest to jedna z najważniejszych właściwości bezpieczeństwa, jakie może posiadać funkcja hashująca.
The Avalanche Effect
A single character change transforms the entire hash. There is no pattern between input and output.
Jak Działa Funkcja Hashująca
Funkcja hashująca to maszyna jednostronna. Dane wchodzą, hash wychodzi. Procesu nie można odwrócić. Nie istnieje żaden wzór, który bierze hash i odzyskuje oryginalne wejście.
Jedynym sposobem, aby dowiedzieć się, które wejście dało określony hash, jest próbowanie wejść jedno po drugim, aż pojawi się dopasowanie. Takie podejście nazywa się brute-force. Dla SHA-256 liczba możliwych wyników wynosi 2^256. Liczba ta jest większa niż szacowana liczba atomów w obserwowalnym wszechświecie. Wyczerpujące przeszukiwanie nie jest wykonalne przy użyciu żadnej technologii istniejącej dziś ani tej, którą badacze uznają za realistyczną w przewidywalnej przyszłości.
W kryptografii właściwość ta nazywa się odpornością na preobraz. To właśnie dlatego hashe mogą być używane jako wiarygodne odciski cyfrowe.
Pięć Właściwości Skrótu Kryptograficznego
Aby funkcja hashująca była użyteczna w systemach krytycznych dla bezpieczeństwa, takich jak Bitcoin, musi spełniać pięć wymagań.
Deterministyczna. To samo wejście zawsze daje ten sam wynik. Bez wyjątków. Jeśli dziś obliczysz hash słowa "blockchain" i zrobisz to ponownie za dziesięć lat używając SHA-256, za każdym razem otrzymasz ten sam wynik.
Wydajna. Funkcja musi obliczać szybko. Bitcoin przetwarza tysiące transakcji na blok i hashuje je wszystkie. Szybkość ma znaczenie.
Jednostronna. Mając wynik hash, musi być obliczeniowo niewykonalne znalezienie wejścia, które go wygenerowało. To właściwość sprawiająca, że hashe są przydatne do zabezpieczania danych.
Odporna na kolizje. Dwa różne wejścia nie mogą dawać tego samego wyniku hash. Gdy tak się dzieje, nazywa się to kolizją hash. Kolizja w kontekście krytycznym dla bezpieczeństwa oznacza, że algorytm jest skompromitowany i nie może już być uznawany za wiarygodny.
Efekt lawinowy. Mała zmiana wejścia musi powodować dużą, nieprzewidywalną zmianę wyjścia. Zapewnia to, że podobnych wejść nie można używać do przybliżania lub odgadywania hasha.
In reality, SHA-256 has never produced a known collision. This diagram shows what a collision would look like if it occurred.
Kolizje Hash
Kolizja hash występuje, gdy dwa różne wejścia dają ten sam wynik hash.
Weźmy pod uwagę dwóch użytkowników, Nakamoto i Finney, którzy każdy przesyłają inną transakcję. Gdyby ich dwa wejścia w jakiś sposób dały ten sam hash, sieć nie miałaby możliwości odróżnienia transakcji. Byłoby to krytyczne niepowodzenie.
Dla SHA-256 nigdy nie znaleziono żadnej kolizji. Starsze algorytmy, w tym SHA-1 i MD5, mają udokumentowane luki związane z kolizjami i nie są już uważane za bezpieczne do użytku kryptograficznego. SHA-256 został zaprojektowany ze znacznie solidniejszymi podstawami matematycznymi i pozostaje odporny na kolizje w 2026 roku.
SHA-256: Algorytm Używany przez Bitcoin
Bitcoin używa SHA-256, co oznacza Secure Hash Algorithm z długością wyjścia 256 bitów. Został opracowany przez Agencję Bezpieczeństwa Narodowego Stanów Zjednoczonych i ustandaryzowany przez National Institute of Standards and Technology w 2001 roku jako część rodziny SHA-2.
Inne elementy rodziny SHA-2 obejmują SHA-224, SHA-384 i SHA-512. Liczba w nazwie wskazuje długość wyjścia w bitach. SHA-256 generuje 256 bitów, reprezentowanych jako 64-znakowy ciąg szesnastkowy używający cyfr od 0 do 9 i liter od a do f.
Bitcoin stosuje SHA-256 dwukrotnie w wielu częściach protokołu, praktyka znana jako podwójny SHA-256 lub SHA-256d. Drugi krok hashowania dodaje ochronę przed pewnymi teoretycznymi słabościami w hashowaniu jednorundowym, chociaż sam SHA-256 nie wymagał tej obrony w praktyce.
Jak Hashe Sprawiają, że Bitcoin Działa
Hashe nie są technicznym detalem działającym cicho w tle. Są mechanizmem nadającym Bitcoinowi jego najbardziej fundamentalne właściwości: odporność na manipulacje, zdecentralizowany konsensus i weryfikowalną historię transakcji. Pojawiają się w trzech krytycznych punktach protokołu.
Górnictwo i Dowód Pracy
Gdy górnicy rywalizują o dodanie następnego bloku do blockchainu, rozwiązują zagadkę hashującą bez skrótów.
Protokół Bitcoin wymaga, aby prawidłowy nagłówek bloku, po zahashowaniu przy użyciu SHA-256, dawał wynik zaczynający się od określonej liczby zer wiodących. Im więcej zer jest wymaganych, tym trudniejsza jest zagadka. Ten próg jest ustalany przez korektę trudności, która ponownie kalibruje się co 2016 bloków, mniej więcej co dwa tygodnie, aby utrzymać średni czas bloku blisko dziesięciu minut niezależnie od całkowitej mocy obliczeniowej aktywnej w sieci.
Dane transakcji wewnątrz bloku są stałe. Górnicy nie mogą ich zmieniać. Jedyną zmienną, którą kontrolują, jest mała liczba w nagłówku bloku zwana nonce, skrót od "number used once." Górnicy przebiegają przez miliardy wartości nonce na sekundę, za każdym razem hashują nagłówek bloku i sprawdzają, czy wynik jest poniżej bieżącego celu. Gdy jeden górnik znajdzie prawidłowy hash, rozgłasza blok do sieci i zbiera nagrodę za blok.
Ten proces nazywa się Dowodem Pracy. Prawidłowy hash jest dowodem. Jego wytworzenie wymagało prawdziwego wysiłku obliczeniowego i nie ma możliwości sfałszowania go ani pominięcia pracy.
Całkowita liczba prób hashowania wykonywanych przez sieć Bitcoin na sekundę nazywa się hashrate. W 2026 roku zbiorczy hashrate Bitcoina utrzymuje się na poziomie setek eksahaszów na sekundę, co oznacza setki kwintylionów obliczeń każdej sekundy.
Łańcuch: Łączenie Bloków
Każdy blok Bitcoina przechowuje hash bloku, który go poprzedza. To właśnie przekształca sekwencję bloków w prawdziwy łańcuch.
Jeśli ktoś próbuje zmienić transakcję w starszym bloku, hash tego bloku się zmienia. Ale następny blok zawiera oryginalny hash. Łańcuch ma teraz przerwę. Każdy blok po zmienionym jest nieważny.
Aby pomyślnie przepisać historię, atakujący musiałby ponownie wykopać zmieniony blok i każdy kolejny blok szybciej niż uczciwa sieć kontynuuje budowanie w przód. Przy obecnym hashrate Bitcoina wymagałoby to kontrolowania ponad połowy całej mocy górniczej na świecie jednocześnie. To jest podstawa modelu ataku 51%. Przy obecnej skali Bitcoina taki atak kosztowałby więcej niż mógłby kiedykolwiek zyskać.
Drzewa Merkle i Integralność Transakcji
Wewnątrz każdego bloku transakcje są zorganizowane przy użyciu struktury zwanej drzewem Merkle, nazwanej od informatyka Ralpha Merkle'a.
Każda transakcja jest najpierw hashowana indywidualnie. Następnie pary hashów transakcji są łączone i hashowane razem. Ten proces powtarza się, aż na szczycie drzewa pozostanie tylko jeden hash. Ten ostatni hash nazywa się korzeniem Merkle.
Korzeń Merkle jest przechowywany w nagłówku bloku. Funkcjonuje jako kompaktowy kryptograficzny odcisk cyfrowy dla każdej transakcji w bloku. Jeśli jakakolwiek pojedyncza transakcja zostanie zmieniona, korzeń Merkle się zmienia, co zmienia hash bloku, co przerywa łańcuch.
Struktura drzewa Merkle umożliwia również wydajną weryfikację. Lekki węzeł Bitcoin może potwierdzić, że określona transakcja jest zawarta w bloku bez pobierania każdej innej transakcji w tym bloku. Ta możliwość nazywa się Uproszczoną Weryfikacją Płatności lub SPV i została opisana przez Satoshi Nakamoto w oryginalnym dokumencie Bitcoin.
Hashe i Adresy Bitcoin
Gdy portfel Bitcoin generuje adres z klucza publicznego, wykonuje dwie funkcje hashujące w sekwencji: najpierw SHA-256, następnie RIPEMD-160. Wynikiem jest twój adres Bitcoin.
Oznacza to, że twój adres jest hashem hasha twojego klucza publicznego, a nie samym kluczem publicznym. Nawet jeśli w przyszłości odkryto by słabość w kryptografii krzywych eliptycznych, atakujący nadal musiałby odwrócić dwie warstwy hashowania, aby połączyć twój adres z twoim podstawowym kluczem publicznym. Na dzień dzisiejszy jest to obliczeniowo niewykonalne.
Hashe i Obliczenia Kwantowe
Komputery kwantowe są zaprojektowane do rozwiązywania pewnych problemów matematycznych znacznie szybciej niż komputery klasyczne. Rodzi to uzasadnione pytanie o długoterminowe bezpieczeństwo.
Szczególne obawy dotyczące SHA-256 koncentrują się na algorytmie zwanym algorytmem Grovera. Na wystarczająco mocnym komputerze kwantowym algorytm Grovera mógłby przeszukiwać wyniki hashów znacznie szybciej niż brute-force na klasycznym sprzęcie. W praktyce zmniejszyłoby to skuteczne bezpieczeństwo SHA-256 z 256 bitów do około 128 bitów.
Poziom bezpieczeństwa 128 bitów jest nadal uważany za mocny według konwencjonalnych standardów. Dla porównania, większość infrastruktury bankowej używa dziś 128-bitowego szyfrowania symetrycznego.
Pilniejsze zagrożenie kwantowe dla Bitcoina nie dotyczy wcale SHA-256. Dotyczy kryptografii krzywych eliptycznych używanej do generowania kluczy publicznych i prywatnych. Komputer kwantowy uruchamiający algorytm Shora mógłby teoretycznie wyprowadzić klucz prywatny z klucza publicznego, co jest problemem, który nie dotyczy SHA-256 w ten sam sposób.
Żaden komputer kwantowy zdolny do przeprowadzenia któregokolwiek z ataków na wymaganą skalę nie istnieje obecnie. Społeczność deweloperów Bitcoina śledzi rozwój badań nad obliczeniami kwantowymi i omówiła potencjalne aktualizacje protokołu, w tym schematy podpisów post-kwantowych, jako środek awaryjny. Każda taka zmiana wymagałaby szerokiego konsensusu w sieci, jak wszystkie zmiany protokołu Bitcoin.
Podsumowanie
Hash to kryptograficzny odcisk cyfrowy o stałej długości generowany z dowolnych danych wejściowych. SHA-256, algorytm leżący u podstaw Bitcoina, jest deterministyczny, wydajny, jednostronny, odporny na kolizje i generuje wyniki, które zmieniają się całkowicie przy najmniejszej zmianie wejścia.
W Bitcoinie hashe pełnią trzy zasadnicze role: napędzają proces górnictwa Dowód Pracy, łączą każdy blok z poprzednim, tworząc łańcuch odporny na manipulacje, i organizują transakcje wewnątrz bloków za pomocą drzew Merkle. Hashe dodają również warstwę ochronną do adresów Bitcoin, umieszczając się między kluczem publicznym a adresem widocznym w sieci.
Bez funkcji hashujących fundamentalne właściwości Bitcoina, takie jak niezmienialność, zdecentralizowany konsensus i weryfikowalna historia transakcji, nie byłyby możliwe.
Kluczowe Fakty
SHA-256 generuje wynik o długości 64 znaków niezależnie od rozmiaru wejścia, czy to jednej litery, czy całego tekstu książki.
Liczba możliwych wyników SHA-256 wynosi 2^256, co jest liczbą większą niż szacowana liczba atomów w obserwowalnym wszechświecie.
Jeśli nawet jeden znak wejścia ulegnie zmianie, wynikowy hash zmienia się całkowicie. Nazywa się to efektem lawinowym.
Górnicy Bitcoina wykonują wspólnie biliony obliczeń hashowych na sekundę, aby znaleźć następny ważny blok.
Każdy blok Bitcoina zawiera hash poprzedniego bloku, co sprawia, że łańcuch jest odporny na manipulacje.
Często zadawane pytania
Hash to ciąg znaków o stałej długości wytworzony przez przetworzenie dowolnych danych przez funkcję matematyczną. Niezależnie od rozmiaru wejścia, wynik ma zawsze tę samą długość. To samo wejście zawsze daje ten sam wynik i praktycznie niemożliwe jest odwrócenie tego procesu.
SHA-256 jest uważany za bezpieczny, ponieważ atak brute-force wymagałby astronomicznej liczby prób, aby znaleźć określone wejście dla danego wyjścia. Żaden komputer na Ziemi nie zbliża się do tego poziomu mocy obliczeniowej, co sprawia, że SHA-256 jest praktycznie niemożliwy do złamania przy użyciu obecnej technologii.
Efekt lawinowy oznacza, że nawet najmniejsza zmiana wejścia powoduje całkowicie inny wynik hash. Nie ma żadnego widocznego związku między oryginalnym a nowym hashem. Zmiana jednej litery z małej na dużą wystarczy, aby całkowicie przekształcić wynik.
Teoretycznie wystarczająco mocny komputer kwantowy mógłby użyć algorytmu Grovera, aby zmniejszyć skuteczne bezpieczeństwo SHA-256 z 256 bitów do około 128 bitów. To nadal byłoby uważane za bezpieczne według większości standardów. Społeczność deweloperów Bitcoina monitoruje to zagrożenie i ma możliwość aktualizacji protokołu, jeśli zajdzie taka potrzeba.
Kolizja hash występuje, gdy dwa różne wejścia dają ten sam wynik hash. W przypadku bezpiecznych algorytmów, takich jak SHA-256, celowe znalezienie kolizji jest uważane za obliczeniowo niewykonalne. Gdyby kiedykolwiek znaleziono kolizję w SHA-256, algorytm zostałby uznany za skompromitowany i musiałby zostać zastąpiony.
Źródła
- 1.Antonopoulos, Andreas M.: Mastering Bitcoin. O'Reilly Media, 2017
- 2.NIST: Secure Hash Standard (SHS), FIPS PUB 180-4
- 3.Nakamoto, Satoshi: Bitcoin: A Peer-to-Peer Electronic Cash System
- 4.Blocktrainer: Was ist ein Hash?
- 5.Bernstein, Daniel J. / Lange, Tanja: Post-quantum cryptography. Nature, 2017
To nie jest porada finansowa. CanoeBit publikuje wyłącznie treści edukacyjne. Nic tutaj nie stanowi rekomendacji kupna, sprzedaży ani trzymania jakiegokolwiek aktywa.
Kontynuuj ścieżkę Jak działa Bitcoin
Krok 3 z 11