Blockchain dla Nie-TechnikówNew Economy

Hashowanie danych



Identyfikacja danych na podstawie ich cyfrowego odcisku palca

Ten krok wyjaśnia jedną z najważniejszych podstawowych technologii blockchain: wartości skrótu. Omawia ważne właściwości kryptograficznych funkcji skrótu i wprowadza wzorce stosowania funkcji skrótu do danych.

Metafora

Odciski palców to odciski palców wszystkich lub dowolnej części palców ludzkiej dłoni. Uważa się, że są w stanie jednoznacznie zidentyfikować ludzi. Zostały wykorzystane do badania przestępstw, identyfikowania przestępców i uwolnieniu niewinnych. Ten krok wprowadza pojęcie identyfikacji danych, które można postrzegać jako cyfrowy odpowiednik odcisków palców. Pojęcie to nazywa się kryptograficzną wartością hash, a blockchain szeroko z niej korzysta. Dlatego zrozumienie szyfrowania kryptograficznego jest obowiązkowe dla zrozumienia łańcucha bloków.

Cel

W rozproszonym systemie peer-to-peer będziesz mieć do czynienia z ogromną liczbą danych transakcyjnych. W rezultacie musisz je jednoznacznie zidentyfikować i porównać je tak szybko i łatwo, jak to możliwe. Dlatego celem jest identyfikacja danych transakcji i ewentualnie wszelkiego rodzaju danych w sposób unikalny na podstawie ich cyfrowych odcisków palców.

Jak to działa

Funkcje skrótu to małe programy komputerowe, które przekształcają dowolny rodzaj danych w pewną liczbę stałych długości, niezależnie od wielkości danych wejściowych. Funkcje skrótu akceptują tylko jeden fragment danych w danym momencie jako dane wejściowe i tworzą wartość skrótu na podstawie bitów i bajtów, które składają się na dane. Wartości skrótu mogą mieć zera wiodące, aby zapewnić wymaganą długość. Istnieje wiele różnych funkcji skrótu, które różnią się między innymi pod względem długości wytwarzanej wartości skrótu. Ważna grupa funkcji skrótu nazywana jest kryptograficznymi funkcjami skrótu, które tworzą cyfrowe odciski palców dla wszelkiego rodzaju danych. Kryptograficzne funkcje skrótu mają następujące właściwości:

•  Szybkie dostarczanie wartości skrótu dla dowolnego rodzaju danych
•  Być deterministycznym
•  Bycie pseudolosowym
•  Będąc funkcjami jednokierunkowymi
•  Odporność na kolizje

Szybkie dostarczanie wartości skrótu dla dowolnych danych

Ta właściwość jest w rzeczywistości kombinacją dwóch właściwości. Po pierwsze, funkcja skrótu jest w stanie obliczyć wartości skrótu dla wszystkich rodzajów danych. Po drugie, funkcja skrótu dokonuje szybkiego obliczenia. Te właściwości są ważne, ponieważ nie chcesz, aby funkcja haszująca generowała bezużyteczne rzeczy, takie jak komunikaty o błędach, ani nie zajmowała dużo czasu na zwrócenie wyników.

Deterministyczna

Deterministyczna oznacza, że funkcja skrótu daje identyczne wartości skrótu dla identycznych danych wejściowych. Oznacza to, że wszelkie zaobserwowane rozbieżności wartości skrótu danych muszą być spowodowane wyłącznie rozbieżnością danych wejściowych, a nie wewnętrznymi funkcjami skrótu.

Pseudolosowa

Bycie pseudolosowym oznacza, że wartość skrótu zwracana przez funkcję skrótu zmienia się nieprzewidywalnie po zmianie danych wejściowych. Nawet jeśli dane wejściowe zostały nieznacznie zmienione, wynikowa wartość skrótu będzie się różnić nieprzewidywalnie. Innymi słowy, wartość skrótu zmienionych danych musi zawsze być niespodzianką. Przewidywanie wartości skrótu na podstawie danych wejściowych nie powinno być możliwe.

Funkcja jednokierunkowa

Funkcja jednokierunkowa nie zapewnia żadnego sposobu śledzenia wartości wejściowych według danych wyjściowych. Dlatego bycie funkcją jednokierunkową oznacza, że nie można jej używać na odwrót. Innymi słowy, niemożliwe jest odzyskanie oryginalnych danych wejściowych na podstawie wartości skrótu. Oznacza to, że wartości skrótu nie mówią nic o zawartości danych wejściowych w taki sam sposób, jak nie izolowany odcisk palca cokolwiek o osobie, której palec ją stworzył. Mówi się również, że funkcje jednokierunkowe są nieodwracalne.

Odporna na kolizje

Funkcja skrótu jest nazywana odporną na kolizję, jeśli bardzo trudno jest znaleźć dwa lub więcej różnych fragmentów danych, dla których daje identyczną wartość skrótu. Innymi słowy, jeśli szansa na otrzymanie identycznej wartości skrótu dla różnych fragmentów danych jest niewielka, funkcja skrótu jest odporna na kolizje. W takim przypadku można uznać wartości skrótu utworzone przez funkcję skrótu za unikalne, a zatem przydatne do identyfikacji danych. Jeśli uzyskasz identyczną wartość skrótu dla różnych danych, możesz spotkać się z kolizją skrótu. Zderzenie mieszające jest cyfrowym odpowiednikiem posiadania dwóch osób z identycznymi odciskami palców. Odporność na zderzenia jest obowiązkowa, aby wartości skrótu były użyteczne jako cyfrowe odciski palców. Jak wewnętrznie działają funkcje skrótu odporne na kolizję, wykracza poza zakres tego tekstu, ale możesz być pewien, że włożono wiele wysiłku w zmniejszenie ich ryzyka wywołania kolizji

Wzory danych mieszających

Do tej pory nauczyłeś się, że dane można wykorzystać jako dane wejściowe dla funkcji skrótu, co z kolei daje wartość skrótu tych danych. Oznacza to, że każdy niezależny kawałek danych ma swoją unikalną wartość kryptograficzną. Ale co byś zrobił, gdyby poproszono Cię o podanie jednej wartości skrótu dla szeregu niezależnych danych? Pamiętaj, że funkcje skrótu akceptują tylko jeden kawałek danych w danym momencie. Nie ma funkcji skrótu, która akceptuje naraz kilka niezależnych danych, ale w rzeczywistości często potrzebujemy jednej wartości skrótu dla dużego zbioru danych. W szczególności struktura danych blockchain musi poradzić sobie z wieloma danymi transakcji jednocześnie i wymaga jednej wartości skrótu dla wszystkich. Jak sobie radzisz z tym zadaniem? Odpowiedzią jest zastosowanie jednego z następujących wzorców przy stosowaniu funkcji skrótu do danych:

•  Niezależne haszowanie
•  Powtarzające się haszowanie
•  Połączone mieszanie
•  Hashowanie sekwencyjne
•  Hierarchiczne mieszanie

Niezależne mieszanie

Niezależne haszowanie oznacza zastosowanie funkcji haszującej do każdej części danych niezależnie. Rysunek poniższy ilustruje tę koncepcję, obliczając osobno skróconą wartość skrótu dwóch różnych słów.



Białe pola, które zawierają słowo, reprezentują dane, które mają być mieszane, a szare kółka pokazują odpowiednie wartości skrótu. Strzałki wskazujące pola i okręgi schematycznie ilustrują przekształcenie danych w wartości skrótu. Jak widać powyżej, różne słowa dają różne wartości skrótu.

Powtarzane hashowanie

Nauczyłeś się, że funkcje skrótu przekształcają dowolne dane w wartość skrótu. Sama wartość skrótu może być uważana za kawałek danych. Dlatego powinno być możliwe podanie wartości skrótu jako danych wejściowych do funkcji skrótu i obliczenie jej wartości skrótu. I to w rzeczywistości działa! Powtarzane haszowanie to wielokrotne stosowanie funkcji haszującej do własnego wyniku. Rysunek ilustruje tę koncepcję poprzez wielokrotne obliczanie skróconej wartości skrótu.



Tekst Hello World! zwraca wartość skrótu 7F83B165, co z kolei daje skróconą wartość skrótu 45A47BE7.

Połączone mieszanie

Celem połączonego mieszania jest uzyskanie jednej wartości skrótu dla więcej niż jednej części danych za jednym razem. Łączenie wszystkich niezależnych danych w jedną całość i późniejsze obliczanie jej wartości skrótu to sposób na osiągnięcie tego. Jest to szczególnie przydatne, jeśli chcesz utworzyć jedną wartość skrótu dla zbioru danych, który jest dostępny w danym momencie. Ponieważ łączenie danych kosztuje moc obliczeniową, czas i miejsce w pamięci, połączonego mieszania należy używać tylko wtedy, gdy poszczególne fragmenty danych są małe. Kolejną wadą połączonego mieszania jest to, że wartości mieszania poszczególnych elementów danych nie są dostępne, ponieważ tylko połączone dane są przekazywane do funkcji mieszania. Rysunek poniżej przedstawia koncepcję mieszania mieszanego.



Poszczególne słowa są najpierw łączone w jedno słowo z odstępem między nimi, a następnie powstałe wyrażenie jest mieszane. Wynikowa wartość skrótu pokazana na rysunku jest w konsekwencji identyczna z pierwszą wartością skrótu na rysunku wcześniejeszego. Zauważ, że wartość skrótu połączonych danych w sposób krytyczny zależy od sposobu połączenia danych. Na rysunku wcześniejszym oba słowa zostały połączone, pisząc je obok siebie ze spacją między nimi, co w rezultacie daje Hello World! Czasami określone symbole, takie jak znak plus (+) lub znak hashtag (#) są używane do oznaczenia punktu, w którym dane są połączone, co w rezultacie wpływa na wynikową wartość skrótu.

Hashowanie sekwencyjne

Celem mieszania sekwencyjnego jest przyrostowa aktualizacja wartości skrótu w miarę nadchodzenia nowych danych. Uzyskuje się to poprzez jednoczesne stosowanie powtarzanego mieszania. Istniejąca wartość skrótu jest łączona z nowymi danymi, a następnie przekazywana do funkcji skrótu w celu uzyskania zaktualizowanej wartości skrótu. Haszowanie sekwencyjne jest szczególnie przydatne, jeśli chcesz zachować jedną wartość skrótu w czasie i zaktualizować ją, gdy tylko pojawią się nowe dane. Zaletą tego rodzaju mieszania jest to, że w danym momencie masz wartość skrótu, której ewolucję można prześledzić aż do pojawienia się nowych danych. Rycina 10-6 ilustruje koncepcję haszowania sekwencyjnego, zaczynając od haszowania słowa Hello indywidualnie, co daje skróconą wartość skrótu 185F8DB3.



Kiedyś nowe dane reprezentowane przez słowo Świat! przybywa, jest on łączony z istniejącą wartością skrótu i dostarczany jako dane wejściowe do funkcji skrótu. Wartość skrótu 5795A986 jest skróconą wartością skrótu tekstu wejściowego Świat! 185F8DB3.

Hierarchiczne mieszanie

Rysunek ilustruje pojęcie haszowania hierarchicznego



Zastosowanie połączonego skrótu do pary wartości skrótu tworzy małą hierarchię wartości skrótu z pojedynczą wartością na górze. Podobnie jak hashowanie łączone, hashowanie hierarchiczne polega na utworzeniu jednej wartości skrótu dla zbioru danych. Hierarchiczne mieszanie jest bardziej wydajne, ponieważ łączy wartości skrótu, które zawsze mają stały rozmiar zamiast oryginalnych danych, które mogą mieć dowolny rozmiar. Dodatkowo, hashowanie hierarchiczne łączy tylko dwie wartości skrótu na każdym kroku, a połączone hashowanie łączy tyle danych, ile Ty zapewnisz za jednym razem.

Perspektywy

Ten krok został poświęcony koncepcji funkcji skrótu.

PODSUMOWANIE

* Funkcje skrótu przekształcają dowolny rodzaj danych w pewną liczbę o stałej długości, niezależnie od wielkości danych wejściowych.
* Istnieje wiele różnych funkcji skrótu, które różnią się między innymi pod względem długości wytwarzanej wartości skrótu.
* Kryptograficzne funkcje skrótu są ważną grupą funkcji skrótu, które tworzą cyfrowe odciski palców dla wszelkiego rodzaju danych.
* Kryptograficzne funkcje skrótu mają następujące właściwości:

-Podaj szybko wartości skrótu dla dowolnego rodzaju danych
-Deterministyczny
-Pseudorandom
-Użycie w jedną stronę
-Odporny na kolizje

* Zastosowanie funkcji skrótu do danych można osiągnąć, stosując następujące wzorce:

-Powtarzające się haszowanie
-Niezależne haszowanie
-Połączone haszowanie
- Równoważny skrót
-Hierarchiczne mieszanie