Хеш-обработка относится к процессу генерации выходных данных фиксированного размера из входных данных разного размера. Это делается с помощью математической формулы, известной как хеш-функция (реализованная в виде алгоритма хеширования).
Хотя не все хеш-функции связаны с использованием криптографии, в основе криптовалют лежат те, которые известны как криптографические хэш-функции. Благодаря этому блокчейн и другие распределенные системы способны достичь значительного уровня целостности и безопасности данных.
Обычные хеш-функции и криптографические хэши одинаковы: детерминированы. Детерминированность означает, что пока входные данные не изменяются, алгоритм хеширования всегда будет выдавать один и тот же результат (также известный как дайджест или хэш).
В частности, алгоритм хеширования криптовалют спроектирован как односторонняя функция, а это означает, что его невозможно легко обратить вспять без огромного вычислительного времени и ресурсов. Другими словами, очень легко производить выходные данные из входных данных, но относительно сложно сделать обратное (генерировать входные данные только из выходных данных). В общем, чем сложнее найти входные данные, тем более безопасным будет алгоритм хеширования.
Как работает хеш-функция?
Различные хеш-функции будут выдавать выходные данные разного размера, но возможный размер выходных данных каждого алгоритма хеширования всегда постоянен. Например, алгоритм SHA-256 будет выдавать только 256-битный вывод, тогда как SHA-1 всегда будет выдавать 160-битный дайджест.
Чтобы проиллюстрировать это, давайте прогоним слова «Binance» и «binance» через алгоритм хеширования SHA-256 (тот, который используется в Биткойне).
Обратите внимание, что небольшие изменения (размер первой буквы) приводят к очень разным значениям хеш-функции. Но поскольку мы используем SHA-256, выходные данные всегда будут иметь фиксированный размер 256 бит (или 64 символа) — независимо от размера входных данных. Кроме того, независимо от того, сколько раз мы прогоняем эти два слова через алгоритм, оба результата всегда будут постоянными.
С другой стороны, если мы пропустим входные данные через алгоритм хеширования SHA-1, мы получим результаты ниже:
В частности, аббревиатура SHA означает алгоритмы безопасного хеширования. Это относится к набору криптографических хэш-функций, который включает в себя алгоритмы 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 считаются ударопрочными.
Сопротивление прообразу
Свойство сопротивления прообразу связано с понятием односторонних функций. Хэш-функция считается устойчивой к прообразу, когда вероятность того, что кто-то найдет входные данные, полученные в результате определенного вывода, очень мала.
Обратите внимание, что это свойство отличается от предыдущего, поскольку злоумышленник попытается угадать, что такое входные данные, просматривая доступные выходные данные. С другой стороны, коллизия возникает, когда кто-то сталкивается с двумя разными входными данными, которые выдают один и тот же результат, но не имеет значения, какой вход используется.
Свойство устойчивости к прообразу очень полезно для защиты данных, поскольку простой хэш сообщения может подтвердить подлинность без необходимости раскрытия информации. На практике многие поставщики услуг и веб-приложения хранят и используют полученные хэши паролей, а не пароли в виде обычного текста.
Предварительный просмотр второго сопротивления
Проще говоря, мы можем сказать, что сопротивление второго прообраза находится между двумя свойствами, обсуждавшимися ранее. Вторая атака прообраза происходит, когда кто-то может найти конкретный входной сигнал, который выдает тот же результат, что и другой выходной сигнал из другого уже известного входного сигнала.
Другими словами, вторая атака прообраза заключается в поиске коллизий, но вместо поиска двух случайных входных данных, которые создают один и тот же хеш, они ищут входные данные, которые создают один и тот же хеш, созданный другим конкретным входом.
Следовательно, любая устойчивая к коллизиям хэш-функция также устойчива к атакам второго прообраза. Тем не менее, по-прежнему можно выполнить атаку прообраза на устойчивую к коллизиям функцию, поскольку это также означает поиск одного входного сигнала из одного выходного.
Горное дело
В добыче биткойнов есть много этапов, которые включают хэш-функции, такие как проверка баланса, связывание входных и выходных транзакций, а также хеширование транзакций внутри блока для формирования Дерева Меркла. Но одной из основных причин безопасности блокчейна Биткойн является тот факт, что майнерам приходится выполнять большое количество операций хеширования, чтобы в конечном итоге найти правильное решение для следующего блока.
В частности, майнер должен попробовать несколько разных входных данных при генерации хэш-значений для своих блоков-кандидатов. По сути, он может проверить свой блок только в том случае, если создаст выходной хэш, начинающийся с определенного количества нулей. Количество нулей определяет сложность майнинга, и она варьируется в зависимости от скорости хеширования, специфичной для сети.
В этом случае скорость хеширования показывает, сколько компьютерной энергии используется для добычи биткойнов. Если скорость хеширования сети увеличивается, протокол Биткойн автоматически регулирует сложность майнинга, так что среднее время, необходимое для добычи одного оставшегося блока, приближается к 10 минутам. И наоборот, если некоторые майнеры решают прекратить майнинг, это приводит к резкому снижению скорости хеширования, а сложность майнинга будет корректироваться, что упрощает его (пока среднее время блока не вернется к 10 минутам).
Пожалуйста, поймите, что майнерам не приходится сталкиваться с коллизиями, поскольку существует множество хешей, которые они могут выдать в качестве действительных выходных данных (начиная с определенного количества нулей). Таким образом, существует несколько возможных решений для конкретного блока, и майнерам нужно найти только одно решение в зависимости от порога, определяемого уровнем сложности майнинга.
Поскольку добыча биткойнов является дорогостоящим занятием, у майнеров нет причин обманывать систему, это приведет к значительным финансовым потерям. Чем больше майнеров присоединятся к блокчейну, тем больше и сильнее он станет.
Заключительная идея
Нет сомнений в том, что хеш-функции являются очень важным инструментом в информатике, особенно при работе с большими объемами данных. В сочетании с криптографией алгоритмы хеширования могут быть универсальными, обеспечивая безопасность и подлинность различными способами. Таким образом, криптографические хеш-функции необходимы практически для всех сетей криптовалют, поэтому понимание их свойств и того, как они работают, очень полезно для всех, кто интересуется технологией блокчейна.

