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