Технология Хеширования
Perseus![](/file/e4bef7b9325ffdba6b9ca.png)
В криптовалюте Хеширование обозначает преобразование любого рода и размера информации в виде набора символов, так называемого хэша, который имеет фиксированную длинну. Это преобразование происходит по математической формуле, также известной как хэш-функция. Эта технология является основополагающей для криптовалюты, так как благодаря ее работе блокчейны и другие распределенные системы способны достичь высокого уровня целостности данных и безопасности.
Алгоритмы хеширования в криптовалютах разработаны таким образом, что их функция работает в одностороннем порядке, это означает, что данные не могут быть возвращены в обратном порядке без вложения большого количества времени и ресурсов для осуществления вычислений. Другими словами, довольно легко создать выход из входных данных, но относительно трудно осуществить процесс в обратном направлении (сгенерировать входные данные на основе выходных). Чем сложнее найти входное значение, тем более безопасным считается алгоритм хеширования.
Как работает хэш-функция?
Различные виды хэш-функций производят вывод разной величины, но возможный размер данных на выходе для каждого из алгоритмов хеширования всегда является постоянным. Например, алгоритм SHA-256 может производить вывод исключительно в формате 256-бит, в то время как SHA-1 всегда генерирует 160-битный дайджест.
Чтобы проиллюстрировать это, давайте пропустим слова “Binance“ и “binance” через алгоритм хеширования SHA-256 (тот, который используется в биткоин):
Входные данные:
Binance
f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191
binance
59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2
Обратите внимание, что незначительное изменение (регистр первой буквы) привело к совершенно другому значению хэша. Поскольку в данном примере мы использовали SHA-256, данные на выходе всегда будут иметь фиксированный размер в 256 бит (или 64 символа), независимо от величины ввода. Помимо этого, не имеет значения какое количество раз мы пропустим эти два слова через алгоритм, два выхода не будут видоизменяться, поскольку они являются постоянными.
Для чего необходима технология хеширования?
![](/file/7c2a4d404f888837be998.png)
Криптографические хэш-функции обширно используются в приложениях связанных с информационной безопасностью для аутентификации сообщений и цифровой дактилоскопии. Когда речь заходит о Биткоине, криптографические хэш-функции являются неотъемлемой частью в процессе майнинга, а также занимают основную роль в генерации новых ключей и адресов.
Хеширование не заменима при работе с огромным количеством информации. Например, можно пропустить большой файл или набор данных через хэш-функцию, а затем использовать вывод для быстрой проверки точности и целостности данных. Это возможно благодаря детерминированной природе хэш-функций: вход всегда будет приводить к упрощенному сжатому выходу (хэшу). Такой метод устраняет необходимость хранить и запоминать большие объемы данных.
По факту, практически все криптовалютные протоколы полагаются на хеширование для связывания и сжатия групп транзакций в блоки, а также для создания криптографической взаимосвязи и эффективного построения цепочки из блоков.
Безопасность хэш-функции
![](/file/365a67c0832cb86f95e41.png)
Для того, чтобы взломать хэш потребуется бесчисленное множество попыток грубого подбора чисел, условно пользуясь методом научного тыка, нужно будет реверсировать хэш-функцию до тех пор пока не будет получен соответствующий вывод. Тем не менее, существует возможность того, что разные входы будут производить одинаковый вывод, в таком случае возникает коллизия (противостояние интересов, недостоверность, отсутствие уверенности в подлинности).
С технической точки зрения, криптографическая хэш-функция должна соответствовать трем свойствам, чтобы считаться безопасной. Мы можем описать их как: устойчивость к коллизии, и устойчивость к поиску первого и второго прообраза.
Прежде чем начать разбирать каждое свойство, обобщим их логику в трех коротких предложениях.
· Устойчивость к коллизии: невозможно найти два разных входа, которые производят хэш, аналогичный выводу.
· Устойчивость к поиску первого прообраза: отсутствие способа или алгоритма обратного восстановления хэш-функцию (нахождение входа по заданному выходу).
· Устойчивость к поиску второго прообраза: невозможно найти любой второй вход, который бы пересекался с первым.
Устойчивость к коллизии
Как упоминалось ранее, коллизия происходит, когда разные входные данные производят одинаковый хэш. Таким образом, хэш-функция считается устойчивой к коллизиям до тех пор, пока кто-либо не обнаружит коллизию. Обратите внимание, что коллизии всегда будут существовать для любой из хэш-функций, в связи с бесконечным количеством входных данных и ограниченным количеством выводов.
Таким образом, хэш-функция устойчива к коллизии, когда вероятность ее обнаружения настолько мала, что для этого потребуются миллионы лет вычислений. По этой причине, несмотря на то, что не существует хэш-функций без коллизий, некоторые из них на столько сильные, что могут считаться устойчивыми (например, SHA-256).
Устойчивость к поиску первого прообраза
Данное свойство тесно взаимосвязано с концепцией односторонних функций. Хэш-функция считается устойчивой к поиску первого прообраза, до тех пор, пока существует очень низкая вероятность того, что кто-то сможет найти вход, с помощью которого можно будет сгенерировать определенный вывод.
Обратите внимание, что это свойство отличается от предыдущего, поскольку злоумышленнику потребуется угадывать входные данные, опираясь на определенный вывод. Такой вид коллизии происходит, когда кто-то находит два разных входа, которые производят один и тот же код на выходе, не придавая значения входным данным, которые для этого использовались.
Свойство устойчивости к поиску первого прообраза является ценным для защиты данных, поскольку простой хэш сообщения может доказать его подлинность без необходимости разглашения дополнительной информации. На практике многие поставщики услуг и веб-приложения хранят и используют хэши, сгенерированные из паролей вместо того, чтобы пользоваться ими в текстовом формате.
Устойчивость к поиску второго прообраза
Для упрощения вашего понимания, можно сказать, что данный вид устойчивости находится где-то между двумя другими свойствами. Атака нахождения второго прообраза заключается в нахождении определенного входа, с помощью которого можно сгенерировать вывод, который изначально образовывался посредством других входных данных, которые были заведомо известны.
Согласен звучит запутанно, но по сути, это атака нахождения второго прообраза включает в себя обнаружение коллизии, но вместо поиска двух случайных входов, которые генерируют один и тот же хэш, атака нацелена на поиск входных данных, с помощью которых можно воссоздать хэш, который изначально был сгенерирован с помощью другого входа.
Технология хеширования в Майнинге
![](/file/f88cf1c1058e82c96b5b4.png)
В майнинге присутствует множество этапов, которые осуществляются с помощью хэш-функций, они включают в себя проверку баланса, связывание входов и выходов транзакций и хеширование всех операций в блоке. Но одна из основных причин, по которой блокчейн биткоина является безопасным, заключается в том, что майнеры должны выполнить как можно большее количество операций связанных с хешированием, чтобы в конечном итоге найти правильное решение для следующего блока.
Майнер должен пытаться подобрать несколько разных входных данных при создании хэша для своего блока-кандидата. Проверить блок можно будет только в том случае, если правильно сгенерирован вывод в виде хэша начинается с определенного количества нулей. Количество нулей определяет сложность майнинга и она меняется в зависимости от хешрейта сети.
В этом случае, хешрейт представляет собой количество мощности вашего компьютера, которое вы инвестируете в майнинг биткоинов. Если хешрейт начинает увеличиваться, протокол биткоина автоматически отрегулирует сложность майнинга так, чтобы среднее время необходимое для добычи блока составляло не более 10 минут. Если несколько майнеров примут решение прекратить майнинг, что приведет к значительному снижению хешрейта, сложность добычи будет скорректирована таким образом, чтобы временно облегчить вычислительную работу (до тех пор, пока среднее время формирования блока не вернется к 10 минутам).
Обратите внимание, что майнерам не нужно искать коллизии, в связи с некоторым количеством хэшей, которые они могут генерировать в качестве валидного выхода (начинающегося с определенного количества нулей). Таким образом, существует несколько возможных решений для определенного блока и майнеры должны найти только одно из них, в соответствии с порогом, который определяется сложностью майнинга.
Поскольку майнинг биткоина является столь затратной задачей, у майнеров нет причин обманывать систему, так как это приведет к значительным финансовым убыткам. Соответственно, чем больше майнеров присоединяется к блокчейну, тем больше и сильнее он становится.
Заключение
Технология Хэш-функции однозначно являются одним из основных инструментов при работе с огромными объемами данных в области IT и криптовалюты. В сочетании с криптографией, алгоритмы хеширования сложно переоценить, они весьма универсальны, предлагают безопасность и множество способов аутентификации. Таким образом, криптографические хеш-функции жизненно важны практически для всех криптовалютных сетей, поэтому понимание их свойств и механизмов работы, безусловно полезно для всех, кто интересуется криптовалютой и технологией блокчейн.
Напоминаем Вам, что Вы можете воспользоваться нашим сайтом Crypto Joker, там удобно ориентироваться по всем выложенным нами статьям.