Шифрование и хеширование

Шифрование и хеширование

Хэш — это значение или число, сгенерированное входе из последовательности текста. В результате применения к данным на входе хеш функции, на выходе, получается строчка или число фиксированной длины, которая будет значительно различаться в зависимости от незначительных изменений на входе.

Алгоритмы хеширования разрабатываются таким образом, чтобы было невозможно вернуть хэш в свою оригинальную последовательность. Другими словами у хеша отсутствует ключ, который позволяет «посмотреть» оригинальные данные, созданные на входе.

Шифрование и хеширование

Рассмотрим практический пример. Пользователь регистрируется на сайте и при создании им пароля на сервере срабатывает функция хеширования, при этом в базу данных прописывается длинная цепочка символов (хеш).

При последующем вводе пароля пользователем, опять срабатывает функция хеширования, а затем функция сравнения с хешом прописанным в базе данных. Если они совпадают, то пользователь ввел правильный пароль. При этом, даже владельцы сервера не знают пароль пользователя, они лишь проверяют его достоверность, сравнивая хеши.

Очевидно, что сравнивать можно не только пароли, а любые данные переданные на вход.

Наиболее распространенная функция хеширования, известна всем программистам — это MD5. Данный алгоритм производит 16-битное значение хэша, обычно выражаемое 32-х значным шестнадцатеричным числом.

Более сложные, но не менее распространенные алгоритмы хеширования, это серия SHA. Из этой серии нам наиболее интересен SHA-256, он производит 32-х битные значени хеша.

Именно на этом алгоритме хеширования построен классический биткоин. Стоит отметить, что алгоритм был разработан в США в Агентстве Национальной Безопасности (АНБ).

Шифрование преобразует какие-либо данные в серию знаков, которые не имеют фиксированной длины. Но его главное отличие от хеширование в том, что при шифровании есть получатель сообщения, а значит должен существовать способ, с помощью которого это сообщение можно прочитать.

Другими словами, зашифрованные последовательности могут быть повернуты назад в их оригинальную расшифрованную форму, при наличии соответствующего ключа.

Есть два основных типа шифрования - симметричное шифрование и шифрование на основе открытых ключей. При симметричном шифровании используют один и тот же ключ как для шифровки, так и для дешифровки.

У шифрования на основе открытых ключей есть два ключа — открытый и закрытый. Открытый ключ шифрует данные, закрытый — расшифровывает их.

Открытый ключ доступен для любого пользователя, который хочет зашифровать сообщения, однако только у конкретного получателя есть доступ к частному (закрытому) ключу, а значит и возможность расшифровать сообщения, предназначенные только для него.

Алгоритм шифрования AES явлется стандартом, когда речь заходит о способе симметричного шифрования и рекомендуется для большинства случаев (шифруется 256 битным размером ключа). PGP — наиболее популярный алгоритм шифрования на основе открытых ключей. Однако в биткоине ипользуется алгоритм шифрования на основе открытых ключей - ECDSA.

Практическое применение. В каждой криптовалюте используется свой определенный алгоритм шифрования (хеширования). Некоторые криптовалюты могут поддерживать несколько протоколов сразу. Эти параметры учитывается при разработке и настройке ПО для майнингового оборудования.

Чтобы программа для майнинга работала корректно с конкретной криптовалютой, она должна иметь поддержку заданного алгоритма.

В описании к ПО алгоритмы шифрования (хеширования) могут иметь различные названия, типа как: «алгоритм», «алгоритм майнинга», «алгоритм шифрования», «алгоритм хеширования», «протокол» и т. п.

Примеры криптовалют и их алгоритмы
Название Тикер Алгоритм и особенности
Bitcoin BTC SHA-256 Позволяет использовать специализированное оборудование (асики), что приводит к резкому увеличению сложности и уменьшению децентрализации.
Bitcoin Cash BCH
Litecoin LTC Scrypt В отличии от SHA-256 эффективнее использует ресурсы компьютера (в частности память), однако этот алгоритм также можно использовать на асиках (Scrypt-ASIC)
Dash DASH X11 (X13, X15) Цифра в названии говорит о количестве ступеней хеширования с различными хэш-функциями. Это повышает надежность и анонимность криптовалюты.
Ethereum ETH Ethash (старое название Dagger Hashimoto) Этот алгоритм использует альтернативные версии алгоритмов SHA3-256 и SHA3-512. Благодаря этому майнинг «эфира» происходит гораздо быстрее и дешевле, чем биткойна.
Ethereum Classic ETC
Monero XMR CryptoNight Протокол CryptoNote работает на основе кольцевых подписей. При передаче Monero происходит перемешивание транзакций, что обеспечивает высокую анонимность.
Bitcore BTX Timetravel 10 Bitcore является гибридным форком bitcoin, сочетает в себе всю криптографическую технологию Bitcoin, но при этом использует новую цепь блоков и алгоритм timetravel10, устойчивый к асикам, но позволяющий майнить на видеокартах
SIBCoin SIB X11Gost (X11ГОСТ) Алгоритм хеширования: X11Gost, внутри цепочки X11 добавлена отечественная, утвержденная ФСБ в качестве отечественного стандарта, хеш функция "Стрибог" (ГОСТ Р 34.11-2012).
Zcash ZEC Equihash Equihash базируется криптографической концепции, которая носит название «Обобщенная проблема дня рождения». Устайчив к майнингу на асиках (ASIC)