Процесс хеширования заключается в создании выходных данных фиксированного размера на основе переменного входа. Это достигается с помощью математических формул, называемых функциями хеш, реализованными в виде алгоритмов.
В области криптовалют криптографические функции хеш являются фундаментальными. Благодаря им блокчейны и другие децентрализованные системы достигают высоких уровней целостности и безопасности данных.
Как обычные, так и криптографические функции хеширования являются детерминированными. Это означает, что если входные данные не изменяются, алгоритм всегда будет производить один и тот же вывод (, также называемый дайджестом или хешом ).
Генерально, алгоритмы хеш в криптовалютах разработаны как односторонние функции, что подразумевает, что их нельзя легко обратить без огромного количества времени и вычислительных ресурсов. То есть, просто получить выходные данные из входных данных, но очень сложно сделать наоборот. Чем сложнее найти входные данные, тем безопаснее считается алгоритм.
Работа функции хеширования
Каждая функция хеширования производит результаты фиксированного размера, который постоянен для каждого алгоритма. Например, SHA-256 всегда генерирует выходные данные размером 256 бит, в то время как SHA-1 производит дайджесты размером 160 бит.
Чтобы проиллюстрировать это, применим алгоритм SHA-256 (, используемый в Bitcoin), к словам "Gate" и "Gate":
Обратите внимание, что минимальное изменение ( первой заглавной буквы ) приводит к совершенно другому хешу. Однако при использовании SHA-256 выходные данные всегда будут иметь 256 бит (64 символа ), независимо от размера входных данных. Более того, не имеет значения, сколько раз мы обрабатываем эти слова, результаты останутся постоянными.
В контрасте, если мы применим алгоритм SHA-1 к тем же входным данным, мы получим:
ША-1
Вход
Выход (160 бит)
Гейт
3e2a7fe40ac63dbe0a46a6931c74c1d4e6b7447d
Гейт
c1b7368da4b8ef83dbf7ca3d3c3d17e65d799708
Важно отметить, что SHA означает Secure Hash Algorithms, что относится к набору криптографических хеш-функций, включающему SHA-0, SHA-1 и группы SHA-2 и SHA-3. SHA-256 принадлежит группе SHA-2, вместе с SHA-512 и другими вариантами. В настоящее время только группы SHA-2 и SHA-3 считаются безопасными.
Важность хеширования
Обычные хеш-функции имеют различные применения, такие как поиск в базах данных, анализ больших файлов и управление информацией. С другой стороны, криптографические хеш-функции широко используются в области информационной безопасности, аутентификации сообщений и генерации отпечатков. В Биткойне они необходимы для процесса майнинга и создания новых адресов и ключей.
Истинный потенциал хеширования проявляется при обработке больших объемов данных. Например, возможно обработать файл или обширный набор данных через хеш-функцию и использовать его вывод для быстрой проверки точности и целостности информации. Это возможно благодаря детерминированной природе хеш-функций: один и тот же ввод всегда будет производить идентичный сжатый вывод. Эта техника исключает необходимость хранения и "вспоминания" больших объемов информации.
Хеширование особенно полезно в технологии блокчейн. Блокчейн Биткойна включает в себя множество операций хеш, в основном в процессе майнинга. На самом деле, почти все протоколы криптовалют основаны на хешировании для связывания и конденсации групп транзакций в блоки, а также для создания криптографических связей между блоками, эффективно формируя цепочку.
Криптографические хеш-функции
Функция хеш, которая реализует криптографические техники, называется криптографической хеш-функцией. В общем, взлом одной из этих функций требует бесчисленных попыток перебора. Для того чтобы "обратить" криптографическую хеш-функцию, необходимо угадать входные данные методом проб и ошибок до получения соответствующего результата. Однако существует вероятность того, что разные входные данные могут привести к точно такому же результату, что называется "коллизией".
Технически, криптографическая функция хеш должна выполнять три свойства, чтобы считаться эффективно безопасной: стойкость к коллизиям, стойкость к предобразу и стойкость к вторичному предобразу.
Резюмируем эти свойства в трех лаконичных фразах:
Устойчивость к коллизиям: нецелесообразно находить два различных входа, которые создают один и тот же хеш на выходе.
Сопротивление к предобразованию: нецелесообразно "обратное" хеширование функции ( для нахождения входа определенного выхода ).
Сопротивление вторичному предобразованию: невозможно найти второй вход, который коллидировал бы с конкретным входом.
Сопротивление коллизиям
Коллизия происходит, когда разные входные данные производят точно такой же хеш. Хеш-функция считается устойчивой к коллизиям, пока кто-то не найдет коллизию. Важно отметить, что всегда будут коллизии для любой хеш-функции, поскольку возможные входные данные бесконечны, в то время как выходы конечны.
На практике функция хеш является устойчивой к коллизиям, когда вероятность их нахождения настолько мала, что потребуются миллионы лет вычислений. Таким образом, хотя не существует хеш-функций, свободных от коллизий, некоторые из них достаточно надежны, чтобы считаться устойчивыми, например, SHA-256.
Среди алгоритмов SHA группы SHA-0 и SHA-1 больше не считаются безопасными, поскольку были обнаружены коллизии. В настоящее время группы SHA-2 и SHA-3 считаются устойчивыми к коллизиям.
( Сопротивление к предобразу
Свойство устойчивости к предобразованию связано с концепцией односторонних функций. Хеш-функция считается устойчивой к предобразованию, когда существует очень низкая вероятность того, что кто-то найдет вход, который сгенерировал определенный выход.
Это свойство отличается от предыдущего, так как здесь атакующий пытается угадать вход, наблюдая за конкретным выходом. Коллизия, напротив, происходит, когда находятся два разных входа, которые генерируют один и тот же выход, независимо от того, какие входы были использованы.
Сопротивление к предобразованию ценно для защиты данных, так как простой хеш сообщения может подтвердить его подлинность, не раскрывая оригинальную информацию. На практике многие поставщики услуг и веб-приложения хранят и используют хеши, сгенерированные на основе паролей, вместо паролей в открытом виде.
) Сопротивление ко второй проекции
Упрощая, можно сказать, что стойкость к вторичной предобразованию находится на среднем уровне между двумя другими свойствами. Атака вторичного предобразования происходит, когда кто-то находит конкретный ввод, который генерирует такой же вывод, как и другой уже известный ввод.
Другими словами, атака второго предобраза подразумевает нахождение коллизии, но вместо поиска двух случайных входов, которые генерируют один и тот же хеш, ищется вход, который производит тот же хеш, сгенерированный другой конкретной входной данными.
Таким образом, любая функция хеш, устойчивая к коллизиям, также будет устойчива к атакам второй предобраз, так как последние всегда будут подразумевать коллизию. Тем не менее, все еще можно провести атаку предобраза на функцию, устойчивую к коллизиям, так как это подразумевает нахождение единственного входа на основе единственного выхода.
Майнинг
Процесс майнинга в Bitcoin включает в себя множество шагов, которые используют функции хеш, такие как проверка балансов, связывание входов и выходов транзакций, а также конденсация транзакций в блок для формирования дерева Меркла. Однако одной из главных причин, по которой блокчейн Bitcoin безопасен, является то, что майнеры должны выполнять огромное количество операций хеш, чтобы найти действительное решение для следующего блока.
Конкретно, майнер должен проверять различные входы при создании значения хеша для своего кандидатного блока. Они смогут подтвердить свой блок только если сгенерируют выходной хеш, который начинается с определенного количества нулей. Количество нулей определяет сложность майнинга и варьируется в зависимости от хешрейта, выделенного для сети.
В этом контексте хеш-рейты представляют собой количество вычислительной мощности, инвестируемой в майнинг биткойнов. Если хеш-рейты сети увеличиваются, протокол биткойна автоматически настроит сложность майнинга, чтобы поддерживать среднее время, необходимое для майнинга блока, близким к 10 минутам. Напротив, если несколько майнеров прекращают майнить, что приводит к значительному падению хеш-рейта, сложность майнинга будет скорректирована, облегчая майнинг ###, пока среднее время блока снова не вернется к 10 минутам ###.
Важно отметить, что майнерам не нужно искать коллизии, так как существует множество хешей, которые могут генерировать в качестве допустимого выхода (, начиная с определенного количества нулей). Таким образом, для определенного блока существует несколько возможных решений, и майнерам нужно найти только одно из них, в зависимости от порога, установленного сложностью майнинга.
Поскольку майнинг биткойнов является дорогостоящей задачей, майнеры не имеют стимулов обманывать систему, так как это приведет к значительным финансовым потерям. Чем больше майнеров присоединяется к блокчейну, тем больше и надежнее он становится.
Финальные размышления
Нет никаких сомнений в том, что функции хеш являются основными инструментами в информатике, особенно когда речь идет о больших объемах данных. В сочетании с криптографией алгоритмы хеш становятся универсальными и предлагают безопасность и аутентификацию различными способами. Поэтому криптографические функции хеш жизненно важны для почти всех сетей криптовалют, и понимание их свойств и механизмов работы, безусловно, полезно для любого, кто интересуется технологией блокчейн.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Хеш: ключевой элемент в криптовалютах
Процесс хеширования заключается в создании выходных данных фиксированного размера на основе переменного входа. Это достигается с помощью математических формул, называемых функциями хеш, реализованными в виде алгоритмов.
В области криптовалют криптографические функции хеш являются фундаментальными. Благодаря им блокчейны и другие децентрализованные системы достигают высоких уровней целостности и безопасности данных.
Как обычные, так и криптографические функции хеширования являются детерминированными. Это означает, что если входные данные не изменяются, алгоритм всегда будет производить один и тот же вывод (, также называемый дайджестом или хешом ).
Генерально, алгоритмы хеш в криптовалютах разработаны как односторонние функции, что подразумевает, что их нельзя легко обратить без огромного количества времени и вычислительных ресурсов. То есть, просто получить выходные данные из входных данных, но очень сложно сделать наоборот. Чем сложнее найти входные данные, тем безопаснее считается алгоритм.
Работа функции хеширования
Каждая функция хеширования производит результаты фиксированного размера, который постоянен для каждого алгоритма. Например, SHA-256 всегда генерирует выходные данные размером 256 бит, в то время как SHA-1 производит дайджесты размером 160 бит.
Чтобы проиллюстрировать это, применим алгоритм SHA-256 (, используемый в Bitcoin), к словам "Gate" и "Gate":
ША-256
Вход
Выход (256 бит)
Гейт
8a83f205f3c314f629e3a0128f5f404cfd44b9a95da6d9f1a7b9f50d1f1b3b34
Гейт
7f7e4cf2eb50a0ea9d71edc37d6a1e74cf5e9348f7f9a0321b95e0a8e4097b3e
Обратите внимание, что минимальное изменение ( первой заглавной буквы ) приводит к совершенно другому хешу. Однако при использовании SHA-256 выходные данные всегда будут иметь 256 бит (64 символа ), независимо от размера входных данных. Более того, не имеет значения, сколько раз мы обрабатываем эти слова, результаты останутся постоянными.
В контрасте, если мы применим алгоритм SHA-1 к тем же входным данным, мы получим:
ША-1
Вход
Выход (160 бит)
Гейт
3e2a7fe40ac63dbe0a46a6931c74c1d4e6b7447d
Гейт
c1b7368da4b8ef83dbf7ca3d3c3d17e65d799708
Важно отметить, что SHA означает Secure Hash Algorithms, что относится к набору криптографических хеш-функций, включающему SHA-0, SHA-1 и группы SHA-2 и SHA-3. SHA-256 принадлежит группе SHA-2, вместе с SHA-512 и другими вариантами. В настоящее время только группы SHA-2 и SHA-3 считаются безопасными.
Важность хеширования
Обычные хеш-функции имеют различные применения, такие как поиск в базах данных, анализ больших файлов и управление информацией. С другой стороны, криптографические хеш-функции широко используются в области информационной безопасности, аутентификации сообщений и генерации отпечатков. В Биткойне они необходимы для процесса майнинга и создания новых адресов и ключей.
Истинный потенциал хеширования проявляется при обработке больших объемов данных. Например, возможно обработать файл или обширный набор данных через хеш-функцию и использовать его вывод для быстрой проверки точности и целостности информации. Это возможно благодаря детерминированной природе хеш-функций: один и тот же ввод всегда будет производить идентичный сжатый вывод. Эта техника исключает необходимость хранения и "вспоминания" больших объемов информации.
Хеширование особенно полезно в технологии блокчейн. Блокчейн Биткойна включает в себя множество операций хеш, в основном в процессе майнинга. На самом деле, почти все протоколы криптовалют основаны на хешировании для связывания и конденсации групп транзакций в блоки, а также для создания криптографических связей между блоками, эффективно формируя цепочку.
Криптографические хеш-функции
Функция хеш, которая реализует криптографические техники, называется криптографической хеш-функцией. В общем, взлом одной из этих функций требует бесчисленных попыток перебора. Для того чтобы "обратить" криптографическую хеш-функцию, необходимо угадать входные данные методом проб и ошибок до получения соответствующего результата. Однако существует вероятность того, что разные входные данные могут привести к точно такому же результату, что называется "коллизией".
Технически, криптографическая функция хеш должна выполнять три свойства, чтобы считаться эффективно безопасной: стойкость к коллизиям, стойкость к предобразу и стойкость к вторичному предобразу.
Резюмируем эти свойства в трех лаконичных фразах:
Устойчивость к коллизиям: нецелесообразно находить два различных входа, которые создают один и тот же хеш на выходе.
Сопротивление к предобразованию: нецелесообразно "обратное" хеширование функции ( для нахождения входа определенного выхода ).
Сопротивление вторичному предобразованию: невозможно найти второй вход, который коллидировал бы с конкретным входом.
Сопротивление коллизиям
Коллизия происходит, когда разные входные данные производят точно такой же хеш. Хеш-функция считается устойчивой к коллизиям, пока кто-то не найдет коллизию. Важно отметить, что всегда будут коллизии для любой хеш-функции, поскольку возможные входные данные бесконечны, в то время как выходы конечны.
На практике функция хеш является устойчивой к коллизиям, когда вероятность их нахождения настолько мала, что потребуются миллионы лет вычислений. Таким образом, хотя не существует хеш-функций, свободных от коллизий, некоторые из них достаточно надежны, чтобы считаться устойчивыми, например, SHA-256.
Среди алгоритмов SHA группы SHA-0 и SHA-1 больше не считаются безопасными, поскольку были обнаружены коллизии. В настоящее время группы SHA-2 и SHA-3 считаются устойчивыми к коллизиям.
( Сопротивление к предобразу
Свойство устойчивости к предобразованию связано с концепцией односторонних функций. Хеш-функция считается устойчивой к предобразованию, когда существует очень низкая вероятность того, что кто-то найдет вход, который сгенерировал определенный выход.
Это свойство отличается от предыдущего, так как здесь атакующий пытается угадать вход, наблюдая за конкретным выходом. Коллизия, напротив, происходит, когда находятся два разных входа, которые генерируют один и тот же выход, независимо от того, какие входы были использованы.
Сопротивление к предобразованию ценно для защиты данных, так как простой хеш сообщения может подтвердить его подлинность, не раскрывая оригинальную информацию. На практике многие поставщики услуг и веб-приложения хранят и используют хеши, сгенерированные на основе паролей, вместо паролей в открытом виде.
) Сопротивление ко второй проекции
Упрощая, можно сказать, что стойкость к вторичной предобразованию находится на среднем уровне между двумя другими свойствами. Атака вторичного предобразования происходит, когда кто-то находит конкретный ввод, который генерирует такой же вывод, как и другой уже известный ввод.
Другими словами, атака второго предобраза подразумевает нахождение коллизии, но вместо поиска двух случайных входов, которые генерируют один и тот же хеш, ищется вход, который производит тот же хеш, сгенерированный другой конкретной входной данными.
Таким образом, любая функция хеш, устойчивая к коллизиям, также будет устойчива к атакам второй предобраз, так как последние всегда будут подразумевать коллизию. Тем не менее, все еще можно провести атаку предобраза на функцию, устойчивую к коллизиям, так как это подразумевает нахождение единственного входа на основе единственного выхода.
Майнинг
Процесс майнинга в Bitcoin включает в себя множество шагов, которые используют функции хеш, такие как проверка балансов, связывание входов и выходов транзакций, а также конденсация транзакций в блок для формирования дерева Меркла. Однако одной из главных причин, по которой блокчейн Bitcoin безопасен, является то, что майнеры должны выполнять огромное количество операций хеш, чтобы найти действительное решение для следующего блока.
Конкретно, майнер должен проверять различные входы при создании значения хеша для своего кандидатного блока. Они смогут подтвердить свой блок только если сгенерируют выходной хеш, который начинается с определенного количества нулей. Количество нулей определяет сложность майнинга и варьируется в зависимости от хешрейта, выделенного для сети.
В этом контексте хеш-рейты представляют собой количество вычислительной мощности, инвестируемой в майнинг биткойнов. Если хеш-рейты сети увеличиваются, протокол биткойна автоматически настроит сложность майнинга, чтобы поддерживать среднее время, необходимое для майнинга блока, близким к 10 минутам. Напротив, если несколько майнеров прекращают майнить, что приводит к значительному падению хеш-рейта, сложность майнинга будет скорректирована, облегчая майнинг ###, пока среднее время блока снова не вернется к 10 минутам ###.
Важно отметить, что майнерам не нужно искать коллизии, так как существует множество хешей, которые могут генерировать в качестве допустимого выхода (, начиная с определенного количества нулей). Таким образом, для определенного блока существует несколько возможных решений, и майнерам нужно найти только одно из них, в зависимости от порога, установленного сложностью майнинга.
Поскольку майнинг биткойнов является дорогостоящей задачей, майнеры не имеют стимулов обманывать систему, так как это приведет к значительным финансовым потерям. Чем больше майнеров присоединяется к блокчейну, тем больше и надежнее он становится.
Финальные размышления
Нет никаких сомнений в том, что функции хеш являются основными инструментами в информатике, особенно когда речь идет о больших объемах данных. В сочетании с криптографией алгоритмы хеш становятся универсальными и предлагают безопасность и аутентификацию различными способами. Поэтому криптографические функции хеш жизненно важны для почти всех сетей криптовалют, и понимание их свойств и механизмов работы, безусловно, полезно для любого, кто интересуется технологией блокчейн.