DevLearn logo
Skill Up With Me
Interactive Learning
Signing in…

Что такое хеширование?

🔒 Sign in to use this

Криптографическая хеш-функция — это детерминированный алгоритм h:{0,1}{0,1}nh:\{0,1\}^{*} \to \{0,1\}^{n}, который переводит вход произвольной длины (байтовую строку) в выход фиксированной длины — дайджест (hash value). Детерминированность означает: одно и то же кодирование входа даёт один и тот же дайджест. В протоколах блокчейна дайджест рассматривается как обязательство (commitment): любое изменение протокольно значимых байтов меняет дайджест.

Какие свойства требуют безопасности

Криптографическая стойкость выражается вычислительными (computational) ограничениями. Типовые цели: • Стойкость к нахождению прообраза (preimage resistance): по дайджесту y вычислительно нецелесообразно найти x такое, что h(x)=yh(x)=y. • Стойкость ко второму прообразу (second-preimage resistance): по известному входу x вычислительно нецелесообразно найти xxx' \neq x с тем же дайджестом. • Коллизионная стойкость (collision resistance): вычислительно нецелесообразно найти две различные входные строки xx и xx' с одинаковым дайджестом. «Нецелесообразно» означает отсутствие известных практических способов атаковать в реалистичных ресурсных рамках.

Где хеширование применяется в блокчейне

1) Связывание (chain linkage): заголовки блока содержат поле — хеш предыдущего заголовка. Если меняется хотя бы один байт заголовка, вычисленный хеш перестаёт совпадать, а подмена становится обнаружимой при пересчёте. 2) Фиксация транзакций: множество транзакций суммируется в корень дерева Меркла (Merkle root) — он включается в заголовок. Доказательство Меркла (Merkle proof) позволяет лёгкому клиенту проверить, что конкретная транзакция входит в множество, зафиксированное корнем, без загрузки полного блока.

Построение дайджеста (концептуально)
📥
Собрать протокольные данные
поля заголовка + набор tx
🧩
Вычислить Merkle root
txs → root (commitment)
🔗
Связать заголовки
prev hash поле
🧾
Проверить
пересчитать и сравнить
Хеширование vs шифрование
АспектХешированиеШифрование
Главная цельЦелостность / фиксацияКонфиденциальность (часто + целостность в AEAD)
ОбратимостьОдносторонне по замыслуОбратимо с правильным ключом
КлючиНе требуются для базового хешаТребуются для симметричного; pk/sk для асимметричного
Ключевые свойства
🧠
Детерминизм
🧷
Коллизионная стойкость
🔍
Стойкость к прообразу
📏
Фиксированная длина
⚠️Не отождествляйте «любой хеш» с «достаточно похожим»: протокол задаёт правила байтового кодирования и точное имя алгоритма. Используйте стандартизированный алгоритм, указанный в протоколе, и аудированные реализации.
🔒 Sign in to use this