Хеширане е криптографско представяне на набор от информация. Независимо от първоначалния размер (това може да бъде файл от всякакъв формат, с размер от 1 байт или 100 терабайта и повече), а изходът ще бъде низ с фиксирана дължина.
Говорейки за това как работи блокчейнът, на първо място, трябва да говорите за хеш функцията. Биткойн блокчейнът използва алгоритъма за хеширане SHA-256 с 256-битова изходна последователност. Всеки блокчейн се различава от останалите по използвания алгоритъм за криптиране, което води до интересно разнообразие от криптография за отделни решения на блокчейн.
Хеширане на биткойн е преобразуване на масив от данни с всякакъв размер в оригинален низ с фиксирана дължина. За по-лесно разбиране, нека ги наречем Input (входящият масив от данни) и Output (полученият хеш, т.е. низ с фиксирана дължина, който вече беше споменат по-горе). Ето как работи то.
Нека разгледаме един малък пример за това как се осъществява процесът. За да преобразуваме масив от информация в хеш, ще използваме SHA-256 (Secure Hashing Algorithm) алгоритъм за хеширане, който вече беше споменат по-горе:

Както можете да видите, независимо от дължината и размера на входа, изходът винаги произвежда един и същ резултат, който има фиксирана дължина от 256 бита. Това е от решаващо значение, особено когато трябва да се хешират много големи количества информация, като например много транзакции в мрежата Bitcoin или Ethereum.
Успешното прилагане на хеш функцията в блокчейн и криптовалутите се дължи на уникалните й свойства, за които ще говорим в следващия раздел.
Свойства на хеширане
Криптографските хеш функции са специален вид хеш функции, които имат свойства, които правят използването им в криптовалутите безопасно и надеждно.
Свойство 1: Детерминизъм
Това означава, че независимо колко пъти конвертирате Input в Output, изходът винаги ще бъде един и същ. Това свойство на хеш функцията играе много важна роля, тъй като в противен случай би било невъзможно да се проследят първоначалните данни.
Свойство 2: Бързо изчисление
Хеш функцията трябва бързо да върне първоначалните данни. В противен случай системата просто няма да бъде ефективна. Това важи особено за популярните криптовалути, чийто блок включва голям брой транзакции.
Свойство 3: Устойчивост на атака при търсене на изображения
Същността на свойството е следната: ако знаем стойността на H (A), в която A е вход и H (A) е изход, т.е. хеш, тогава намирането на стойността на A е практически неосъществима задача. Тук си струва да се съсредоточим върху думата „неосъществима“, а не върху „невъзможна“. В крайна сметка работата на миньорите доказва, че при определени обстоятелства тази задача става осъществима. Да вземем един бърз пример.
Използвате телефон, който не показва цифри, но техните хешове, генерирани в алгоритъма за хеширане SHA-256. Знаете, че само 7 души знаят вашия номер, чиито номера също знаете. За да разберете от кой абонат сте пропуснали повикване, трябва само да разберете хешовете на тези седем номера и след това да сравните всеки от тях с хеш на номера, който се появява в списъка с пропуснати повиквания.
Този метод за търсене на Input обаче е уместен само при работа с малки количества данни, но когато разполагаме с огромно количество, прилагането му (нарича се „груба сила“) се превръща в много трудна задача. Този математически метод се състои в итерация на всички валидни опции за въвеждане, превръщането им в изход и сравняването им със съществуващия хеш. Трудността да се намери правилното решение директно зависи от количеството първоначална информация.
В случай на използване на метода на грубата сила, има три възможности за развитие на събитията:
- Най-оптимистично е, че имате късмет и ще получите правилния резултат от първия път, но това е почти нереалистично, ако погледнете ситуацията от математическа гледна точка.
- Реалистично – входните данни ще бъдат намерени приблизително след преминаване през половината от всички съществуващи опции.
- Най-негативният – ще намерите оригиналните данни само чрез преобразуване на последната от наличните опции в хеш.
В случая с криптовалутите обаче дори и най-реалистичният вариант е много малко вероятен, тъй като тук говорим за много голям брой възможни опции за въвеждане.
Свойство 4: Устойчивост на сблъсък
Вероятността да се намерят два входа, които биха имали еднакъв изход след преминаване през процеса на хеширане на биткойни, трябва да бъде възможно най-близка до нулата. Теоретично това може да е възможно, но времето, което би било изразходвано за търсене на два еднакви прототипа, трябва да бъде измерено в десетки години. Това свойство е много важно, когато говорим за въпроса за цифровата сигурност в криптовалутите. В криптографията способността да се противопоставя на способността да се търси втори образ е наречена устойчивост на сблъсък.
В този контекст, за да разберем как работи хеширането на биткойни, струва си да споменем явлението „парадокс за рождения ден“. Каква е неговата същност?
На първо място, трябва да се каже, че шансът да срещнете двама непознати, които биха се родили в един и същи ден, е 0,27%. Ако обаче в една и съща стая има 366 души едновременно, тогава шансът поне двама от тях да са родени в един и същи ден се увеличава до 100%. Очевидно е, че колкото повече хора са в една и съща група, толкова по-вероятно е двама души да имат рожден ден в един и същи ден.
Парадоксът за рождения ден се използва в криптографска атака, наречена рождена атака, при която методът на груба сила се използва за намиране на два входа с еднакъв изход. Парадоксът за рождения ден помага за създаването на сблъсък, тъй като грубата сила е по-ефективна с Парадокса за рожден ден, отколкото без него. Въпреки това, в системата за хеширане на биткойни този тип атака е от малка полза, тъй като шансът да се създаде сблъсък е около един на трилион.
Свойство 5: Лавинен ефект
Това свойство в процеса на хеширане на биткойн означава, че извършването дори на незначителни промени в Input води до радикална промяна в Output, т.е. хеш. Нека да разгледаме един прост пример:

Както можете да видите, хешовете на една и съща фраза са коренно различни. И все пак всичко, което направихме, беше просто да променим случая на два знака.
Това свойство на криптографските хеш функции играе една от най-важните (ако не и най-важните) роли за осигуряване на сигурността и надеждността на блокчейна. Всеки блок съдържа хеш на предишния и за да промените данните на един блок, ще трябва да промените данните и на предишния – и така по веригата до първия. Както се досещате, това на практика е неосъществимо
Свойство 6: Висока ентропия
Това свойство означава, че хешовете от масиви от данни трябва да бъдат максимално разпределени в системата по време на хеширане, т.е. имат висока степен на ентропия (ентропия – в компютърните науки това е мярка за несигурността на дадена ситуация).
Нека разгледаме един малък пример. И така, имаме уравнението Y = H (k | x). Така че, ако Y е Output и стойността на k има висок индекс на ентропия, тогава ще бъде почти невъзможно да се намери такава стойност на x (Input), която да задоволи уравнението.
„Висока ентропия“ означава състояние, при което се избира стойност от толкова широка гама от възможни опции, че опитите за отгатване чрез произволен подбор нямат шанс за успех. Например число, което варира от 1 до 10, има ниска степен на ентропия, докато число, което пада между 1 и 2 ^ 256, има висока степен на ентропия.
Ако вземем предвид горното, тогава можем да кажем, че криптографската хеш функция превръща процеса на избор на първоначални данни в игра на рулетка, т.е. шансът да намерите правилния вход трябва да бъде много нисък, но всеки вход винаги трябва да има един и същ изход.