Przejdź do treści
Słownikpodstawybezpieczenstwobitcoinethereum

Funkcja skrótu

Funkcja skrótu, po angielsku hash function, to algorytm zamieniający dane wejściowe na krótki wynik o stałej długości, nazywany hashem albo skrótem.

Czym jest funkcja skrótu

Funkcja skrótu przyjmuje dane dowolnej długości i zwraca wynik o stałej długości. Ten wynik nazywa się hashem albo skrótem.

Ten sam input zawsze daje ten sam hash. Nawet minimalna zmiana danych wejściowych powinna dać zupełnie inny wynik.

Dobra kryptograficzna funkcja skrótu działa jednokierunkowo: łatwo policzyć hash z danych, ale praktycznie nie da się odtworzyć danych z samego hasha.

Gdzie używa się hashy

Bloki
Hash bloku pozwala powiązać blok z poprzednim i wykryć zmianę historii.
Transakcje
Hash transakcji działa jako jej identyfikator w explorerach i portfelach.
Merkle tree
Drzewa Merkle używają hashy do sprawdzania, czy dane należą do większego zbioru.
Proof of work
Minerzy szukają hasha spełniającego reguły trudności.
Podpisy
Podpisy często obejmują hash danych, a nie surowe dane w pełnej formie.

Hash to nie szyfrowanie

Szyfrowanie zakłada możliwość odszyfrowania danych przy użyciu klucza. Hashowanie nie działa w ten sposób.

Hash jest skrótem obliczonym z danych. Nie istnieje normalny proces „odszyfrowania” hasha do oryginalnego inputu.

Dlatego hashe są użyteczne do wykrywania zmian i identyfikowania danych, a nie do ukrywania informacji w taki sam sposób jak szyfrowanie.

Najczęstsze błędne założenia

  • Hasha nie da się po prostu odszyfrować.
  • Nie każda funkcja skrótu nadaje się do zastosowań kryptograficznych.
  • Hash identyfikuje dane, ale nie mówi, czy dane są prawdziwe w sensie ekonomicznym albo prawnym.
  • Podobne dane wejściowe nie dają podobnych hashy w dobrej funkcji kryptograficznej.

Hash pomaga wykryć manipulację

Jeśli ktoś zmieni dane transakcji albo bloku, hash też się zmieni. Dzięki temu blockchain może tanio wykrywać naruszenie historii.

Najczęstsze pytania

Nie. Adres może powstawać z użyciem funkcji skrótu, ale sam adres i hash danych to różne pojęcia.

W praktyce nie, jeśli użyto dobrej funkcji kryptograficznej i dane mają wystarczającą entropię.

Nie w każdym miejscu. Bitcoin mocno opiera się na SHA-256, a Ethereum używa m.in. Keccak-256.