Хэш-функция SHA-256: что это и зачем она нужна?
В мире криптовалют есть хэш-функция SHA-256. Она поддерживает высокий уровень безопасности в сети Bitcoin. Кроме того, функция нужна для составления адресов для идентификации транзакции и блока. Поэтому SHA-256 — это важнейшая структура, отвечающая за надежность данных сети.
Историческая справка
Хэш-функция SHA-256 появилась в то время, когда интернет стал обретать мировую популярность. Тогда она участвовала в поддержании безопасности цифровой связи и проверки информации, проходящей через сеть.
Ее предшественница — хэш-функция MD5 — гораздо более доступная в вычислительном плане и дешевая. В конце 90-х появились сомнения в ее безопасности. Тогда Ханс Доббертин доказал, что при наличии определенных возможностей и навыков взломать систему может любой хакер.
После этого Агентство национальной безопасности США (АНБ) озадачилось проблемой создания более надежной хэш-функции. В результате появилась SHA-256.
Ее главное преимущество — удачное сочетание безопасности и вычислительной скорости. Они объясняются, прежде всего, 256-битными ключами. Поэтому хэш-функция стала использоваться во многих серверах и приложениях.
Принцип работы
Безопасность SHA-256 обусловлена грамотным выстраиванием криптографических функций. Например, хэш-функций Merkle-Damgarding, которой присуще одностороннее сжатие Davies-Meyer. Этот метод устойчив к дублированию хэшей и обеспечивал достаточно высокую защиту.
Метод стал основой будущей функции SHA-256. Она вмещает хороший объем входных данных и выдает сводку информации ограниченной длины. Если введенные данные меняются, SHA-256 мгновенно создает новый хэш.
Благодаря новой функции стало возможно кодировать большие объемы данных в коротких уникальных сообщениях. SHA-256 является детерминированной. Поэтому, если ввести повторяющуюся информацию, исход будет одинаковым. Но даже на незначительные изменения в данных функция отреагирует, и эти изменения будут доступны всем участникам сети.
Поэтапный процесс вычисления хэшей SHA-256
SHA-256 — оптимизированная функция протокола сети Bitcoin. В ней перед майнерами стоит задача производить сложные вычисления.
Майнерам необходимо многократно вычислять хэши SHA-256. Цель достигнута, если майнер получает хэш, десятичное значение которого меньше цели, заданной сетью.
Кроме того, система постоянно модифицируется для усложнения или облегчения работы. Связано это, прежде всего, с вычислительной мощностью. Иными словами, чем мощнее сеть, тем сложнее майнинг и тем сложнее вычислить правильный хэш. Поэтому можно сказать, что Накамото создал самую надежную майнинговую систему для криптовалюты. Она по сей день используется и требует серьезных запасов ресурсов в виде энергии и вычислительной мощности.
Результат вычислений приобретает вид уникального идентификатора, доступного для обнаружения в любом блоке сети. Он и есть функция SHA-256.
Генерация адресов биткоина
Функция SHA-256 использовалась Накамото для создания биткоин-адресов. Они становятся исходом применения криптографической системы с цифровой подписью ECDSA. Эти подписи очень сложные и их много, поэтому Накамото решил их упростить.
Во-первых, сначала с применением ECDSA создаются ключи. Во-вторых, открытый ключ хэшируется с помощью SHA-256. В-третьих, к хэшу применяется функция RIPEMD-160. Она генерирует безопасный, оригинальный и достаточно короткий адрес.
Шестнадцатеричный идентификатор «0х00» сразу же добавляется в хэш RIPEMD-160. Более того, с его помощью можно выявить адрес в сети Bitcoin цифровым способом.
Далее следует применить функцию SHA-256, и полученный 4-байтный результат соединить с идентификатором 0х00. В заключение — использование функции с именем Base58Check, которая и создает готовый биткоин-адрес.
Эта процедура гарантирует несколько важных нюансов.
- В начале любого биткоин-адреса стоит цифра 1, по крайней мере, если они унаследованные. Другие адрес биткоинов генерируются иными способами.
- Все биткоин-адреса оригинальны и неповторимы.
- Полученные адреса можно проверить.
- Идентификация транзакций.
Что касается последнего пункта, его суть заключается в том, что уникальными являются не только адреса биткоинов, но и все транзакции, проходящие по сети. В результате полностью исключена вероятность утечки данных и использования их в корыстных целях.