Перейти к содержимому
buybitcoinsmart

Глоссарий / Майнинг и консенсус

SHA-256

Другие названия: SHA256.

Что такое SHA-256?
SHA-256 принимает входные данные любой длины и возвращает отпечаток размером 32 байта, который одинаков при каждом вычислении, непредсказуем заранее и из которого невозможно восстановить исходные данные.

Биткоин опирается на эту одну функцию почти везде: хеши блоков, идентификаторы транзакций, деревья Меркла, контрольные суммы адресов и контрольная сумма в вашей сид-фразе. На выходе получаются 256 бит, напечатанных как 64 шестнадцатеричных символа, взятых из пространства объемом примерно 1,2 × 10 в 77-й степени значений. Именно эта арифметика выявляет адрес с опечаткой до того, как ваши биткоины куда-либо уйдут.

Как это работает

SHA-256 разбивает входные данные на куски по 512 бит и прогоняет каждый через 64 раунда сдвигов, поворотов и сложений.

Обрабатываемое состояние состоит из восьми слов по 32 бита, инициализированных константами, взятыми из дробных частей квадратных корней первых восьми простых чисел, а 64 раундовые константы происходят из кубических корней первых 64 простых чисел. Эти источники и есть суть: это числа, которые никто не мог выбрать по скрытой причине, и именно так устройство алгоритма доказывает отсутствие в нем бэкдора. Алгоритм был создан Агентством национальной безопасности США и опубликован NIST в 2001 году, а действующая спецификация является FIPS 180-4.

Биткоин на деле получает три свойства. Функция детерминирована, поэтому любая машина в любом месте выводит один и тот же дайджест из одних и тех же байтов. У нее есть лавинный эффект, поэтому изменение одного бита входных данных меняет примерно половину битов выхода, и между ними нет никакой связи. И она устойчива к обратному выполнению: никто не нашел способа восстановить входные данные из дайджеста или получить два входа с общим дайджестом быстрее, чем перебор. SHA-1 пал жертвой практической коллизии в феврале 2017 года, что стоило исследователям огромного объема вычислений и совершенно не переносится на SHA-2.

Биткоин редко вызывает ее один раз. Заголовки блоков, идентификаторы транзакций, узлы дерева Меркла и контрольная сумма однорангового сообщения используют двойной проход, при котором дайджест хешируется второй раз. Хеши адресов идут другим путем: RIPEMD-160 применяется к дайджесту SHA-256, и отсюда берется полезная нагрузка в 20 байт устаревшего адреса. Taproot снова нарушил схему: BIP340 определяет помеченные хеши, которые вызывают SHA-256 один раз с разделяющим префиксом домена, чтобы подписи для одной цели нельзя было повторить для другой.

Где это видно

Каждая шестнадцатеричная строка из 64 символов в обозревателе блоков является результатом SHA-256. Это касается идентификатора транзакции, который вы вставляете в обращения в поддержку, и хеша блока, начинающегося с длинной череды нулей: именно так выглядит заголовок, превзошедший целевую сложность.

Два места важны напрямую, когда вы держите биткоины. Сид-фраза несет контрольную сумму, построенную из этой функции: 12 слов кодируют 128 бит случайности плюс 4 бита контрольной суммы, взятых из дайджеста SHA-256 этой случайности, поэтому фраза с одним неверным словом отвергается примерно в 15 случаях из 16, а не молча открывает пустой кошелек. Устаревший адрес несет похожую защиту, контрольную сумму в 4 байта из двойного прохода SHA-256, из-за чего вероятность того, что случайная опечатка даст действительный адрес, составляет примерно 1 из 4,3 млрд.

Майнинговое оборудование не существует ни для чего другого. ASIC представляет собой чип, который вычисляет эту одну функцию и никакую другую, поэтому майнеры биткоина не могут быть перепрофилированы для сетей, построенных на другом алгоритме, и поэтому выражение «монета SHA-256» описывает целое семейство форков. Заметьте предел всего этого: контрольная сумма выявляет адрес, который вы набрали с ошибкой, но никогда не выявит адрес, который вредоносная программа подменила на вполне действительный и не ваш.

Не путать с

Часто задаваемые вопросы

Могут ли квантовые компьютеры взломать SHA-256?

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

Почему биткоин хеширует данные дважды?

Двойное хеширование было мерой предосторожности Сатоши Накамото против атаки удлинением сообщения (length extension), слабости, при которой один проход может быть продолжен тем, кто знает только дайджест. Это почти ничего не стоит и полностью устраняет этот класс атак.

Читайте далее

Связанные термины

Еще в разделе «Майнинг и консенсус»

Читать эту страницу на английском