Існують різноманітні інновації, які сприяли розвитку технології блокчейн, одним із найважливіших є хешування. Але що таке хешування в блокчейні? Без нього блокчейни були б небезпечними та взагалі непридатними для використання. З його допомогою вони роблять криптовалюту безпечною та надійною.
Якщо ви не хочете отримувати ступінь з комп’ютерних наук і хочете знати тонкощі цього криптографічного примітиву, тоді залишайтеся. Ви побачите, що зрозуміти хешування не так вже й складно.
Слово криптографія походить від грецького слова kriptos, що означає прихований. Це вивчення та застосування методів безпечного спілкування в умовах ворожої діяльності. По суті, це акт кодування повідомлень. Сучасна криптографія орієнтована на комп’ютер, але бере свій початок із давніх часів.
Єгипетські ієрогліфи є чудовим прикладом криптографії. Стародавній Єгипет розробив перші зашифровані повідомлення у вигляді серії невпорядкованих ієрогліфів, щоб перешкодити непосвяченим дізнатися таємниці різних шкіл таємниць. Цей метод шифрування був дуже простим і ґрунтувався на техніці, відомої як проста заміна.
Підозрюючи своїх посланців, римський імператор Юлій Цезар надіслав зашифровані повідомлення своїм генералам. Названий посмертно, Юлій Цезар популяризував шифр Цезаря. Шифр Цезаря також є простою технікою заміни.
Хешування є формою криптографії. Хеш-функція — це будь-яка функція, яка може зіставляти дані довільного розміру зі значеннями фіксованого розміру. Значення, які повертає хеш-функція, називаються хеш-значеннями, хеш-кодами, дайджестами або просто хешами.
Наприклад, візьмемо відкритий текст «Hello World». Використовуючи функцію хешування Ethereum, функцію хешування Keccak-256, ми перетворимо відкритий текст на хеш «592fa743889fc7f92ac2a37bb1f5ba1daf2a5c84741ca0e0061d243a2e6707ba». Відповідно, вихід нагадує адресу Ethereum.
Люди несвідомо стикаються з хешами у своєму повсякденному житті. Ви можете щодня стикатися з хешами, використовуючи паролі. Коли ви створюєте обліковий запис у програмі, постачальник, швидше за все, не зберігає ваш пароль; вони зберігають хеш вашого пароля. Коли ви входите у свій обліковий запис, програма хешує введений вами пароль і порівнює цей хеш із хешем, збереженим у файлі.
Простіше кажучи, не всі функції створюються однаково. Функції хешування повинні задовольняти певним вимогам, щоб функціонувати належним чином. Вони повинні мати такі властивості:
Комп’ютери повинні мати можливість швидко повертати хеш; більшість може обробити хеш-функцію за частки секунди.
Наприклад, використовуючи функцію хешування Keccak-256, ми змінимо повідомлення «Hello World» на «hello World». Це повертає значення «079813c47d3d4ab9abf0c0747f5b5cdf90e0e264ae09ea44fb2509c559b72ac1». Як бачите, наша функція хешування чутлива до регістру та суттєво змінює результат нашого повернутого хешу.
Точне хеш-значення має створюватися кожного разу для даного вхідного значення. Пам’ятайте, що хешування – це спосіб безпечного надсилання повідомлення. Якби це було не так, ви могли б змінити введення на хеш, не знаючи одержувача.
Атака попереднього зображення відбувається, коли відомий результат хешу, а завдання полягає в тому, щоб знайти вхідні дані. Атака попереднього зображення на криптографічну хеш-функцію шукає повідомлення з певним хеш-значенням. Криптографічна хеш-функція має бути стійкою до атак попереднього зображення (набір можливих вхідних даних).
Ви б не хотіли використовувати попереднє зображення (тобто відкритий текст) як пароль у нашому прикладі «Hello World». Як відкритий текст «Hello World» надзвичайно простий і його легко визначити. Існують бази даних, які зберігають записи про відомі вхідні дані навіть для захисту хеш-функцій, наприклад SHA-256.
Очікувана властивість криптографічної хеш-функції, у якій обчислювально неможливо знайти другий прообраз відомого дайджесту повідомлення.
Напевно, надзвичайно важко або неможливо знайти два входи, які дають однаковий результат. Оскільки вхідне значення може мати будь-яку довжину та будь-які символи, можливості для цього значення безмежні. Виходи мають фіксовану довжину і — з цієї причини — фіксовану кількість можливостей.
Таким чином, більш ніж одне вхідне значення може створювати той самий вихід. Якщо стійкість до зіткнень недостатньо сильна, зіткнення можна знайти за допомогою «атаки на день народження». Можливо, ви помітили, що стійкість до другого попереднього зображення та стійкість до зіткнення дуже схожі. Будьте впевнені, що вони окремі і досить прості.
З опором другого попереднього зображення вхід відомий, і зловмисник може знайти другий вхід, який хешує те саме значення. Зі стійкістю до зіткнень обидва вхідні дані невідомі, і зловмисник може знайти обидва вхідні дані з однаковим значенням. Стійкість до зіткнень означає стійкість перед зображенням.
Це атака, яка використовує математику, що лежить в основі теорії ймовірностей. Ви, мабуть, чули про приклад дня народження; Якщо у вас є кімната на 27 осіб, хоча це здається малоймовірним, насправді існує 50% ймовірність того, що дві людини мають однаковий день народження.
Чому це? Імовірність того, що одна людина матиме «правильний» день народження, становить 1/365. Імовірність того, що у другої людини буде той самий день народження, також дорівнює 1/365. Щоб знайти ймовірність того, що обидва мають однаковий день народження, ми повинні помножити їхні ймовірності. Таким чином, якщо у вас є 365 різних днів народження і, отже, 365 можливостей, вам знадобиться квадратний корінь із 365, тобто 23 випадково вибраних людей для 50% шансу, що люди збігаються.
Застосовуючи цю теорію до хешування, ми розуміємо, що технічно; жодна хеш-функція не є безконфліктною, але з нею має пройти багато часу, щоб це сталося!
Загальний хеш-рейт біткойнів: Blockchain.com
Біткойн працює на блокчейні та використовує алгоритм хешування «SHA-256» (Secure Hashing Algorithm 256). Для біткойна хеш-функції використовуються для трьох основних функцій:
Шахтарі змагаються, щоб вирішити головоломку; кожен майнер бере інформацію з блоків, про які він уже знає, хешує їх і створює з них блок. Якщо результат алгоритму менший за цільове число, він вважатиметься дійсним і може бути прийнятий рештою мережі. Потім вони мають право створити наступний блок.
Для додаткової безпеки; кожен блок у блокчейні пов’язаний з попереднім. Це досягається за допомогою хеш-покажчика (змінних, які зберігають адресу іншої змінної). По суті, кожен блок містить результат хешу попереднього блоку в блокчейні. Це гарантує, що історію блокчейна можна легко відстежувати, і виключає можливість додавання шкідливого блоку.
Щоб надсилати або отримувати криптовалюту, вам потрібен приватний і відкритий ключ. Ці два ключі з’єднані один з одним за допомогою хеш-функції. Це важливий компонент, щоб гарантувати, що ніхто не зможе розробити ваш закритий ключ на основі вашого відкритого ключа.
Хеш-функція надає криптовалюті високий рівень безпеки. Хоча, теоретично, ніщо в Інтернеті не застраховано від злому; хеш-функція забезпечує максимальний доступний рівень складності.
Існують різноманітні інновації, які сприяли розвитку технології блокчейн, одним із найважливіших є хешування. Але що таке хешування в блокчейні? Без нього блокчейни були б небезпечними та взагалі непридатними для використання. З його допомогою вони роблять криптовалюту безпечною та надійною.
Якщо ви не хочете отримувати ступінь з комп’ютерних наук і хочете знати тонкощі цього криптографічного примітиву, тоді залишайтеся. Ви побачите, що зрозуміти хешування не так вже й складно.
Слово криптографія походить від грецького слова kriptos, що означає прихований. Це вивчення та застосування методів безпечного спілкування в умовах ворожої діяльності. По суті, це акт кодування повідомлень. Сучасна криптографія орієнтована на комп’ютер, але бере свій початок із давніх часів.
Єгипетські ієрогліфи є чудовим прикладом криптографії. Стародавній Єгипет розробив перші зашифровані повідомлення у вигляді серії невпорядкованих ієрогліфів, щоб перешкодити непосвяченим дізнатися таємниці різних шкіл таємниць. Цей метод шифрування був дуже простим і ґрунтувався на техніці, відомої як проста заміна.
Підозрюючи своїх посланців, римський імператор Юлій Цезар надіслав зашифровані повідомлення своїм генералам. Названий посмертно, Юлій Цезар популяризував шифр Цезаря. Шифр Цезаря також є простою технікою заміни.
Хешування є формою криптографії. Хеш-функція — це будь-яка функція, яка може зіставляти дані довільного розміру зі значеннями фіксованого розміру. Значення, які повертає хеш-функція, називаються хеш-значеннями, хеш-кодами, дайджестами або просто хешами.
Наприклад, візьмемо відкритий текст «Hello World». Використовуючи функцію хешування Ethereum, функцію хешування Keccak-256, ми перетворимо відкритий текст на хеш «592fa743889fc7f92ac2a37bb1f5ba1daf2a5c84741ca0e0061d243a2e6707ba». Відповідно, вихід нагадує адресу Ethereum.
Люди несвідомо стикаються з хешами у своєму повсякденному житті. Ви можете щодня стикатися з хешами, використовуючи паролі. Коли ви створюєте обліковий запис у програмі, постачальник, швидше за все, не зберігає ваш пароль; вони зберігають хеш вашого пароля. Коли ви входите у свій обліковий запис, програма хешує введений вами пароль і порівнює цей хеш із хешем, збереженим у файлі.
Простіше кажучи, не всі функції створюються однаково. Функції хешування повинні задовольняти певним вимогам, щоб функціонувати належним чином. Вони повинні мати такі властивості:
Комп’ютери повинні мати можливість швидко повертати хеш; більшість може обробити хеш-функцію за частки секунди.
Наприклад, використовуючи функцію хешування Keccak-256, ми змінимо повідомлення «Hello World» на «hello World». Це повертає значення «079813c47d3d4ab9abf0c0747f5b5cdf90e0e264ae09ea44fb2509c559b72ac1». Як бачите, наша функція хешування чутлива до регістру та суттєво змінює результат нашого повернутого хешу.
Точне хеш-значення має створюватися кожного разу для даного вхідного значення. Пам’ятайте, що хешування – це спосіб безпечного надсилання повідомлення. Якби це було не так, ви могли б змінити введення на хеш, не знаючи одержувача.
Атака попереднього зображення відбувається, коли відомий результат хешу, а завдання полягає в тому, щоб знайти вхідні дані. Атака попереднього зображення на криптографічну хеш-функцію шукає повідомлення з певним хеш-значенням. Криптографічна хеш-функція має бути стійкою до атак попереднього зображення (набір можливих вхідних даних).
Ви б не хотіли використовувати попереднє зображення (тобто відкритий текст) як пароль у нашому прикладі «Hello World». Як відкритий текст «Hello World» надзвичайно простий і його легко визначити. Існують бази даних, які зберігають записи про відомі вхідні дані навіть для захисту хеш-функцій, наприклад SHA-256.
Очікувана властивість криптографічної хеш-функції, у якій обчислювально неможливо знайти другий прообраз відомого дайджесту повідомлення.
Напевно, надзвичайно важко або неможливо знайти два входи, які дають однаковий результат. Оскільки вхідне значення може мати будь-яку довжину та будь-які символи, можливості для цього значення безмежні. Виходи мають фіксовану довжину і — з цієї причини — фіксовану кількість можливостей.
Таким чином, більш ніж одне вхідне значення може створювати той самий вихід. Якщо стійкість до зіткнень недостатньо сильна, зіткнення можна знайти за допомогою «атаки на день народження». Можливо, ви помітили, що стійкість до другого попереднього зображення та стійкість до зіткнення дуже схожі. Будьте впевнені, що вони окремі і досить прості.
З опором другого попереднього зображення вхід відомий, і зловмисник може знайти другий вхід, який хешує те саме значення. Зі стійкістю до зіткнень обидва вхідні дані невідомі, і зловмисник може знайти обидва вхідні дані з однаковим значенням. Стійкість до зіткнень означає стійкість перед зображенням.
Це атака, яка використовує математику, що лежить в основі теорії ймовірностей. Ви, мабуть, чули про приклад дня народження; Якщо у вас є кімната на 27 осіб, хоча це здається малоймовірним, насправді існує 50% ймовірність того, що дві людини мають однаковий день народження.
Чому це? Імовірність того, що одна людина матиме «правильний» день народження, становить 1/365. Імовірність того, що у другої людини буде той самий день народження, також дорівнює 1/365. Щоб знайти ймовірність того, що обидва мають однаковий день народження, ми повинні помножити їхні ймовірності. Таким чином, якщо у вас є 365 різних днів народження і, отже, 365 можливостей, вам знадобиться квадратний корінь із 365, тобто 23 випадково вибраних людей для 50% шансу, що люди збігаються.
Застосовуючи цю теорію до хешування, ми розуміємо, що технічно; жодна хеш-функція не є безконфліктною, але з нею має пройти багато часу, щоб це сталося!
Загальний хеш-рейт біткойнів: Blockchain.com
Біткойн працює на блокчейні та використовує алгоритм хешування «SHA-256» (Secure Hashing Algorithm 256). Для біткойна хеш-функції використовуються для трьох основних функцій:
Шахтарі змагаються, щоб вирішити головоломку; кожен майнер бере інформацію з блоків, про які він уже знає, хешує їх і створює з них блок. Якщо результат алгоритму менший за цільове число, він вважатиметься дійсним і може бути прийнятий рештою мережі. Потім вони мають право створити наступний блок.
Для додаткової безпеки; кожен блок у блокчейні пов’язаний з попереднім. Це досягається за допомогою хеш-покажчика (змінних, які зберігають адресу іншої змінної). По суті, кожен блок містить результат хешу попереднього блоку в блокчейні. Це гарантує, що історію блокчейна можна легко відстежувати, і виключає можливість додавання шкідливого блоку.
Щоб надсилати або отримувати криптовалюту, вам потрібен приватний і відкритий ключ. Ці два ключі з’єднані один з одним за допомогою хеш-функції. Це важливий компонент, щоб гарантувати, що ніхто не зможе розробити ваш закритий ключ на основі вашого відкритого ключа.
Хеш-функція надає криптовалюті високий рівень безпеки. Хоча, теоретично, ніщо в Інтернеті не застраховано від злому; хеш-функція забезпечує максимальний доступний рівень складності.