Хешування є основним процесом у сфері криптовалют, який перетворює дані будь-якого розміру на результати фіксованої довжини. Цей процес здійснюється за допомогою математичних формул, відомих як функції хеш, реалізованих у вигляді алгоритмів.
Хоча не всі функції хешу залучають криптографію, так звані криптографічні функції хешу є суттєвими в екосистемі криптовалют. Завдяки їм блокчейни та інші децентралізовані системи досягають значних рівнів цілісності та безпеки даних.
Функції хешу, як звичайні, так і криптографічні, є детерміністичними. Це означає, що, поки вхідні дані не змінюються, алгоритм хешу завжди буде генерувати один і той же результат, також відомий як дайджест або хеш.
Алгоритми хешування, що використовуються в криптовалютах, зазвичай проектуються як односторонні функції, що означає, що їх не можна скасувати без значної кількості часу та обчислювальних ресурсів. Іншими словами, відносно легко згенерувати вихідні дані з вхідних даних, але вкрай важко зробити навпаки. Загалом, чим складніше знайти вхідні дані, тим безпечнішим вважається алгоритм хешування.
Робота функції хеш
Різні функції хешу виробляють результати різної довжини, але можливі розміри виходу кожного алгоритму хешу завжди постійні. Наприклад, алгоритм SHA-256 може генерувати лише результати розміром 256 біт, тоді як SHA-1 завжди вироблятиме дайджест на 160 біт.
Щоб проілюструвати це, давайте пропустимо слова "Gate" і "Gate" через алгоритм хешування SHA-256 (, що використовується в Bitcoin ).
Зверніть увагу, що невелика зміна (першої великої літери) призвела до зовсім іншого значення хешу. Однак, оскільки ми використовуємо SHA-256, виходи завжди матимуть фіксований розмір 256 біт (або 64 символи) незалежно від розміру вхідних даних. Крім того, не має значення, скільки разів ми запустимо два слова через алгоритм, обидва виходи залишаться постійними.
Якщо ми пропустимо однакові введення через алгоритм хеш SHA-1, ми отримаємо наступні результати:
ША-1
Вхід
Вихід (160 біт)
Гейт
96a296d224f285c67bee93c30f8a309157f0daa7
Гейт
5f42c325eef7e85610308428b407748b77d8c98e
Цікаво відзначити, що SHA означає Secure Hash Algorithms (Алгоритми безпечного хешування). Це набір криптографічних хеш-функцій, який включає алгоритми SHA-0 і SHA-1, а також сім'ї SHA-2 і SHA-3. SHA-256 є частиною сім'ї SHA-2, разом з SHA-512 та іншими варіантами. Наразі лише сім'ї SHA-2 і SHA-3 вважаються безпечними.
Важливість цієї технології
Звичайні хеш-функції мають широкий спектр застосувань, включаючи пошук у базах даних, аналіз великих файлів та управління інформацією. З іншого боку, криптографічні хеш-функції широко використовуються в додатках безпеки інформації, таких як автентифікація повідомлень та генерація відбитків. У контексті Bitcoin криптографічні хеш-функції є невід'ємною частиною процесу видобутку та також відіграють важливу роль у генерації нових адрес і ключів.
Справжній потенціал хешування розкривається при роботі з великими обсягами інформації. Наприклад, можна запустити великий файл або набір даних через функцію хеш і потім використовувати його результати для швидкої перевірки точності та цілісності даних. Це можливо завдяки детерміністичній природі функцій хеш: вхід завжди виробляє стиснуту та спрощену виходу (хеш). Цей метод усуває необхідність зберігати та "запам'ятовувати" великі обсяги даних.
Хешування є особливо корисним у контексті технології блокчейн. Блокчейн Біткойна залучає безліч операцій, пов'язаних із хешуванням, більшість з яких виконуються під час процесу видобутку. Насправді, майже всі протоколи криптовалют залежать від хешування для зв'язування та групування транзакцій у блоки та для створення криптографічних зв'язків між кожним блоком, формуючи таким чином ланцюг блоків.
Криптографічні хеш-функції
Функцію хешу, яка використовує криптографічні техніки, можна визначити як криптографічну хеш-функцію. Загалом, для розшифрування криптографічної хеш-функції потрібно численні спроби методом перебору. Щоб "повернути" криптографічну хеш-функцію, необхідно вибрати входи методом проб і помилок, поки не буде отримано підходящий вихід. Однак також існує ймовірність того, що різні входи можуть давати один і той же результат, у такому випадку виникає "колізія".
Технічно, криптографічна функція хешування повинна відповідати трьом властивостям, щоб вважатися безпечною. Ми можемо описати їх як: стійкість до колізій, стійкість до прообразу та стійкість до другого прообразу.
Перед тим, як описати кожну властивість, підсумуймо її логіку в трьох коротких реченнях:
Стійкість до колізій: неможливість знайти два різні входи, які виробляють той же хеш.
Стійкість до преобразування: неспроможність "відновити" функцію хеш ( знайти вхід на основі даного виходу ).
Стійкість до другої преобрази: неможливість знайти другий вхід, який має той же хеш, що і перший.
Стійкість до колізій
Як вже згадувалося раніше, колізія виникає, коли різні вхідні дані виробляють один і той же хеш. Функція хешу вважається стійкою до колізій, поки хтось не виявить таку колізію. Важливо зазначити, що завжди існуватимуть колізії для будь-якої функції хешу через нескінченну кількість входів і скінченну кількість виходів.
Отже, функція хешування є стійкою до колізій, коли ймовірність виявлення колізії така низька, що потребувала б мільйони років обчислень. З цієї причини, хоча не існує жодної функції хешування, вільної від колізій, деякі з них є настільки надійними, що можуть вважатися стабільними (наприклад, SHA-256).
Серед різних алгоритмів SHA, сімейства SHA-0 та SHA-1 більше не вважаються безпечними, оскільки були виявлені колізії. Наразі лише сімейства SHA-2 та SHA-3 вважаються стійкими до колізій.
Опір до передзображення
Ця властивість тісно пов'язана з концепцією односторонніх функцій. Хеш-функція вважається стійкою до передображення, якщо існує дуже низька ймовірність того, що хтось зможе знайти вхідні дані, використовуючи згенерований вихід.
Зверніть увагу, що ця властивість відрізняється від попередньої, оскільки зловмисник повинен вгадати вхідні дані на основі конкретного виходу. Колізія, навпаки, відбувається, коли хтось знаходить два різні входи, які виробляють один і той же вихід, незалежно від того, який конкретний вхід було використано.
Властивість стійкості до попереднього зображення є цінною для безпеки даних, оскільки простий хеш повідомлення може підтвердити його автентичність без необхідності розкривати додаткову інформацію. На практиці багато постачальників послуг та веб-додатків зберігають і використовують хеші, згенеровані на основі паролів, замість того, щоб використовувати їх у вигляді простого тексту.
Опір до другої преображення
Цей тип стійкості знаходиться між двома попередніми властивостями. Атака другого преподання полягає в знаходженні конкретного входу, з яким можливо згенерувати вихід, що вже був отриманий за допомогою іншого відомого входу.
Іншими словами, атака другої преображення передбачає виявлення колізій, але замість того, щоб знайти два випадкові входи, які генерують один і той же хеш, атака має на меті знайти вхід, який може відтворити хеш, який вже був згенерований іншою вхідною інформацією.
Отже, будь-яка функція хешу, яка є стійкою до колізій, також є стійкою до атаки другого прообразу, оскільки остання завжди вимагає колізії. Однак все ще можливо здійснити атаку на прообраз у функції, стійкій до колізій, оскільки це передбачає пошук входу для заданого виходу.
Майнінг
Існує безліч етапів у майнінгу Bitcoin, які виконуються за допомогою функцій хеш. До них належать перевірка балансів, зв'язування входів та виходів транзакцій, а також об'єднання всіх транзакцій в один блок для формування дерева Меркла. Але однією з основних причин, чому блокчейн Bitcoin є безпечним, є те, що майнери повинні виконувати якомога більше операцій хеш для того, щоб зрештою знайти правильне рішення для наступного блоку.
Майнер повинен використовувати різні входи для генерації хешу для свого кандидатного блоку. Блок може бути підтверджений лише якщо вихід, що генерується у формі хешу, починається з певної кількості нулів. Кількість нулів визначає складність майнінгу і варіюється в залежності від хешрейту мережі.
У цьому контексті хешрейт є мірою обчислювальної потужності, що інвестується в майнінг Bitcoin. Якщо хешрейт почне зростати, протокол Bitcoin автоматично налаштує складність майнінгу так, щоб середній час, необхідний для видобутку блоку, становив приблизно 10 хвилин. Якщо кілька майнерів вирішать припинити майнінг, що призведе до значного зниження хешрейту, складність видобутку буде налаштована, щоб тимчасово полегшити обчислення (, поки середній час формування блоків знову не повернеться до 10 хвилин ).
Важливо зазначити, що майнерам не потрібно шукати колізії, оскільки існує кілька хешів, які можуть генеруватися як дійсний вихід (, починаючи з певної кількості нулів). Отже, існує кілька можливих рішень для певного блоку, і майнерам потрібно знайти лише одне з них, відповідно до порогу, визначеного складністю майнінгу.
Оскільки майнінг Bitcoin є витратним процесом, у майнерів немає стимулів обманювати систему, оскільки це призведе до суттєвих фінансових втрат. Відповідно, чим більше майнерів приєднається до блокчейн, тим більшим і надійнішим він стане.
Висновок
Безсумнівно, що функції хеш є одним із основних інструментів в інформатиці, особливо при роботі з великими обсягами даних. Коли їх поєднують з криптографією, алгоритми хеш виявляються надзвичайно корисними, оскільки забезпечують безпеку та аутентифікацію різними способами. Тому криптографічні функції хеш є життєво важливими для майже всіх мереж криптовалют, і розуміння їх властивостей та механізмів роботи безумовно є цінним для будь-якої особи, яка цікавиться технологією блокчейн.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Сила хешування у світі криптовалют
Хешування є основним процесом у сфері криптовалют, який перетворює дані будь-якого розміру на результати фіксованої довжини. Цей процес здійснюється за допомогою математичних формул, відомих як функції хеш, реалізованих у вигляді алгоритмів.
Хоча не всі функції хешу залучають криптографію, так звані криптографічні функції хешу є суттєвими в екосистемі криптовалют. Завдяки їм блокчейни та інші децентралізовані системи досягають значних рівнів цілісності та безпеки даних.
Функції хешу, як звичайні, так і криптографічні, є детерміністичними. Це означає, що, поки вхідні дані не змінюються, алгоритм хешу завжди буде генерувати один і той же результат, також відомий як дайджест або хеш.
Алгоритми хешування, що використовуються в криптовалютах, зазвичай проектуються як односторонні функції, що означає, що їх не можна скасувати без значної кількості часу та обчислювальних ресурсів. Іншими словами, відносно легко згенерувати вихідні дані з вхідних даних, але вкрай важко зробити навпаки. Загалом, чим складніше знайти вхідні дані, тим безпечнішим вважається алгоритм хешування.
Робота функції хеш
Різні функції хешу виробляють результати різної довжини, але можливі розміри виходу кожного алгоритму хешу завжди постійні. Наприклад, алгоритм SHA-256 може генерувати лише результати розміром 256 біт, тоді як SHA-1 завжди вироблятиме дайджест на 160 біт.
Щоб проілюструвати це, давайте пропустимо слова "Gate" і "Gate" через алгоритм хешування SHA-256 (, що використовується в Bitcoin ).
ША-256
Вхід
Вихід (256 біт)
Гейт
7f98b5c76e1f90c0e51e5947eae545f3b6f4b4736c774c504d7e6741f5070861
Гейт
e77b9a9ae9e30b0dbdb6f510a264ef9de781501d7b6b92ae89eb059c5ab743a0
Зверніть увагу, що невелика зміна (першої великої літери) призвела до зовсім іншого значення хешу. Однак, оскільки ми використовуємо SHA-256, виходи завжди матимуть фіксований розмір 256 біт (або 64 символи) незалежно від розміру вхідних даних. Крім того, не має значення, скільки разів ми запустимо два слова через алгоритм, обидва виходи залишаться постійними.
Якщо ми пропустимо однакові введення через алгоритм хеш SHA-1, ми отримаємо наступні результати:
ША-1
Вхід
Вихід (160 біт)
Гейт
96a296d224f285c67bee93c30f8a309157f0daa7
Гейт
5f42c325eef7e85610308428b407748b77d8c98e
Цікаво відзначити, що SHA означає Secure Hash Algorithms (Алгоритми безпечного хешування). Це набір криптографічних хеш-функцій, який включає алгоритми SHA-0 і SHA-1, а також сім'ї SHA-2 і SHA-3. SHA-256 є частиною сім'ї SHA-2, разом з SHA-512 та іншими варіантами. Наразі лише сім'ї SHA-2 і SHA-3 вважаються безпечними.
Важливість цієї технології
Звичайні хеш-функції мають широкий спектр застосувань, включаючи пошук у базах даних, аналіз великих файлів та управління інформацією. З іншого боку, криптографічні хеш-функції широко використовуються в додатках безпеки інформації, таких як автентифікація повідомлень та генерація відбитків. У контексті Bitcoin криптографічні хеш-функції є невід'ємною частиною процесу видобутку та також відіграють важливу роль у генерації нових адрес і ключів.
Справжній потенціал хешування розкривається при роботі з великими обсягами інформації. Наприклад, можна запустити великий файл або набір даних через функцію хеш і потім використовувати його результати для швидкої перевірки точності та цілісності даних. Це можливо завдяки детерміністичній природі функцій хеш: вхід завжди виробляє стиснуту та спрощену виходу (хеш). Цей метод усуває необхідність зберігати та "запам'ятовувати" великі обсяги даних.
Хешування є особливо корисним у контексті технології блокчейн. Блокчейн Біткойна залучає безліч операцій, пов'язаних із хешуванням, більшість з яких виконуються під час процесу видобутку. Насправді, майже всі протоколи криптовалют залежать від хешування для зв'язування та групування транзакцій у блоки та для створення криптографічних зв'язків між кожним блоком, формуючи таким чином ланцюг блоків.
Криптографічні хеш-функції
Функцію хешу, яка використовує криптографічні техніки, можна визначити як криптографічну хеш-функцію. Загалом, для розшифрування криптографічної хеш-функції потрібно численні спроби методом перебору. Щоб "повернути" криптографічну хеш-функцію, необхідно вибрати входи методом проб і помилок, поки не буде отримано підходящий вихід. Однак також існує ймовірність того, що різні входи можуть давати один і той же результат, у такому випадку виникає "колізія".
Технічно, криптографічна функція хешування повинна відповідати трьом властивостям, щоб вважатися безпечною. Ми можемо описати їх як: стійкість до колізій, стійкість до прообразу та стійкість до другого прообразу.
Перед тим, як описати кожну властивість, підсумуймо її логіку в трьох коротких реченнях:
Стійкість до колізій: неможливість знайти два різні входи, які виробляють той же хеш.
Стійкість до преобразування: неспроможність "відновити" функцію хеш ( знайти вхід на основі даного виходу ).
Стійкість до другої преобрази: неможливість знайти другий вхід, який має той же хеш, що і перший.
Стійкість до колізій
Як вже згадувалося раніше, колізія виникає, коли різні вхідні дані виробляють один і той же хеш. Функція хешу вважається стійкою до колізій, поки хтось не виявить таку колізію. Важливо зазначити, що завжди існуватимуть колізії для будь-якої функції хешу через нескінченну кількість входів і скінченну кількість виходів.
Отже, функція хешування є стійкою до колізій, коли ймовірність виявлення колізії така низька, що потребувала б мільйони років обчислень. З цієї причини, хоча не існує жодної функції хешування, вільної від колізій, деякі з них є настільки надійними, що можуть вважатися стабільними (наприклад, SHA-256).
Серед різних алгоритмів SHA, сімейства SHA-0 та SHA-1 більше не вважаються безпечними, оскільки були виявлені колізії. Наразі лише сімейства SHA-2 та SHA-3 вважаються стійкими до колізій.
Опір до передзображення
Ця властивість тісно пов'язана з концепцією односторонніх функцій. Хеш-функція вважається стійкою до передображення, якщо існує дуже низька ймовірність того, що хтось зможе знайти вхідні дані, використовуючи згенерований вихід.
Зверніть увагу, що ця властивість відрізняється від попередньої, оскільки зловмисник повинен вгадати вхідні дані на основі конкретного виходу. Колізія, навпаки, відбувається, коли хтось знаходить два різні входи, які виробляють один і той же вихід, незалежно від того, який конкретний вхід було використано.
Властивість стійкості до попереднього зображення є цінною для безпеки даних, оскільки простий хеш повідомлення може підтвердити його автентичність без необхідності розкривати додаткову інформацію. На практиці багато постачальників послуг та веб-додатків зберігають і використовують хеші, згенеровані на основі паролів, замість того, щоб використовувати їх у вигляді простого тексту.
Опір до другої преображення
Цей тип стійкості знаходиться між двома попередніми властивостями. Атака другого преподання полягає в знаходженні конкретного входу, з яким можливо згенерувати вихід, що вже був отриманий за допомогою іншого відомого входу.
Іншими словами, атака другої преображення передбачає виявлення колізій, але замість того, щоб знайти два випадкові входи, які генерують один і той же хеш, атака має на меті знайти вхід, який може відтворити хеш, який вже був згенерований іншою вхідною інформацією.
Отже, будь-яка функція хешу, яка є стійкою до колізій, також є стійкою до атаки другого прообразу, оскільки остання завжди вимагає колізії. Однак все ще можливо здійснити атаку на прообраз у функції, стійкій до колізій, оскільки це передбачає пошук входу для заданого виходу.
Майнінг
Існує безліч етапів у майнінгу Bitcoin, які виконуються за допомогою функцій хеш. До них належать перевірка балансів, зв'язування входів та виходів транзакцій, а також об'єднання всіх транзакцій в один блок для формування дерева Меркла. Але однією з основних причин, чому блокчейн Bitcoin є безпечним, є те, що майнери повинні виконувати якомога більше операцій хеш для того, щоб зрештою знайти правильне рішення для наступного блоку.
Майнер повинен використовувати різні входи для генерації хешу для свого кандидатного блоку. Блок може бути підтверджений лише якщо вихід, що генерується у формі хешу, починається з певної кількості нулів. Кількість нулів визначає складність майнінгу і варіюється в залежності від хешрейту мережі.
У цьому контексті хешрейт є мірою обчислювальної потужності, що інвестується в майнінг Bitcoin. Якщо хешрейт почне зростати, протокол Bitcoin автоматично налаштує складність майнінгу так, щоб середній час, необхідний для видобутку блоку, становив приблизно 10 хвилин. Якщо кілька майнерів вирішать припинити майнінг, що призведе до значного зниження хешрейту, складність видобутку буде налаштована, щоб тимчасово полегшити обчислення (, поки середній час формування блоків знову не повернеться до 10 хвилин ).
Важливо зазначити, що майнерам не потрібно шукати колізії, оскільки існує кілька хешів, які можуть генеруватися як дійсний вихід (, починаючи з певної кількості нулів). Отже, існує кілька можливих рішень для певного блоку, і майнерам потрібно знайти лише одне з них, відповідно до порогу, визначеного складністю майнінгу.
Оскільки майнінг Bitcoin є витратним процесом, у майнерів немає стимулів обманювати систему, оскільки це призведе до суттєвих фінансових втрат. Відповідно, чим більше майнерів приєднається до блокчейн, тим більшим і надійнішим він стане.
Висновок
Безсумнівно, що функції хеш є одним із основних інструментів в інформатиці, особливо при роботі з великими обсягами даних. Коли їх поєднують з криптографією, алгоритми хеш виявляються надзвичайно корисними, оскільки забезпечують безпеку та аутентифікацію різними способами. Тому криптографічні функції хеш є життєво важливими для майже всіх мереж криптовалют, і розуміння їх властивостей та механізмів роботи безумовно є цінним для будь-якої особи, яка цікавиться технологією блокчейн.