Хешування – це процес, який перетворює дані будь-якого розміру в рядок фіксованої довжини. Ця процедура виконується за допомогою математичних формул, відомих як хеш-функції, реалізованих у вигляді алгоритмів.
Хоча не всі функції хешування залучають криптографію, так звані криптографічні функції хешування є важливими у світі криптовалют. Завдяки їм блокчейни та інші децентралізовані системи досягають високих рівнів цілісності та безпеки даних.
Функції хеш, як звичайні, так і криптографічні, є детермінованими. Це означає, що, поки вхід не змінюється, алгоритм завжди буде виробляти один і той же вихід (, також званий дайджестом або хешем ).
Загалом, алгоритми хешування в криптовалютах розроблені як односторонні функції, що означає, що їх важко легко скасувати без значної кількості часу та обчислювальних ресурсів. Іншими словами, відносно просто згенерувати вихідні дані з вхідних, але надзвичайно складно зробити навпаки. Загалом, чим важче знайти оригінальний вхід, тим безпечнішим вважається алгоритм хешування.
Робота хеш-функції
Різні функції хешу генерують результати різних розмірів, але можливі розміри виходу для кожного алгоритму хешу завжди постійні. Наприклад, алгоритм SHA-256 може виробляти лише результати розміром 256 біт, тоді як SHA-1 завжди генеруватиме дайджест обсягом 160 біт.
Щоб проілюструвати, давайте пропустимо слова "Gate" і "Gate" через алгоритм хеш SHA-256 (, який використовується в Bitcoin ).
Зверніть увагу, що мінімальна зміна (великої літери на початку) призвела до зовсім іншого значення хешу. Однак, використовуючи SHA-256, виходи завжди матимуть фіксований розмір 256 біт (або 64 символи), незалежно від розміру вхідних даних. Крім того, не має значення, скільки разів ми будемо виконувати ці два слова через алгоритм, обидва виходи залишаться незмінними.
На відміну від цього, якщо ми пропустимо ті ж самі вхідні дані через алгоритм хеш SHA-1, ми отримаємо такі результати:
ША-1
Вхід
Вихід (160 біт)
Гейт
3a7bd3e2360a3d29eea436fcfb7e44c735d117c4
Гейт
5df9954f1ca26eabf18c663cc9258ba7f7712c45
Важливо згадати, що 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 є безпечним, полягає в тому, що майнерам потрібно виконати велику кількість операцій хешування, щоб зрештою знайти дійсне рішення для наступного блоку.
Конкретно, майнер повинен перевірити кілька різних входів, створюючи значення хеш для свого кандидатного блоку. По суті, вони зможуть підтвердити свій блок лише якщо згенерують вихідний хеш, який починається з певної кількості нулів. Кількість нулів визначає складність майнінгу і варіюється залежно від швидкості хешування, присвяченої мережі.
У цьому контексті хеш-ставка представляє собою, скільки обчислювальної потужності витрачається на майнінг Біткоїна. Якщо хеш-ставка мережі зростає, протокол Біткоїн автоматично налаштує складність видобутку, щоб середній час, необхідний для видобутку блоку, залишався близьким до 10 хвилин. Навпаки, якщо кілька майнерів вирішать припинити майнінг, що призведе до значного падіння хеш-ставки, складність видобутку буде знижена, що полегшить видобуток (, поки середній час блоку знову не повернеться до 10 хвилин).
Важливо підкреслити, що майнери не повинні знаходити колізії, оскільки є кілька хешів, які можуть бути згенеровані як дійсний вихід (, починаючи з певної кількості нулів ). Отже, існує кілька можливих рішень для певного блоку, і майнери повинні знайти лише одне з них, відповідно до порогу, визначеного складністю видобутку.
Оскільки майнінг біткоїнів є витратним завданням, майнери не мають причин обманювати систему, оскільки це призвело б до суттєвих фінансових втрат. Чим більше майнерів приєднується до блокчейну, тим більшим і сильнішим він стає.
Остаточні роздуми
Безсумнівно, хеш-функції є основними інструментами в інформатиці, особливо коли йдеться про великі обсяги даних. Коли їх поєднують з криптографією, алгоритми хеш можуть бути досить універсальними та забезпечують безпеку і автентифікацію різними способами. Як такі, криптографічні хеш-функції є життєво важливими для майже всіх мереж криптовалют, тому розуміння їх властивостей та механізмів роботи безсумнівно корисне для будь-кого, хто цікавиться технологією блокчейн.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Хеш: Основоположне поняття в криптографії та блокчейні
Хешування – це процес, який перетворює дані будь-якого розміру в рядок фіксованої довжини. Ця процедура виконується за допомогою математичних формул, відомих як хеш-функції, реалізованих у вигляді алгоритмів.
Хоча не всі функції хешування залучають криптографію, так звані криптографічні функції хешування є важливими у світі криптовалют. Завдяки їм блокчейни та інші децентралізовані системи досягають високих рівнів цілісності та безпеки даних.
Функції хеш, як звичайні, так і криптографічні, є детермінованими. Це означає, що, поки вхід не змінюється, алгоритм завжди буде виробляти один і той же вихід (, також званий дайджестом або хешем ).
Загалом, алгоритми хешування в криптовалютах розроблені як односторонні функції, що означає, що їх важко легко скасувати без значної кількості часу та обчислювальних ресурсів. Іншими словами, відносно просто згенерувати вихідні дані з вхідних, але надзвичайно складно зробити навпаки. Загалом, чим важче знайти оригінальний вхід, тим безпечнішим вважається алгоритм хешування.
Робота хеш-функції
Різні функції хешу генерують результати різних розмірів, але можливі розміри виходу для кожного алгоритму хешу завжди постійні. Наприклад, алгоритм SHA-256 може виробляти лише результати розміром 256 біт, тоді як SHA-1 завжди генеруватиме дайджест обсягом 160 біт.
Щоб проілюструвати, давайте пропустимо слова "Gate" і "Gate" через алгоритм хеш SHA-256 (, який використовується в Bitcoin ).
ША-256
Вхід
Вихід (256 біт)
Гейт
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Гейт
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
Зверніть увагу, що мінімальна зміна (великої літери на початку) призвела до зовсім іншого значення хешу. Однак, використовуючи SHA-256, виходи завжди матимуть фіксований розмір 256 біт (або 64 символи), незалежно від розміру вхідних даних. Крім того, не має значення, скільки разів ми будемо виконувати ці два слова через алгоритм, обидва виходи залишаться незмінними.
На відміну від цього, якщо ми пропустимо ті ж самі вхідні дані через алгоритм хеш SHA-1, ми отримаємо такі результати:
ША-1
Вхід
Вихід (160 біт)
Гейт
3a7bd3e2360a3d29eea436fcfb7e44c735d117c4
Гейт
5df9954f1ca26eabf18c663cc9258ba7f7712c45
Важливо згадати, що 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 є безпечним, полягає в тому, що майнерам потрібно виконати велику кількість операцій хешування, щоб зрештою знайти дійсне рішення для наступного блоку.
Конкретно, майнер повинен перевірити кілька різних входів, створюючи значення хеш для свого кандидатного блоку. По суті, вони зможуть підтвердити свій блок лише якщо згенерують вихідний хеш, який починається з певної кількості нулів. Кількість нулів визначає складність майнінгу і варіюється залежно від швидкості хешування, присвяченої мережі.
У цьому контексті хеш-ставка представляє собою, скільки обчислювальної потужності витрачається на майнінг Біткоїна. Якщо хеш-ставка мережі зростає, протокол Біткоїн автоматично налаштує складність видобутку, щоб середній час, необхідний для видобутку блоку, залишався близьким до 10 хвилин. Навпаки, якщо кілька майнерів вирішать припинити майнінг, що призведе до значного падіння хеш-ставки, складність видобутку буде знижена, що полегшить видобуток (, поки середній час блоку знову не повернеться до 10 хвилин).
Важливо підкреслити, що майнери не повинні знаходити колізії, оскільки є кілька хешів, які можуть бути згенеровані як дійсний вихід (, починаючи з певної кількості нулів ). Отже, існує кілька можливих рішень для певного блоку, і майнери повинні знайти лише одне з них, відповідно до порогу, визначеного складністю видобутку.
Оскільки майнінг біткоїнів є витратним завданням, майнери не мають причин обманювати систему, оскільки це призвело б до суттєвих фінансових втрат. Чим більше майнерів приєднується до блокчейну, тим більшим і сильнішим він стає.
Остаточні роздуми
Безсумнівно, хеш-функції є основними інструментами в інформатиці, особливо коли йдеться про великі обсяги даних. Коли їх поєднують з криптографією, алгоритми хеш можуть бути досить універсальними та забезпечують безпеку і автентифікацію різними способами. Як такі, криптографічні хеш-функції є життєво важливими для майже всіх мереж криптовалют, тому розуміння їх властивостей та механізмів роботи безсумнівно корисне для будь-кого, хто цікавиться технологією блокчейн.