Що таке хеш?

Хешування стосується процесу генерації виходу фіксованого розміру з вхідних даних змінного розміру. Це здійснюється за допомогою математичних формул, відомих як хеш-функції (, реалізовані як алгоритми хешування ).

Хоча не всі функції хешу залучають криптографію, так звані криптографічні функції хешу є фундаментальними у світі крипто. Завдяки їм блокчейни та інші розподілені системи досягають значних рівнів цілісності та безпеки даних, що особисто я вважаю захоплюючим.

Звичайні та криптографічні функції хешу є детермінованими. Це означає, що, поки вхідні дані не змінюються, алгоритм завжди буде генерувати той самий вихід (, також відомий як підсумок або хеш ). Мені здається неймовірним, як щось таке складне може бути таким передбачуваним.

Хеш-алгоритми в криптовалютах розроблені як односторонні функції, що означає, що їх не можна легко звернути без величезних обчислювальних ресурсів. Досить просто створити вихідні дані з вхідних, але майже неможливо зробити навпаки. Загалом, чим складніше знайти вхідні дані, тим безпечнішим вважається алгоритм. І повірте мені, деякі з цих алгоритмів практично непроникні.

Як працює функція хеш?

Різні функції хешу виробляють виходи різного розміру, але розміри виходу для кожного алгоритму завжди сталі. Наприклад, SHA-256 може виробляти тільки виходи розміром 256 біт, тоді як SHA-1 завжди генеруватиме резюме розміром 160 біт.

Щоб проілюструвати це, давайте пропустимо слова "Binance" та "binance" через алгоритм SHA-256 (, що використовується в Bitcoin).

ША-256 Вхід: Binance Вихід: f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

Вхід: binance Вихід: 59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2

¿Ви бачите, як невелика зміна (першої літери в верхньому регістрі) призводить до зовсім іншого хешу? Мене вражає ця чутливість. Але використовуючи SHA-256, виходи завжди матимуть фіксований розмір 256 біт (64 символи) незалежно від розміру вхідних даних.

З іншого боку, якщо ми виконаємо ті ж самі вхідні дані за допомогою SHA-1, ми отримаємо:

ША-1 Вхід: Binance Вихід: 7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

Вхід: binance Вихід: e58605c14a76ff98679322cca0eae7b3c4e08936

SHA означає Secure Hash Algorithms, що відноситься до набору криптографічних хеш-функцій, які включають SHA-0, SHA-1, SHA-2 та SHA-3. SHA-256 належить до групи SHA-2. Наразі лише SHA-2 та SHA-3 вважаються безпечними, що змушує мене сумніватися, чому деякі системи все ще використовують старіші алгоритми.

Чому вони важливі?

Звичайні хеш-функції мають безліч застосувань: пошук в базах даних, аналіз великих файлів та управління даними. Криптографічні хеш-функції широко використовуються в комп'ютерній безпеці, автентифікації повідомлень та цифровій ідентифікації. У Bitcoin вони є важливими для майнінгу та генерації адрес і ключів.

Справжня сила хешування проявляється з великими обсягами інформації. Ви можете пропустити величезний файл через хеш-функцію і використовувати його вихід, щоб швидко перевірити точність та цілісність даних. Це усуває необхідність зберігати та "пам'ятати" великі обсяги інформації, що я вважаю блискучим у своїй простоті.

Хешинг особливо корисний у блокчейні. Ланцюг Bitcoin має численні операції, що залучають хешинг, насамперед у майнінгу. Майже всі криптопротоколи залежать від хешингу для зв'язування транзакцій у блоках і створення криптографічних зв'язків між ними, ефективно формуючи блокчейн.

Криптографічні хеш-функції

Хеш-функція, яка реалізує криптографічні техніки, може бути визначена як криптографічна хеш-функція. Зламати одну з цих функцій вимагає безкінечних спроб перебору. Щоб "відновити" криптографічну хеш-функцію, комусь потрібно було б вгадати вхідні дані шляхом проб і помилок, поки не буде отримано відповідний вихід. Однак існує ймовірність того, що різні вхідні дані можуть дати точно такий же вихід, викликавши "колізію".

Технічно, криптографічна функція хеш повинна відповідати трьом властивостям, щоб вважатися безпечною:

  • Стійкість до колізій: неможливо знайти два різних входи, які б виробляли один і той же хеш
  • Опір до попереднього зображення: неможливо "повернути" хеш-функцію
  • Стійкість до другої передобразу: неможливо знайти інший вхід, що колізує з конкретним входом

Стійкість до колізій

Колізія відбувається, коли різні вхідні дані виробляють точно такий же хеш. Хеш-функція вважається стійкою до колізій, поки хтось не знайде одну. Колізії завжди будуть існувати для будь-якої хеш-функції, оскільки можливих вхідних даних безліч, тоді як виходи скінченні.

Хеш-функція є стійкою до колізій, коли ймовірність знайти колізію така низька, що вимагала б мільйони років обчислень. SHA-0 та SHA-1 більше не є безпечними, оскільки були знайдені колізії. Наразі SHA-2 та SHA-3 вважаються стійкими до колізій.

Стійкість до пре-образу

Ця властивість пов'язана з концепцією односторонніх функцій. Хеш-функція є стійкою до попереднього зображення, коли ймовірність того, що хтось знайде вхід, який згенерував конкретний вихід, є дуже малою.

Ця властивість є цінною для захисту даних, оскільки простий хеш може довести автентичність повідомлення, не розкриваючи інформацію. Багато веб-постачальників зберігають хеші паролів замість паролів у відкритому тексті, що, на мою думку, повинні робити всі.

Стійкість до другої пре-образу

Атака другого преображення відбувається, коли хтось знаходить конкретний вхід, який генерує той самий вихід, що й інший відомий вхід. Це передбачає знаходження колізії, але шляхом пошуку входу, який генерує той самий хеш, що й інший конкретний вхід.

Будь-яка функція хеш, яка стійка до колізій, також стійка до атак другого переднього зображення. Однак все ще можливо здійснити атаку на переднє зображення на функцію, стійку до колізій.

Майнинг

Майнінг біткоїнів включає багато операцій хешу: перевірка балансів, зв'язування входів і виходів транзакцій, а також хешування транзакцій у блоці для формування дерева Меркла. Але те, що насправді забезпечує блокчейн біткоїнів, це те, що майнери повинні виконувати безліч операцій хешу, щоб знайти дійсне рішення для наступного блоку.

Майнер повинен протестувати кілька різних вхідних даних, створюючи значення хешу для свого кандидатного блоку. Він зможе підтвердити свій блок лише в разі, якщо згенерує хеш, що починається з певної кількості нулів. Ця кількість визначає складність майнінгу і варіюється в залежності від хешрейту, виділеного для мережі.

Хешрейт представляє, скільки обчислювальної потужності інвестується в майнінг. Якщо він зростає, протокол Bitcoin автоматично відрегулює складність, щоб підтримувати середній час видобутку на приблизно 10 хвилин. Якщо кілька майнерів перестануть майнити, складність зменшиться.

Майнери не повинні знаходити колізії, оскільки існує кілька дійсних хешів (, які починаються з певної кількості нулів ). Є кілька можливих рішень для певного блоку, і майнерам потрібно лише знайти одне.

Оскільки майнінг є витратним, у майнерів немає причин обманювати систему, оскільки це призвело б до значних фінансових втрат. Чим більше майнерів у блокчейні, тим сильнішою стає мережа.

Без сумніву, хеш-функції є важливими інструментами в інформатиці, особливо з великими обсягами даних. У поєднанні з криптографією вони забезпечують безпеку та автентифікацію багатьма способами. Вони є життєво важливими для майже всіх крипто-мереж, тому розуміння їх властивостей і механізмів корисне для всіх, хто цікавиться блокчейном.

BTC0.05%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • Прокоментувати
  • Репост
  • Поділіться
Прокоментувати
0/400
Немає коментарів
  • Закріпити