Словник

Криптографічна хеш-функція

Moderate

Криптографічні хеш-функції створюють хеш-значення фіксованого розміру з вхідних даних транзакції змінного розміру.

Що таке криптографічна хеш-функція?

Криптографічна хеш-функція (cryptographic hash function) - це алгоритм, тобто повторювана послідовність певних дій, які можна використовувати для перетворення довільного рядка даних змінної довжини у рядок фіксованої довжини та формату, який називається хеш.

Одним із найпростіших прикладів хеш-функції є додавання цифр у числі, доки не залишиться однозначне виведення. Якщо, наприклад, введено 49, то додавання 4 і 9 дає 13, чиї цифри 1 і 3 потім знову підсумовуються, щоб отримати на виході 4. Незалежно від довжини вхідного числа, вихід завжди буде однозначним числом.

Однак, це не дуже хороший алгоритм, тому що для правильного виконання своїх функцій, хеш-функція повинна мати кілька характеристик:

  • Має бути легко обчислити вихід для будь-якого даного входу, але майже неможливо звернути процес і обчислити вхід відомого результату;
  • Детермінізм (determinism) — введення певних вхідних даних в алгоритм завжди повинно давати однаковий результат;
  • Стійкість до зіткнення (collision resistance) — малоймовірно, що два різні входи дадуть однаковий результат;
  • Ефект лавини (avalanche effect) — зміна навіть одного біта даних у вхідних даних має призвести до кардинально іншого результату.

Хеш-функції застосовуються у багатьох випадках використання, наприклад, як контрольні суми для перевірки цілісності комп’ютерних файлів після їх передачі протягом тривалого зберігання або у функціях рандомізації.

Вони також є ключовим компонентом у майнінгу криптовалют із proof-of-work, таких як Bitcoin (BTC), який використовує хеш-функцію SHA-256. Щоб додати новий блок до блокчейну і отримати нагороду за щойно видобутий Bitcoin, майнерам спочатку потрібно створити хеш-значення, яке є нижчим за певне порогове значення, яке називається цільовим (target).

Той факт, що хеші є псевдовипадковими, і неможливо передбачити результат будь-якого введення, перш ніж фактично запустити його через хеш-функцію, гарантує, що майнери не можуть надрукувати нові Bitcoin з повітря, і їм потрібно довести роботу, яку вони виконали.