Содержание
Любой, кто имеет дело с криптовалютами, рано или поздно столкнется с такими терминами, как хэш или хэшрейт (иногда в русском встречается написание через «Е»: «хеш», «хешрейт» и т.д.). «Хэш» — это результат математической функции, которая создает совершенно другой выходной набор фиксированного размера из любого входного набора. Очень легко вычислить результат на входе, но очень сложно вычислить обратно от результата к входу. Одним из самых известных методов хэширования, который используется в биткоине, среди прочего, является «Алгоритм безопасного хэширования — 256» (SHA-256).
Что такое хэш и как он создается
«Хэш» или «хэш-функция» происходит от английского глагола «to hash» и означает «измельчить». Вы берете кучу данных, измельчаете и меняете их местами, чтобы придать им другую форму. Цель хэш-функции — сопоставить большой входной набор с меньшим целевым набором. Строка, представляющая результат этой функции, называется «хэш».
В криптографии хэш-функция также описывается как математическая односторонняя функция. Текст можно легко зашифровать в одном направлении с помощью хэша, в то время как зашифрованный текст очень сложно перевести обратно в исходный текст.
Пример.
Берем простой текст и хэшируем его с помощью SHA-256. Посмотрите, как небольшие различия меняют весь хэш.
1) Вот слово «привет», хэшированное с помощью SHA-256.
d3751d33f9cd5049c4af2b462735457e4d3baf130bcbb87f389e349fbaeb20b9
2) Вот слово «Привет», хэшированное с помощью SHA-256.
753692ec36adb4c794c973945eb2a99c1649703ea6f76bf259abb4fb838e013e
3) Здесь слово «привет!», которое было хэшировано с помощью SHA-256.
f4facd09fc865aa866b1390e02911b27f599bd52793d3835429862f900b76d6c
Независимо от того, что мы вводим, будь то длинные или короткие тексты, пишем ли мы слово в нижнем или верхнем регистре, добавляем или опускаем символы, всегда будет генерироваться новый индивидуальный хэш, который, по-видимому, не содержит никакой системы и имеет предопределенное значение, длину (здесь 64 символа).
Если объект попытается вычислить исходный текст с помощью обратной функции, это займет много времени, потому что вычисление практически невозможно!
Хэш-коллизии
С криптологическими хэш-функциями, используемыми для криптовалют, таких как биткоин, необходимо гарантировать, что каждый ввод приводит к разным результатам. В противном случае происходит так называемая хэш-коллизия, при которой соответствующий хэш-алгоритм считается «сломанным» и небезопасным (также говорят о «разрыве» хэш-функции).
Какие алгоритмы хэширования наиболее распространены
Наиболее распространенными алгоритмами хэширования на сегодняшний день являются группа семейства SHA-2 (Secure Hash Algorithm). Группа SHA-1 сейчас считается небезопасной, так как в прошлом несколько раз обнаруживались коллизии.
SHA-256 является наиболее широко используемым алгоритмом хэширования. Существуют также SHA-224, SHA-384 и SHA-512, все они относятся к семейству SHA-2. Число, добавляемое после SHA, указывает длину хэш-значения в битах.
На сегодняшний день SHA-256 считается безопасным. Это связано с тем, что так называемая атака грубой силы на эту функцию потребует в среднем 40*38 попыток угадать входное значение для заданного результата. (Атака грубой силой или полным перебором — это не что иное, как перебор всех вариантов взлома пароля один за другим.) Поскольку эта вычислительная мощность не может быть собрана в настоящее время, SHA-256 изначально считается защищенным от коллизий.
Хэши при Proof-Of-Work
Криптовалюты, такие как биткоин, требуют хэш-функций, особенно в процессе майнинга. Так называемые майнеры пытаются найти хэш, соответствующий заданным требованиям или правилам.
Сложность майнинга определяет требования к тому, чтобы хэш-значение считалось действительным. Сложность предназначена для того, чтобы время блока всегда оставалось одинаковым, независимо от вычислительной мощности в сети.
В конце концов, в процессе майнинга пробуются различные входные данные с помощью хэш-функции, чтобы получить действительный результат (значение хэш-функции), соответствующий требованиям текущей сложности майнинга.
Эти задачи могут выполняться с помощью процессоров и GPU. Но есть и специальное оборудование для майнинга (ASIC), которое может выполнять эту задачу особенно эффективно.