24 / 736HASH

Hash

odcisk kryptograficzny

Krótki cyfrowy odcisk, który pozwala porównywać dane i wykrywać ich zmiany.

Hash to wynik obliczenia na danych, na przykład pliku lub transakcji Bitcoina. Te same dane i ta sama metoda dają ten sam odcisk. Funkcja kryptograficzna ma utrudniać znalezienie innych danych o tym samym wyniku albo wejścia pasującego do zadanego wyniku. Hash nie jest zaszyfrowaną kopią danych.

Pobierasz instalator. Wydawca opublikował jego odcisk kontrolny, a Ty tym samym algorytmem obliczasz odcisk pobranej kopii. Jeśli się różnią, dane nie są identyczne: plik mógł zostać uszkodzony, podmieniony lub zmieniony. Zgodność z wiarygodnym odciskiem daje natomiast dużą pewność, że masz właściwą kopię. Nie musisz ręcznie porównywać całego pliku. SHA-256 tworzy na przykład wynik o długości 256 bitów, zwykle zapisany jako 64 znaki szesnastkowe, zarówno dla krótkiej wiadomości, jak i dużego pliku. [1] [3]

Ważne jest pochodzenie odcisku odniesienia. Jeśli napastnik podmieni na stronie i plik, i opublikowany hash, będą do siebie pasować. Do obliczenia hasha nie potrzeba tajnego klucza; dla publicznych danych może to zrobić każdy. To odróżnia hash od podpisu cyfrowego, którym posiadacz klucza potwierdza dane. Przy weryfikacji Bitcoin Core sprawdza się nie tylko hash pliku, ale też podpisy listy odcisków oraz wiarygodność kluczy podpisujących. Sam hash nie dowodzi autorstwa, bezpieczeństwa programu ani prawdziwości dokumentu. [3]

Haszowanie nie ma odwrotnego kroku „odszyfruj”. Wynik stałej długości nie zawiera całego pliku, więc nie służy do tworzenia kopii zapasowej. Nie oznacza to jednak, że bezpiecznie ukrywa każde dane. Gdy ktoś haszuje krótkie, popularne hasło, napastnik może sprawdzać prawdopodobne hasła i porównywać ich odciski. Nie musi odwracać funkcji: wystarczy zgadnąć wejście. Sam szybki hash nie zastępuje zatem silnego hasła ani metody przeznaczonej do bezpiecznego przechowywania haseł. [1] [5]

W poszukiwaniu preimage masz zadany odcisk i szukasz danych, które go wytworzą. Przy kolizji wystarczą dowolne dwa różne wejścia o tym samym hashu. Kolizje istnieją matematycznie, ponieważ możliwych wejść jest więcej niż wyników o stałej długości. Bezpieczeństwo funkcji kryptograficznej polega na praktycznej trudności ich znalezienia, a nie na ich niemożliwości. Słowo „hash” nie oznacza też jednego algorytmu: nie każda funkcja haszująca jest przeznaczona do zastosowań kryptograficznych. [1]

Bitcoin używa hashy do identyfikacji transakcji, łączenia bloków i sprawdzania pracy górników. Dokładny przepis bywa jednak różny. Hash nagłówka bloku oblicza się, stosując SHA-256 dwukrotnie; HASH160 łączy SHA-256 z RIPEMD-160. Tagged hash dodatkowo rozdziela zastosowania obliczenia za pomocą znacznika. Samodzielna weryfikacja wymaga właściwego algorytmu i dokładnych bajtów wejścia, czyli podstawowych jednostek danych. Tekst „61” składa się z innych bajtów niż pojedynczy bajt o wartości szesnastkowej 61, odpowiadający literze a w ASCII. Haszowanie wyświetlonego zapisu zamiast danych jest więc innym obliczeniem. [2] [4]

Pełniejszy obraz uzyskasz, czytając to hasło razem z SHA-256, Proof of Work, Block Header, Transakcja, Merkle Tree, Bitcoin. Do tego hasła prowadzą również odsyłacze z SHA-256, Nonce, HTLC, Hashcash.

DOC · 001NIST FIPS 180-4: Secure Hash StandardŹródło pierwotne DOC · 002Bitcoin Core v29.0: hash constructionsŹródło pierwotne DOC · 003Bitcoin Core: Verify your downloadŹródło pierwotne DOC · 004BIP340: tagged hashesŹródło pierwotne DOC · 005NIST SP800-63B: Password verifiersŹródło pierwotne
Zaktualizowano: Najpierw źródła · To nie jest porada inwestycyjna