Средний Урок 1 4 мин чтения

Хэш: функция, которая движется только в одном направлении

SHA-256 берет что угодно и возвращает 256 бит. Невозможно вернуться назад, и именно эта невозможность поддерживает половину Биткойна.

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

Функция хеширования берет что угодно — слово, контракт, видео размером два гигабайта — и возвращает число фиксированного размера. В Bitcoin используется SHA-256, разработанная АНБ и опубликованная в 2001 году как федеральный стандарт США. Число, которое она возвращает, имеет 256 бит, что составляет шестьдесят четыре символа, записанных так, как пишут программисты — шестьдесят четыре для видео и шестьдесят четыре для слова.

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

Что бы ни вошло, всегда выходит одна и та же мера — и нет пути обратно от муки к зерну.

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

Третья характеристика — это однонаправленность, и именно из нее исходит фраза, которая дала название уроку. Вычисление резюме файла занимает микросекунды. Найти файл, который даст резюме, выбранное вами, требует попытки за попыткой, и пространство попыток — это те же 2^256, которые Урок 5 будет измерять. Никто не знает, как вернуться назад. Это не то чтобы сложно: просто не существует известного короткого пути.

Сжечь письмо занимает секунду. Прочитать письмо из пепла — это то, что никто не умеет делать.

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

Пятая характеристика — это устойчивость к коллизиям. Поскольку возможные входы бесконечны, а выходы — 2^256, существуют бесконечные разные входы с одним и тем же резюме — это математика, а не дефект. Требуется, чтобы никто не мог найти пару. И это требование уже было нарушено раньше: MD5 пал в 2004 году в руках китайской исследовательницы Ван Сяоюнь, а SHA-1 пал 23 февраля 2017 года, когда Google и институт CWI в Амстердаме опубликовали два разных PDF-файла с одним и тем же резюме, стоимостью более девяти квинтиллионов операций. Обе были выведены из эксплуатации, и полезно знать, что функции хеширования стареют.

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

С пятью характеристиками на руках можно увидеть, как SHA-256 поддерживает Bitcoin в четырех местах одновременно. Она связывает блоки, потому что каждый заголовок несет резюме предыдущего, и изменение старого блока портит все последующие. Она резюмирует транзакции блока в дерево. Она является вычислением, которое майнер повторяет миллиарды раз в секунду в поисках достаточно маленького результата. И она входит в рецепт адреса вместе с второй функцией под названием RIPEMD-160. Сатоши также применил ее дважды подряд в большинстве этих случаев, из предосторожности против известной атаки.

Деталь лексики завершает урок, потому что она предотвращает неправильный вопрос в будущем. Хеш — это не криптография. Криптография предполагает, что существует тот, кто расшифрует, с правильным ключом; резюмирование предполагает, что не существует никого, с каким бы то ни было ключом.

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