Хеширование относится к процессу генерации выхода фиксированного размера из входа переменного размера. Этот процесс осуществляется с помощью математических формул, известных как функции хеш (, реализованные в виде алгоритмов хеш).
Хотя не все функции хеширования подразумевают использование криптографии, так называемые криптографические функции хеширования составляют ядро криптовалют. Благодаря им блокчейны и другие распределенные системы могут достигать значительных уровней целостности и безопасности данных.
Основы хеш-функций
Обычные и криптографические функции хеш являются детерминированными. Быть детерминированным означает, что, пока входные данные не меняются, алгоритм хеша неизменно будет производить тот же самый выход (, также известный как дайджест или хеш).
Типично, алгоритмы хеш, используемые в криптовалютах, разрабатываются как односторонние функции, что означает, что их нельзя легко обратить без больших затрат времени и вычислительных ресурсов. Другими словами, довольно просто создать выходные данные из входных, но относительно сложно двигаться в обратном направлении ( генерировать входные данные только по выходу ). В общем, чем сложнее найти оригинальный вход, тем более безопасным будет считаться алгоритм хеширования.
Как работает функция хеш?
Разные функции хеширования производят выходы разных размеров, но возможные размеры выходов для каждого алгоритма хеширования всегда постоянны. Например, алгоритм SHA-256 может производить только выходы размером 256 бит, в то время как SHA-1 всегда будет генерировать дайджест размером 160 бит.
Чтобы проиллюстрировать это, давайте пропустим слова "Trading" и "trading" через алгоритм хеш SHA-256 (, используемый в Bitcoin ):
Обратите внимание, что небольшое изменение (в верхнем регистре первой буквы) привело к совершенно другому значению хеш. Но поскольку мы используем SHA-256, выходные данные всегда будут иметь фиксированный размер 256 бит (или 64 шестнадцатеричных символа), независимо от размера входных данных. Кроме того, не имеет значения, сколько раз мы обрабатываем два слова с помощью алгоритма, выходные данные останутся постоянными.
С другой стороны, если мы пропустим те же входные данные через алгоритм хеш SHA-1, мы получим следующие результаты:
Вход: трейдинг
Выход (160 бит): 7da19b30a5c5c198709373e8eb7d5c33a3f48241
Важно отметить, что SHA означает Secure Hash Algorithms. Это относится к набору криптографических функций хеширования, которые включают алгоритмы SHA-0 и SHA-1, а также семейства SHA-2 и SHA-3. SHA-256 является частью семейства SHA-2, вместе с SHA-512 и другими вариантами. В настоящее время только семейства SHA-2 и SHA-3 считаются безопасными для криптографических приложений.
Важность хеш-функций
Обычные функции хеширования имеют широкий спектр случаев использования, включая поиск в базах данных, анализ больших файлов и управление данными. С другой стороны, криптографические функции хеширования широко используются в приложениях информационной безопасности, таких как аутентификация сообщений и цифровое отпечатывание. В контексте Bitcoin криптографические функции хеширования являются неотъемлемой частью процесса майнинга и также играют ключевую роль в генерации новых адресов и ключей.
Истинная сила хеширования проявляется при обработке огромных объемов информации. Например, можно обработать большой файл или набор данных через хеш-функцию, а затем использовать ее выходные данные для быстрой проверки точности и целостности данных. Это возможно благодаря детерминированному характеру хеш-функций: входные данные всегда приводят к упрощенному и конденсированному выходу (хеш). Эта техника устраняет необходимость хранения и "вспоминания" больших объемов данных.
Хеширование особенно полезно в контексте технологии блокчейн. Блокчейн Биткойна имеет различные операции, связанные с хешированием, большинство из которых происходит в процессе майнинга. На самом деле, почти все протоколы криптовалют зависят от хеширования для связывания и конденсации групп транзакций в блоки, а также для создания криптографических ссылок между каждым блоком, эффективно создавая цепочку блоков.
Криптографические функции хеш и их свойства
Функция хеш, которая реализует криптографические техники, может быть определена как криптографическая функция хеш. В общем, чтобы сломать криптографическую функцию хеш, требуется бесконечное количество попыток методом полного перебора. Чтобы "обратиться" к криптографической функции хеш, человеку необходимо было бы угадать, какой была входная информация, методом проб и ошибок, пока не получится соответствующий выход. Однако также существует возможность того, что разные входы могут давать точно такой же выход, в этом случае происходит "коллизия".
Технически, криптографическая функция хеш должна соответствовать трем свойствам, чтобы считаться действительно безопасной:
Устойчивость к коллизиям: невозможно найти два различных входа, которые производят один и тот же хеш на выходе
Сопротивление к предобразованию: невозможно "обратить" хеш-функцию ( и найти входные данные на основе данного выхода )
Сопротивление вторичным предобразованиям: невозможно найти любую вторичную входную, которая коллицирует с конкретным входом
Сопротивление коллизиям
Как уже упоминалось, коллизия происходит, когда разные входы производят точно один и тот же хеш. Таким образом, функция хеширования считается устойчивой к коллизиям до тех пор, пока кто-то не найдет коллизию. Обратите внимание, что всегда будут существовать коллизии для любой функции хеширования, поскольку возможные входы бесконечны, в то время как возможные выходы конечны.
Другими словами, функция хеш является стойкой к коллизиям, когда вероятность нахождения коллизии настолько низка, что потребуются миллионы лет вычислений. Таким образом, хотя не существует функций хеш без коллизий, некоторые из них достаточно сильны, чтобы считаться стойкими (например, SHA-256).
Среди различных алгоритмов SHA, семейства SHA-0 и SHA-1 больше не являются безопасными, так как были обнаружены коллизии. В настоящее время семейства SHA-2 и SHA-3 считаются устойчивыми к коллизиям.
Сопротивление к предобразу
Свойство устойчивости к предобразованию связано с понятием односторонних функций. Хеш-функция считается устойчивой к предобразованию, когда существует очень низкая вероятность того, что кто-то найдет вход, который сгенерировал конкретный выход.
Это свойство отличается от предыдущего, потому что злоумышленник попытается угадать, каков был ввод, наблюдая за определенным выводом. Коллизия, с другой стороны, происходит, когда кто-то находит два различных ввода, которые генерируют один и тот же вывод, независимо от того, какие вводы были использованы.
Свойство устойчивости к предобразованию ценно для защиты данных, потому что простой хеш сообщения может подтвердить его подлинность без необходимости раскрытия информации. На практике многие поставщики услуг и веб-приложений хранят и используют хеши, сгенерированные на основе паролей, вместо паролей в открытом виде. Даже на торговых платформах эта техника является основополагающей для защиты учетных данных пользователей.
Сопротивление ко второй предобразу
Чтобы упростить, можно сказать, что устойчивость к второй предобразной задаче находится где-то между двумя другими свойствами. Атака второй предобразной задачи происходит, когда кто-то находит конкретный ввод, который генерирует тот же выход, что и другой уже известный ввод.
Другими словами, атака вторичного предобраза подразумевает нахождение коллизии, но вместо поиска двух случайных входов, которые генерируют один и тот же хеш, злоумышленник ищет вход, который генерирует тот же хеш, что и другой конкретный вход.
Поэтому любая функция хеш, устойчивая к коллизиям, также устойчива к атакам второй предобраз, так как они всегда будут предполагать коллизию. Тем не менее, все еще возможно осуществить атаку на предобраз в функции, устойчивой к коллизиям, так как это подразумевает нахождение единственного входа на основе единственного выхода.
Майнинг и хеширование в криптовалютах
В майнинге Биткойна есть множество этапов, которые включают функции хеширования, такие как проверка балансов, связывание входов и выходов транзакций, а также хеширование транзакций внутри блока для формирования дерева Меркла. Но одной из главных причин, почему блокчейн Биткойна безопасен, является тот факт, что майнерам необходимо выполнить бесчисленное количество операций хеширования, чтобы в конечном итоге найти действительное решение для следующего блока.
Конкретно, майнер должен попробовать несколько различных входов при создании значения хеша для своего кандидатского блока. По сути, он сможет подтвердить свой блок только в том случае, если сгенерирует выходной хеш, который начинается с определенного числа нулей. Количество нулей определяет сложность майнинга и варьируется в зависимости от скорости хеширования, выделенной сети.
В этом случае, хеш-ставка представляет собой то, сколько вычислительной мощности инвестируется в майнинг Биткойна. Если хеш-ставка сети увеличивается, протокол Биткойн автоматически настроит сложность майнинга так, чтобы среднее время, необходимое для майнинга блока, оставалось около 10 минут. Напротив, если несколько майнеров решат прекратить майнинг, что приведет к значительному снижению хеш-ставки, сложность майнинга будет скорректирована, облегчая майнинг (до тех пор, пока среднее время блока не вернется к 10 минутам).
miner'ам не нужно находить коллизии, потому что есть несколько хешей, которые могут генерировать в качестве допустимого выхода (, начиная с определенного числа нулей ). Поэтому существует несколько возможных решений для конкретного блока, и майнерам нужно найти только одно из них в соответствии с лимитом, установленным сложностью майнинга.
Поскольку майнинг биткойнов является затратной задачей с точки зрения энергии и оборудования, у майнеров нет причин обманывать систему, так как это приведет к значительным финансовым потерям. Чем больше майнеров присоединяется к блокчейну, тем больше и сильнее он становится.
Практические применения хеширования в криптомире
Хеширование имеет множество практических приложений в экосистеме криптовалют и на торговых платформах:
Проверка транзакций: Каждая транзакция в блокчейне получает уникальный хеш, который служит в качестве идентификатора и позволяет проверить, что транзакция не была изменена.
Генерация адресов: Адреса криптовалют создаются путем применения хеш-функций к публичным ключам, что повышает безопасность и уменьшает размер адресов.
Безопасное хранение паролей: Торговые платформы используют функции хеш для безопасного хранения паролей своих пользователей, сохраняя только хеши вместо оригинальных паролей.
Доказательство работы: Этот механизм консенсуса, используемый Биткойном и другими криптовалютами, основан в первую очередь на свойстве односторонности хеш-функций.
Целостность данных: Платформы используют хеши для проверки того, что файлы или данные, переданные во время передачи, не были изменены.
Заключение
Хеш-функции являются основными инструментами в компьютерных науках, особенно когда речь идет о больших объемах данных. Когда они сочетаются с криптографией, хеш-алгоритмы могут быть довольно универсальными, предлагая безопасность и аутентификацию различными способами. Как таковые, криптографические хеш-функции жизненно важны для почти всех криптовалютных сетей и торговых платформ, поэтому понимание их свойств и механизмов работы, безусловно, полезно для любого, кто интересуется блокчейн-технологиями или торговлей цифровыми активами.
В мире, который становится все более цифровым, где безопасность данных и транзакций имеет первостепенное значение, функции хеш по-прежнему остаются одним из основных столпов, поддерживающих доверие к современным криптографическим системам.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Что такое хеш? Принципы, криптография и приложения в блокчейне
Хеширование относится к процессу генерации выхода фиксированного размера из входа переменного размера. Этот процесс осуществляется с помощью математических формул, известных как функции хеш (, реализованные в виде алгоритмов хеш).
Хотя не все функции хеширования подразумевают использование криптографии, так называемые криптографические функции хеширования составляют ядро криптовалют. Благодаря им блокчейны и другие распределенные системы могут достигать значительных уровней целостности и безопасности данных.
Основы хеш-функций
Обычные и криптографические функции хеш являются детерминированными. Быть детерминированным означает, что, пока входные данные не меняются, алгоритм хеша неизменно будет производить тот же самый выход (, также известный как дайджест или хеш).
Типично, алгоритмы хеш, используемые в криптовалютах, разрабатываются как односторонние функции, что означает, что их нельзя легко обратить без больших затрат времени и вычислительных ресурсов. Другими словами, довольно просто создать выходные данные из входных, но относительно сложно двигаться в обратном направлении ( генерировать входные данные только по выходу ). В общем, чем сложнее найти оригинальный вход, тем более безопасным будет считаться алгоритм хеширования.
Как работает функция хеш?
Разные функции хеширования производят выходы разных размеров, но возможные размеры выходов для каждого алгоритма хеширования всегда постоянны. Например, алгоритм SHA-256 может производить только выходы размером 256 бит, в то время как SHA-1 всегда будет генерировать дайджест размером 160 бит.
Чтобы проиллюстрировать это, давайте пропустим слова "Trading" и "trading" через алгоритм хеш SHA-256 (, используемый в Bitcoin ):
SHA-256**
Вход: Торговля Выходные (256 bits): 95d1a7ca65e8e7a866be323693fd2c22e07d8f198695481f1660e12142cdbecc
Вход: трейдинг Выходные (256 bits): 2180de693ed2598851b751454f78332a363a0ddb0376db0e4fc9eedb25cde194
Обратите внимание, что небольшое изменение (в верхнем регистре первой буквы) привело к совершенно другому значению хеш. Но поскольку мы используем SHA-256, выходные данные всегда будут иметь фиксированный размер 256 бит (или 64 шестнадцатеричных символа), независимо от размера входных данных. Кроме того, не имеет значения, сколько раз мы обрабатываем два слова с помощью алгоритма, выходные данные останутся постоянными.
С другой стороны, если мы пропустим те же входные данные через алгоритм хеш SHA-1, мы получим следующие результаты:
SHA-1
Вход: Трейдинг Выходной (160 bits): 37736e173a824ff9cecc9b5de47f5bda155b7f51
Вход: трейдинг Выход (160 бит): 7da19b30a5c5c198709373e8eb7d5c33a3f48241
Важно отметить, что SHA означает Secure Hash Algorithms. Это относится к набору криптографических функций хеширования, которые включают алгоритмы SHA-0 и SHA-1, а также семейства SHA-2 и SHA-3. SHA-256 является частью семейства SHA-2, вместе с SHA-512 и другими вариантами. В настоящее время только семейства SHA-2 и SHA-3 считаются безопасными для криптографических приложений.
Важность хеш-функций
Обычные функции хеширования имеют широкий спектр случаев использования, включая поиск в базах данных, анализ больших файлов и управление данными. С другой стороны, криптографические функции хеширования широко используются в приложениях информационной безопасности, таких как аутентификация сообщений и цифровое отпечатывание. В контексте Bitcoin криптографические функции хеширования являются неотъемлемой частью процесса майнинга и также играют ключевую роль в генерации новых адресов и ключей.
Истинная сила хеширования проявляется при обработке огромных объемов информации. Например, можно обработать большой файл или набор данных через хеш-функцию, а затем использовать ее выходные данные для быстрой проверки точности и целостности данных. Это возможно благодаря детерминированному характеру хеш-функций: входные данные всегда приводят к упрощенному и конденсированному выходу (хеш). Эта техника устраняет необходимость хранения и "вспоминания" больших объемов данных.
Хеширование особенно полезно в контексте технологии блокчейн. Блокчейн Биткойна имеет различные операции, связанные с хешированием, большинство из которых происходит в процессе майнинга. На самом деле, почти все протоколы криптовалют зависят от хеширования для связывания и конденсации групп транзакций в блоки, а также для создания криптографических ссылок между каждым блоком, эффективно создавая цепочку блоков.
Криптографические функции хеш и их свойства
Функция хеш, которая реализует криптографические техники, может быть определена как криптографическая функция хеш. В общем, чтобы сломать криптографическую функцию хеш, требуется бесконечное количество попыток методом полного перебора. Чтобы "обратиться" к криптографической функции хеш, человеку необходимо было бы угадать, какой была входная информация, методом проб и ошибок, пока не получится соответствующий выход. Однако также существует возможность того, что разные входы могут давать точно такой же выход, в этом случае происходит "коллизия".
Технически, криптографическая функция хеш должна соответствовать трем свойствам, чтобы считаться действительно безопасной:
Сопротивление коллизиям
Как уже упоминалось, коллизия происходит, когда разные входы производят точно один и тот же хеш. Таким образом, функция хеширования считается устойчивой к коллизиям до тех пор, пока кто-то не найдет коллизию. Обратите внимание, что всегда будут существовать коллизии для любой функции хеширования, поскольку возможные входы бесконечны, в то время как возможные выходы конечны.
Другими словами, функция хеш является стойкой к коллизиям, когда вероятность нахождения коллизии настолько низка, что потребуются миллионы лет вычислений. Таким образом, хотя не существует функций хеш без коллизий, некоторые из них достаточно сильны, чтобы считаться стойкими (например, SHA-256).
Среди различных алгоритмов SHA, семейства SHA-0 и SHA-1 больше не являются безопасными, так как были обнаружены коллизии. В настоящее время семейства SHA-2 и SHA-3 считаются устойчивыми к коллизиям.
Сопротивление к предобразу
Свойство устойчивости к предобразованию связано с понятием односторонних функций. Хеш-функция считается устойчивой к предобразованию, когда существует очень низкая вероятность того, что кто-то найдет вход, который сгенерировал конкретный выход.
Это свойство отличается от предыдущего, потому что злоумышленник попытается угадать, каков был ввод, наблюдая за определенным выводом. Коллизия, с другой стороны, происходит, когда кто-то находит два различных ввода, которые генерируют один и тот же вывод, независимо от того, какие вводы были использованы.
Свойство устойчивости к предобразованию ценно для защиты данных, потому что простой хеш сообщения может подтвердить его подлинность без необходимости раскрытия информации. На практике многие поставщики услуг и веб-приложений хранят и используют хеши, сгенерированные на основе паролей, вместо паролей в открытом виде. Даже на торговых платформах эта техника является основополагающей для защиты учетных данных пользователей.
Сопротивление ко второй предобразу
Чтобы упростить, можно сказать, что устойчивость к второй предобразной задаче находится где-то между двумя другими свойствами. Атака второй предобразной задачи происходит, когда кто-то находит конкретный ввод, который генерирует тот же выход, что и другой уже известный ввод.
Другими словами, атака вторичного предобраза подразумевает нахождение коллизии, но вместо поиска двух случайных входов, которые генерируют один и тот же хеш, злоумышленник ищет вход, который генерирует тот же хеш, что и другой конкретный вход.
Поэтому любая функция хеш, устойчивая к коллизиям, также устойчива к атакам второй предобраз, так как они всегда будут предполагать коллизию. Тем не менее, все еще возможно осуществить атаку на предобраз в функции, устойчивой к коллизиям, так как это подразумевает нахождение единственного входа на основе единственного выхода.
Майнинг и хеширование в криптовалютах
В майнинге Биткойна есть множество этапов, которые включают функции хеширования, такие как проверка балансов, связывание входов и выходов транзакций, а также хеширование транзакций внутри блока для формирования дерева Меркла. Но одной из главных причин, почему блокчейн Биткойна безопасен, является тот факт, что майнерам необходимо выполнить бесчисленное количество операций хеширования, чтобы в конечном итоге найти действительное решение для следующего блока.
Конкретно, майнер должен попробовать несколько различных входов при создании значения хеша для своего кандидатского блока. По сути, он сможет подтвердить свой блок только в том случае, если сгенерирует выходной хеш, который начинается с определенного числа нулей. Количество нулей определяет сложность майнинга и варьируется в зависимости от скорости хеширования, выделенной сети.
В этом случае, хеш-ставка представляет собой то, сколько вычислительной мощности инвестируется в майнинг Биткойна. Если хеш-ставка сети увеличивается, протокол Биткойн автоматически настроит сложность майнинга так, чтобы среднее время, необходимое для майнинга блока, оставалось около 10 минут. Напротив, если несколько майнеров решат прекратить майнинг, что приведет к значительному снижению хеш-ставки, сложность майнинга будет скорректирована, облегчая майнинг (до тех пор, пока среднее время блока не вернется к 10 минутам).
miner'ам не нужно находить коллизии, потому что есть несколько хешей, которые могут генерировать в качестве допустимого выхода (, начиная с определенного числа нулей ). Поэтому существует несколько возможных решений для конкретного блока, и майнерам нужно найти только одно из них в соответствии с лимитом, установленным сложностью майнинга.
Поскольку майнинг биткойнов является затратной задачей с точки зрения энергии и оборудования, у майнеров нет причин обманывать систему, так как это приведет к значительным финансовым потерям. Чем больше майнеров присоединяется к блокчейну, тем больше и сильнее он становится.
Практические применения хеширования в криптомире
Хеширование имеет множество практических приложений в экосистеме криптовалют и на торговых платформах:
Проверка транзакций: Каждая транзакция в блокчейне получает уникальный хеш, который служит в качестве идентификатора и позволяет проверить, что транзакция не была изменена.
Генерация адресов: Адреса криптовалют создаются путем применения хеш-функций к публичным ключам, что повышает безопасность и уменьшает размер адресов.
Безопасное хранение паролей: Торговые платформы используют функции хеш для безопасного хранения паролей своих пользователей, сохраняя только хеши вместо оригинальных паролей.
Доказательство работы: Этот механизм консенсуса, используемый Биткойном и другими криптовалютами, основан в первую очередь на свойстве односторонности хеш-функций.
Целостность данных: Платформы используют хеши для проверки того, что файлы или данные, переданные во время передачи, не были изменены.
Заключение
Хеш-функции являются основными инструментами в компьютерных науках, особенно когда речь идет о больших объемах данных. Когда они сочетаются с криптографией, хеш-алгоритмы могут быть довольно универсальными, предлагая безопасность и аутентификацию различными способами. Как таковые, криптографические хеш-функции жизненно важны для почти всех криптовалютных сетей и торговых платформ, поэтому понимание их свойств и механизмов работы, безусловно, полезно для любого, кто интересуется блокчейн-технологиями или торговлей цифровыми активами.
В мире, который становится все более цифровым, где безопасность данных и транзакций имеет первостепенное значение, функции хеш по-прежнему остаются одним из основных столпов, поддерживающих доверие к современным криптографическим системам.