Хеширование является основополагающим процессом в области криптовалют, который преобразует данные любого размера в результаты фиксированной длины. Этот процесс осуществляется с помощью математических формул, известных как хеш-функции, реализуемых в виде алгоритмов.
Хотя не все функции хеширования связаны с криптографией, так называемые криптографические функции хеширования являются необходимыми в экосистеме криптовалют. Благодаря им блокчейны и другие децентрализованные системы достигают значительных уровней целостности и безопасности данных.
Функции хеш, как обычные, так и криптографические, являются детерминированными. Это означает, что, пока входные данные не изменятся, алгоритм хеш всегда будет производить один и тот же результат, также известный как дайджест или хеш.
Алгоритмы хеша, используемые в криптовалютах, как правило, разрабатываются как односторонние функции, что подразумевает, что они не могут быть восстановлены без значительного количества времени и вычислительных ресурсов. Другими словами, относительно просто сгенерировать вывод из входа, но крайне трудно сделать обратное. Обычно, чем сложнее найти вход, тем безопаснее считается алгоритм хеш.
Работа хеш-функции
Разные функции хеширования производят результаты различной длины, но возможные размеры выходных данных каждого алгоритма хеширования всегда постоянны. Например, алгоритм SHA-256 может генерировать только результаты длиной 256 бит, в то время как SHA-1 всегда будет производить дайджест длиной 160 бит.
Чтобы проиллюстрировать это, пропустим слова "Gate" и "Gate" через алгоритм хеширования SHA-256 (, используемый в Bitcoin ).
Обратите внимание, что небольшое изменение (в начальной заглавной букве) привело к совершенно другому значению хеш. Однако, поскольку мы используем SHA-256, выходные данные всегда будут иметь фиксированный размер 256 бит (или 64 символа) независимо от размера входных данных. Кроме того, не имеет значения, сколько раз мы пропустим эти два слова через алгоритм, оба выхода останутся постоянными.
Если мы пропустим те же входные данные через алгоритм хеширования SHA-1, мы получим следующие результаты:
ША-1
Вход
Выход (160 бит)
Гейт
96a296d224f285c67bee93c30f8a309157f0daa7
Гейт
5f42c325eef7e85610308428b407748b77d8c98e
Интересно отметить, что 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 считаются устойчивыми к коллизиям.
Сопротивление к предобразу
Это свойство тесно связано с концепцией односторонних функций. Функция хеш считается устойчивой к предобразу, если существует очень низкая вероятность того, что кто-то сможет найти входные данные, используя сгенерированный выход.
Обратите внимание, что это свойство отличается от предыдущего, так как злоумышленнику нужно угадать входные данные, основываясь на конкретном выходе. Коллизия, с другой стороны, происходит, когда кто-то находит два разных входа, которые производят один и тот же выход, независимо от того, какой именно вход был использован.
Свойство устойчивости к предобразованию ценно для безопасности данных, так как простой хеш сообщения может подтвердить его подлинность без необходимости раскрывать дополнительную информацию. На практике многие поставщики услуг и веб-приложений хранят и используют хеши, сгенерированные на основе паролей, вместо того чтобы использовать их в виде открытого текста.
Сопротивление ко второй предобразу
Этот тип сопротивления находится между двумя предыдущими свойствами. Атака второго предобраза заключается в том, чтобы найти конкретный вход, с помощью которого можно сгенерировать выход, который уже был произведен с использованием другого известного ранее входа.
Другими словами, атака на вторичное предображение подразумевает обнаружение коллизий, но вместо того чтобы находить два случайных входа, которые генерируют один и тот же хеш, атака нацелена на нахождение входа, который может воспроизвести хеш, уже сгенерированный другим входом.
Следовательно, любая функция хеш, которая устойчива к коллизиям, также устойчива к атаке второго прообраза, так как последняя всегда требует коллизии. Тем не менее, все еще возможно провести атаку на прообраз в функции, устойчивой к коллизиям, так как это подразумевает поиск входных данных для данного выходного значения.
Майнинг
Существует множество этапов в майнинге Биткойна, которые выполняются с помощью хеш-функций. К ним относятся проверка балансов, связывание входов и выходов транзакций, а также объединение всех транзакций в блок для формирования дерева Меркла. Однако одной из основных причин, по которой блокчейн Биткойна безопасен, является то, что майнерам необходимо выполнять как можно больше операций хеша, чтобы в конечном итоге найти правильное решение для следующего блока.
miner должен использовать различные входы для генерации хеша для своего кандидатного блока. Блок может быть проверен только если сгенерированная выходная информация в виде хеша начинается с определенного количества нулей. Количество нулей определяет сложность майнинга и варьируется в зависимости от хешрейта сети.
В этом контексте хешрейт является мерой вычислительной мощности, которая вкладывается в добычу биткойнов. Если хешрейт начинает расти, протокол биткойна автоматически скорректирует сложность добычи так, чтобы среднее время, необходимое для добычи блока, составило примерно 10 минут. Если несколько майнеров решат прекратить добычу, что приведет к значительному снижению хешрейта, сложность добычи будет скорректирована, чтобы временно облегчить вычисление (, пока среднее время формирования блоков не вернется к 10 минутам ).
Важно подчеркнуть, что майнерам не нужно искать коллизии, потому что есть несколько хешей, которые могут быть сгенерированы как допустимый выход (, начиная с определенного количества нулей ). Таким образом, существуют множественные возможные решения для определенного блока, и майнеры должны найти только одно из них, в зависимости от порога, определяемого сложностью майнинга.
Поскольку майнинг биткойнов является дорогостоящей задачей, у майнеров нет стимулов обманывать систему, так как это приведет к значительным финансовым потерям. Следовательно, чем больше майнеров присоединится к блокчейну, тем больше и надежнее он станет.
Заключение
Безусловно, функции хеш являются одним из основных инструментов в информатике, особенно при работе с большими объемами данных. Когда они комбинируются с криптографией, алгоритмы хеша оказываются чрезвычайно полезными, поскольку обеспечивают безопасность и аутентификацию различными способами. Поэтому криптографические функции хеширования жизненно важны для почти всех сетей криптовалют, и понимание их свойств и механизмов работы, безусловно, ценно для любого человека, заинтересованного в технологии блокчейн.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Сила хеширования в мире криптовалют
Хеширование является основополагающим процессом в области криптовалют, который преобразует данные любого размера в результаты фиксированной длины. Этот процесс осуществляется с помощью математических формул, известных как хеш-функции, реализуемых в виде алгоритмов.
Хотя не все функции хеширования связаны с криптографией, так называемые криптографические функции хеширования являются необходимыми в экосистеме криптовалют. Благодаря им блокчейны и другие децентрализованные системы достигают значительных уровней целостности и безопасности данных.
Функции хеш, как обычные, так и криптографические, являются детерминированными. Это означает, что, пока входные данные не изменятся, алгоритм хеш всегда будет производить один и тот же результат, также известный как дайджест или хеш.
Алгоритмы хеша, используемые в криптовалютах, как правило, разрабатываются как односторонние функции, что подразумевает, что они не могут быть восстановлены без значительного количества времени и вычислительных ресурсов. Другими словами, относительно просто сгенерировать вывод из входа, но крайне трудно сделать обратное. Обычно, чем сложнее найти вход, тем безопаснее считается алгоритм хеш.
Работа хеш-функции
Разные функции хеширования производят результаты различной длины, но возможные размеры выходных данных каждого алгоритма хеширования всегда постоянны. Например, алгоритм SHA-256 может генерировать только результаты длиной 256 бит, в то время как SHA-1 всегда будет производить дайджест длиной 160 бит.
Чтобы проиллюстрировать это, пропустим слова "Gate" и "Gate" через алгоритм хеширования SHA-256 (, используемый в Bitcoin ).
ША-256
Вход
Выход (256 бит)
Гейт
7f98b5c76e1f90c0e51e5947eae545f3b6f4b4736c774c504d7e6741f5070861
Гейт
e77b9a9ae9e30b0dbdb6f510a264ef9de781501d7b6b92ae89eb059c5ab743a0
Обратите внимание, что небольшое изменение (в начальной заглавной букве) привело к совершенно другому значению хеш. Однако, поскольку мы используем SHA-256, выходные данные всегда будут иметь фиксированный размер 256 бит (или 64 символа) независимо от размера входных данных. Кроме того, не имеет значения, сколько раз мы пропустим эти два слова через алгоритм, оба выхода останутся постоянными.
Если мы пропустим те же входные данные через алгоритм хеширования SHA-1, мы получим следующие результаты:
ША-1
Вход
Выход (160 бит)
Гейт
96a296d224f285c67bee93c30f8a309157f0daa7
Гейт
5f42c325eef7e85610308428b407748b77d8c98e
Интересно отметить, что 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 считаются устойчивыми к коллизиям.
Сопротивление к предобразу
Это свойство тесно связано с концепцией односторонних функций. Функция хеш считается устойчивой к предобразу, если существует очень низкая вероятность того, что кто-то сможет найти входные данные, используя сгенерированный выход.
Обратите внимание, что это свойство отличается от предыдущего, так как злоумышленнику нужно угадать входные данные, основываясь на конкретном выходе. Коллизия, с другой стороны, происходит, когда кто-то находит два разных входа, которые производят один и тот же выход, независимо от того, какой именно вход был использован.
Свойство устойчивости к предобразованию ценно для безопасности данных, так как простой хеш сообщения может подтвердить его подлинность без необходимости раскрывать дополнительную информацию. На практике многие поставщики услуг и веб-приложений хранят и используют хеши, сгенерированные на основе паролей, вместо того чтобы использовать их в виде открытого текста.
Сопротивление ко второй предобразу
Этот тип сопротивления находится между двумя предыдущими свойствами. Атака второго предобраза заключается в том, чтобы найти конкретный вход, с помощью которого можно сгенерировать выход, который уже был произведен с использованием другого известного ранее входа.
Другими словами, атака на вторичное предображение подразумевает обнаружение коллизий, но вместо того чтобы находить два случайных входа, которые генерируют один и тот же хеш, атака нацелена на нахождение входа, который может воспроизвести хеш, уже сгенерированный другим входом.
Следовательно, любая функция хеш, которая устойчива к коллизиям, также устойчива к атаке второго прообраза, так как последняя всегда требует коллизии. Тем не менее, все еще возможно провести атаку на прообраз в функции, устойчивой к коллизиям, так как это подразумевает поиск входных данных для данного выходного значения.
Майнинг
Существует множество этапов в майнинге Биткойна, которые выполняются с помощью хеш-функций. К ним относятся проверка балансов, связывание входов и выходов транзакций, а также объединение всех транзакций в блок для формирования дерева Меркла. Однако одной из основных причин, по которой блокчейн Биткойна безопасен, является то, что майнерам необходимо выполнять как можно больше операций хеша, чтобы в конечном итоге найти правильное решение для следующего блока.
miner должен использовать различные входы для генерации хеша для своего кандидатного блока. Блок может быть проверен только если сгенерированная выходная информация в виде хеша начинается с определенного количества нулей. Количество нулей определяет сложность майнинга и варьируется в зависимости от хешрейта сети.
В этом контексте хешрейт является мерой вычислительной мощности, которая вкладывается в добычу биткойнов. Если хешрейт начинает расти, протокол биткойна автоматически скорректирует сложность добычи так, чтобы среднее время, необходимое для добычи блока, составило примерно 10 минут. Если несколько майнеров решат прекратить добычу, что приведет к значительному снижению хешрейта, сложность добычи будет скорректирована, чтобы временно облегчить вычисление (, пока среднее время формирования блоков не вернется к 10 минутам ).
Важно подчеркнуть, что майнерам не нужно искать коллизии, потому что есть несколько хешей, которые могут быть сгенерированы как допустимый выход (, начиная с определенного количества нулей ). Таким образом, существуют множественные возможные решения для определенного блока, и майнеры должны найти только одно из них, в зависимости от порога, определяемого сложностью майнинга.
Поскольку майнинг биткойнов является дорогостоящей задачей, у майнеров нет стимулов обманывать систему, так как это приведет к значительным финансовым потерям. Следовательно, чем больше майнеров присоединится к блокчейну, тем больше и надежнее он станет.
Заключение
Безусловно, функции хеш являются одним из основных инструментов в информатике, особенно при работе с большими объемами данных. Когда они комбинируются с криптографией, алгоритмы хеша оказываются чрезвычайно полезными, поскольку обеспечивают безопасность и аутентификацию различными способами. Поэтому криптографические функции хеширования жизненно важны для почти всех сетей криптовалют, и понимание их свойств и механизмов работы, безусловно, ценно для любого человека, заинтересованного в технологии блокчейн.