Общая информация о хешировании
В настоящее время почти ни одно криптографическое приложение не обходится без применения хеширования. Данная процедура служит основой функционирования криптовалют. Она представляет собой сжатие произвольного набора данных любой длины в определенную комбинацию символов фиксированного размера, называемую хешем. Разные криптовалюты базируются на разных алгоритмах создания хешей, однако все эти алгоритмы действуют по одному и тому же принципу. Любой текст, набор цифр, видео- или звуковой файл может быть трансформирован с помощью хеширования в одну короткую запись, которая выглядит примерно так: 3y60g37645wR76c4365d7s. Получить исходные данные из хеша невозможно, однако результатом преобразования этих данных по одному и тому же алгоритму всегда будет один и тот же хеш. В переводе с английского слово «hash» означает «перемешивать» или «запутывать». Эти значения достаточно точно отражают сущность хеширования – перемешивание или запутывание исходных данных до неузнаваемости. Другие названия хеширования – функция свертки или хеш-функция. Использование разных алгоритмов хеширования позволяет получать из одного и того же исходного массива данных хеши разной длины, однако использование одного и того же алгоритма хеширования применительно к исходным массивам данных разного объема всегда приводит к созданию хешей одинаковой длины.
Основные требования к хеш-функции
Чтобы выполнять те задачи, для которых используется функция свертки, она должна удовлетворять следующим требованиям:
- открытость алгоритма хеширования для обеспечения возможности любому желающему оценить ее криптоустойчивость;
- приведение любого объема исходных данных к записи заданной длины;
- минимальная вероятность возникновения коллизий, то есть получения одинаковых хешей из разных массивов исходных данных;
- любое изменение исходных данных (хоть на один бит) должно вести к полному изменению хеша;
- отсутствие высоких требований к вычислительным мощностям;
- устойчивость к обратному преобразованию, то есть вероятность восстановления входной информации по хешу должна быть минимальной.
Использование хеширования при майнинге криптовалют
В технологии блокчейн, на которой основаны криптовалюты, хеширование служит гарантией целостности цепочки расчетов между участниками и обеспечивает ее защиту от несанкционированных изменений. Благодаря хешированию взломать блокчейн чрезвычайно трудно. При майнинге криптовалют компьютеры решают математические задачи, связанные с поисками нужного хеша. Когда компьютеру удается решить такую задачу, его владелец получает денежное вознаграждение. Доступ к истории всех транзакций имеется у каждого участника. А цель майнинга состоит в том, чтобы путем перебора найти среди из всех возможных комбинаций требуемый хеш. Этот хеш соответствует секретному ключу и предоставляет возможность совершать новые транзакции.
В нахождении хеша принимает участие одновременно множество устройств. После «угадывания» кем-то требуемой комбинации происходит открытие нового блока данных, и все повторяется вновь. Принцип данной процедуры выглядит следующим образом. Компьютеры определяют хеш, в который должна входить часть предыдущего блока данных, случайная цифра и общая сумма хешей, вычисленных в течение нескольких последних минут. Майнеры производят изменение именно случайного числа до тех пор, пока оно не станет соответствовать всем требованиям системы. Процесс майнинга криптовалют имеет определенное сходство с раздачей данных на торрент-трекерах, используемых для загрузки видео- или звуковых файлов. Добытчики криптовалют обеспечивают нормальное функционирование денежной системы, в которой постоянно проводится огромное число операций. Ключевую роль при майнинге играет скорость хеширования, то есть вычисления хешей. Этот показатель называется хешрейтом. Он обозначает число хешей, которое способен определить компьютер или майнинговая ферма за единицу времени. Чем выше хешрейт устройства, тем больше криптовалюты можно добыть с его помощью.
В связи с увеличением сложности вычислений при майнинге для добычи цифровых монет используется все более мощное оборудование. Если первоначально для добычи биткоинов хватало возможностей обычного домашнего компьютера, то в дальнейшем заниматься майнингом биткоинов стало целесообразно лишь при использовании самых мощных игровых видеокарт. К настоящему моменту и этого оказалось недостаточно – теперь майнерам биткоинов для получения ощутимого дохода приходится пользоваться специальным оборудованием и объединяться в пулы. Их основная задача заключается в максимально быстром подборе требуемого хеша с минимальным потреблением электроэнергии.