24 / 736HASH

Hash

криптографічний відбиток

Короткий цифровий відбиток, який допомагає порівнювати дані та виявляти зміни.

Хеш — результат обчислення над даними, наприклад файлом або транзакцією Bitcoin. Однакові дані й однаковий метод дають однаковий відбиток. Криптографічна функція має ускладнювати пошук інших даних із тим самим результатом або входу для заданого результату. Хеш не є зашифрованою копією даних.

Ви завантажуєте інсталяційний файл. Видавець опублікував контрольний відбиток, а ви тим самим алгоритмом обчислюєте відбиток своєї копії. Якщо вони різняться, дані не однакові: файл міг бути пошкоджений, підмінений або змінений. Збіг із надійним відбитком, навпаки, дає вагомі підстави вважати копію правильною. Не потрібно вручну порівнювати весь файл. Наприклад, SHA-256 створює результат довжиною 256 бітів, зазвичай записаний 64 шістнадцятковими символами, як для короткого повідомлення, так і для великого файла. [1] [3]

Питання в тому, звідки взято контрольний відбиток. Якщо зловмисник замінить на сайті і файл, і його опублікований хеш, вони збігатимуться. Для хешування не потрібен секретний ключ: відбиток відкритих даних може обчислити будь-хто. Тому хеш не дорівнює цифровому підпису, яким власник ключа засвідчує дані. Під час перевірки Bitcoin Core, крім хешу файла, перевіряють підписи списку відбитків і надійність ключів підписувачів. Сам хеш не доводить авторства, безпечності програми чи правдивості документа. [3]

Хешування не має зворотного кроку «розшифрувати». Результат сталої довжини не містить усього файла, тому не є резервною копією. Однак це не означає, що хеш надійно приховує будь-які дані. Для короткого поширеного пароля зловмисник може перебирати ймовірні паролі й порівнювати відбитки. Обертати функцію не потрібно: достатньо вгадати вхід. Сам швидкий хеш не замінює ні сильного пароля, ні методу, призначеного для безпечного зберігання паролів. [1] [5]

У пошуку preimage задано відбиток, і потрібно знайти дані, які його створять. Для колізії достатньо будь-яких двох різних входів з однаковим хешем. Колізії математично існують, оскільки можливих входів більше, ніж результатів сталої довжини. Безпека криптографічної функції полягає в практичній складності їх пошуку, а не в неможливості. До того ж «хеш» не назва єдиного алгоритму: не кожна хеш-функція призначена для криптографічної безпеки. [1]

Bitcoin використовує хеші для ідентифікації транзакцій, з’єднання блоків і перевірки роботи майнерів. Але точний рецепт різниться. Для обчислення хешу заголовка блока SHA-256 застосовують двічі; HASH160 поєднує SHA-256 з RIPEMD-160. Tagged hash додатково розділяє призначення обчислень за допомогою мітки. Для власної перевірки потрібні правильний алгоритм і точні вхідні байти — базові одиниці даних. Текст «61» складається з інших байтів, ніж один байт із шістнадцятковим значенням 61, що відповідає літері a в ASCII. Хешування видимого запису замість самих даних — отже, інше обчислення. [2] [4]

Для повної картини прочитайте також SHA-256, Proof of Work, Block Header, Транзакція, Merkle Tree, Bitcoin. На цю статтю також посилаються SHA-256, Nonce, HTLC, Hashcash.

DOC · 001NIST FIPS 180-4: Secure Hash StandardПервинне джерело DOC · 002Bitcoin Core v29.0: hash constructionsПервинне джерело DOC · 003Bitcoin Core: Verify your downloadПервинне джерело DOC · 004BIP340: tagged hashesПервинне джерело DOC · 005NIST SP800-63B: Password verifiersПервинне джерело
Переглянуто: Спочатку джерела · Не інвестиційна порада