Блокчейн/Уровень II · Механика/2.1 Криптография/Урок 1
Хеш-функции и SHA-256
Цифровой отпечаток, на котором держится реестр
МатериалыТерминал с установленными shasum или opensslОнлайн-калькулятор SHA-256Два текстовых файла, отличающихся всего одним символом
Любопытство
- Почему изменение одного символа в файле меняет половину его хеша?
- Если бесконечному множеству возможных входных данных соответствует конечное множество выходных значений, почему всё равно практически невозможно найти два входа, дающих коллизию?
- Что обеспечило безопасность SHA-256, когда его предшественник SHA-1 был взломан?
Исследование
- Криптографическая хеш-функция преобразует данные произвольной длины в дайджест фиксированного размера. Она детерминирована: одни и те же входные данные всегда дают один и тот же результат. Её легко вычислить, но практически невозможно обратить. Это свойство однонаправленности и определяет стойкость к нахождению прообраза. Если у злоумышленника есть только хеш, он не может восстановить исходное сообщение. Именно эта необратимость обеспечивает проверку целостности и подтверждение идентичности в распределённых системах.
- SHA-256 выдаёт 256-битный результат независимо от размера входных данных. Будь то один байт или файл размером в гигабайт, дайджест всегда занимает ровно 32 байта. Фиксированная длина позволяет единообразно хранить и сравнивать результаты. Функция обрабатывает данные блоками по 512 бит в 64 раунда логических операций. Её устройство следует конструкции Меркла — Дамгора: функция сжатия по цепочке применяется к блокам, и именно перемешивание внутри функции сжатия делает результат хаотичным.
- Лавинный эффект — ключевое свойство: изменение одного бита входных данных меняет примерно половину битов выходного хеша. Благодаря такой чувствительности даже незначительное повреждение или подделка данных даёт совершенно другой дайджест. Поэтому хеш-функции идеально подходят для проверки целостности файлов и обнаружения изменений. Любая модификация, даже самая незаметная, нарушает совпадение ожидаемого и вычисленного хешей.
- Стойкость к коллизиям — самое требовательное свойство. Чтобы найти два разных входа с одинаковым хешем, из-за парадокса дней рождения требуется около 2^128 операций. Для SHA-256 такие вычислительные затраты делают атаки полным перебором непрактичными на современном оборудовании. SHA-1, напротив, оказался уязвим к практической атаке на коллизии, которую в 2017 году продемонстрировали исследователи Google и CWI; она известна как SHAttered. Эта уязвимость вынудила отказаться от SHA-1 в приложениях, критичных к безопасности.
- Bitcoin применяет SHA-256 дважды — это называется двойным хешированием. Заголовки блоков и идентификаторы транзакций хешируются с помощью SHA-256, после чего результат повторно хешируется SHA-256. Сатоши так и не объяснил этот выбор; распространённое объяснение — защита от атак удлинением сообщения, известного свойства хешей на основе конструкции Меркла — Дамгора, таких как SHA-256. Каждый хеш блока и идентификатор транзакции в блокчейне — результат этого двойного прохода.
- Откройте любой терминал или онлайн-инструмент и вычислите хеш SHA-256 строки 'MSTR Cat'. Затем вычислите хеш строки 'MSTR cat', изменив регистр только одной буквы. Сравните два 64-символьных шестнадцатеричных результата. Они окажутся совершенно разными, без какого-либо узнаваемого сходства. Это мгновенное расхождение наглядно демонстрирует лавинный эффект: изменение одного бита полностью перемешивает дайджест, подтверждая, что функция крайне чувствительна к входным данным.
Ключевые факты
- SHA-256 выдаёт результат фиксированной длины 256 бит при любом размере входных данных.
- Благодаря лавинному эффекту изменение одного бита меняет примерно половину битов хеша.
- Поиск коллизии SHA-256 полным перебором требует около 2^128 операций.
- SHA-1 был взломан в 2017 году практической атакой на коллизии (SHAttered).
- Bitcoin использует двойной SHA-256 для хешей блоков и идентификаторов транзакций.
- SHA-256 обрабатывает данные блоками по 512 бит в 64 раунда.
Упражнение девять, шесть, три, один
9СобратьПеречислите 9 хеш-функций или алгоритмов вычисления контрольных сумм, применяемых в вычислительной технике. Укажите размер их выходного значения и основные области применения.
6СгруппироватьРаспределите эти 9 вариантов по 6 категориям в зависимости от криптостойкости: взломанные, устаревшие, стандартные для общего применения, стандартные для задач с повышенными требованиями к безопасности, специализированные для высокой скорости и прочие.
3Выделить главноеСведите 6 групп к 3 основным причинам, по которым для конкретной задачи выбирают ту или иную хеш-функцию.
1КристаллизоватьНапишите одно предложение о том, как дайджесты фиксированной длины позволяют проверять данные произвольного размера.
Проверка фактов
Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.