Криптографічне хешування

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

Криптографічна хеш-функція приймає вхідні дані довільної довжини та повертає digest фіксованої довжини. Вона характеризується детермінізмом, фіксованим розміром вихідних даних та односторонністю. На додаток до детермінізму та фіксованої довжини, криптографічні хеш-функції спрямовані на забезпечення стійкості до знаходження першообразу (preimage resistance) (враховуючи digest, знайти першообраз неможливо), стійкості до знаходження другого першообразу (second-preimage resistance) (знайти інший вхід з таким самим digest неможливо) та стійкості до колізій (collision resistance) (важко знайти два входи, які призводять до однакового digest). Вони розроблені для ефективного обчислення, а вихідний digest повинен демонструвати avalanche effect: невелика зміна у вхідних даних призводить до значно відмінного digest. Вони використовуються для перевірки цілісності даних, цифрових підписів та хешування паролів, коли це доречно. Примітка: nonce не є властивістю самої хеш-функції; він може використовуватися в протоколах для додавання солі (salting) або варіації контекстів хешування, але не є частиною основних властивостей хеш-функції.

        graph LR
  Center["Криптографічне хешування"]:::main
  Pre_cryptography["cryptography"]:::pre --> Center
  click Pre_cryptography "/terms/cryptography"
  Center --> Child_merkle_tree["merkle-tree"]:::child
  click Child_merkle_tree "/terms/merkle-tree"
  Rel_digital_signatures["digital-signatures"]:::related -.-> Center
  click Rel_digital_signatures "/terms/digital-signatures"
  Rel_proof_of_work["proof-of-work"]:::related -.-> Center
  click Rel_proof_of_work "/terms/proof-of-work"
  Rel_cryptographic_primitives["cryptographic-primitives"]:::related -.-> Center
  click Rel_cryptographic_primitives "/terms/cryptographic-primitives"
  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;

      

🧒 Простими словами

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

🤓 Expert Deep Dive

Надійний хеш має властивість стійкості до колізій — неможливо знайти два різних файли, які дають однаковий хеш. У блокчейні хешування використовують для створення Дерев Меркла, що дозволяє швидко перевіряти цілісність мільйонів транзакцій, перевіряючи лише один 'Кореневий хеш'.

🔗 Пов'язані терміни

Попередні знання:
Щоб дізнатися більше:

📚 Джерела