Алгоритми хешування (Hashing Algorithms)
Алгоритми хешування — це математичні функції, які перетворюють вхідні дані будь-якого розміру на вихідні дані фіксованого розміру (хеш), що використовуються для цілісності даних, зберігання паролів та консенсусу в блокчейні.
Алгоритми хешування є фундаментальними криптографічними примітивами, які приймають довільні вхідні дані та створюють вихідні дані фіксованої довжини, що називаються хешем або дайджестом. Вони розроблені бути детермінованими (однакові вхідні дані завжди дають однаковий результат), швидкими для обчислення та незворотними (одностороння функція).
Криптографічні хеш-функції повинні відповідати додатковим властивостям: стійкість до колізій (важко знайти два вхідні дані з однаковим хешем), стійкість до прообразу (важко знайти вхідні дані за хешем) та лавинний ефект (малі зміни вхідних даних викликають великі зміни вихідних даних).
Ключові алгоритми включають: SHA-256 (Bitcoin, широко використовується), Keccak-256 (Ethereum), SHA-3 (стандарт NIST), Blake2/Blake3 (швидкі, безпечні) та Poseidon (ZK-friendly). Різні алгоритми пропонують компроміси щодо безпеки, швидкості та придатності для конкретних випадків використання, таких як докази з нульовим розголошенням.
Використання в блокчейні включає: майнінг Proof-of-Work, дерева Меркла для цілісності даних, генерацію адрес, ідентифікатори транзакцій та схеми зобов'язань. Розуміння хешування має важливе значення для безпеки та розробки блокчейну.
graph LR
Center["Алгоритми хешування (Hashing Algorithms)"]:::main
Pre_cryptography["cryptography"]:::pre --> Center
click Pre_cryptography "/terms/cryptography"
Pre_mathematics["mathematics"]:::pre --> Center
click Pre_mathematics "/terms/mathematics"
Rel_proof_of_work["proof-of-work"]:::related -.-> Center
click Rel_proof_of_work "/terms/proof-of-work"
Rel_digital_signatures["digital-signatures"]:::related -.-> Center
click Rel_digital_signatures "/terms/digital-signatures"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 Простими словами
Generated ELI5 content
🤓 Expert Deep Dive
Generated expert content
❓ Часті питання
Чому не можна обернути хеш, щоб отримати початкові вхідні дані?
Хеш-функції стискають довільну кількість вхідних даних у вихідні дані фіксованого розміру, тому кожному хешу відповідає багато можливих вхідних даних (інформація втрачається). Вони також розроблені з математичною складністю, яка робить зворотне перетворення обчислювально неможливим. Це називається стійкістю до прообразу.
Який алгоритм хешування використовує Bitcoin?
Bitcoin використовує SHA-256 (SHA-256d, фактично подвійний SHA-256) для майнінгу Proof-of-Work та хешування транзакцій, а також RIPEMD-160 у поєднанні з SHA-256 для генерації адрес. Цей вибір збалансовує безпеку, продуктивність та стійкість до відомих атак.
Що робить хеш-функцію «ZK-friendly»?
ZK-friendly хеш-функції, такі як Poseidon та Pedersen, розроблені для ефективного використання всередині схем доказів з нульовим розголошенням. Традиційні хеші, такі як SHA-256, є дорогими в ZK-доказах, оскільки вони використовують побітові операції, які важко довести. ZK-friendly хеші використовують арифметичні операції, рідні для систем доказів.