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