MSTR Cat

Блокчейн/Уровень II · Механика/2.1 Криптография/Урок 1

Хеш-функции и SHA-256

Цифровой отпечаток, на котором держится реестр

МатериалыТерминал с установленными shasum или opensslОнлайн-калькулятор SHA-256Два текстовых файла, отличающихся всего одним символом

Любопытство

  1. Почему изменение одного символа в файле меняет половину его хеша?
  2. Если бесконечному множеству возможных входных данных соответствует конечное множество выходных значений, почему всё равно практически невозможно найти два входа, дающих коллизию?
  3. Что обеспечило безопасность SHA-256, когда его предшественник SHA-1 был взломан?

Исследование

  1. Криптографическая хеш-функция преобразует данные произвольной длины в дайджест фиксированного размера. Она детерминирована: одни и те же входные данные всегда дают один и тот же результат. Её легко вычислить, но практически невозможно обратить. Это свойство однонаправленности и определяет стойкость к нахождению прообраза. Если у злоумышленника есть только хеш, он не может восстановить исходное сообщение. Именно эта необратимость обеспечивает проверку целостности и подтверждение идентичности в распределённых системах.
  2. SHA-256 выдаёт 256-битный результат независимо от размера входных данных. Будь то один байт или файл размером в гигабайт, дайджест всегда занимает ровно 32 байта. Фиксированная длина позволяет единообразно хранить и сравнивать результаты. Функция обрабатывает данные блоками по 512 бит в 64 раунда логических операций. Её устройство следует конструкции Меркла — Дамгора: функция сжатия по цепочке применяется к блокам, и именно перемешивание внутри функции сжатия делает результат хаотичным.
  3. Лавинный эффект — ключевое свойство: изменение одного бита входных данных меняет примерно половину битов выходного хеша. Благодаря такой чувствительности даже незначительное повреждение или подделка данных даёт совершенно другой дайджест. Поэтому хеш-функции идеально подходят для проверки целостности файлов и обнаружения изменений. Любая модификация, даже самая незаметная, нарушает совпадение ожидаемого и вычисленного хешей.
  4. Стойкость к коллизиям — самое требовательное свойство. Чтобы найти два разных входа с одинаковым хешем, из-за парадокса дней рождения требуется около 2^128 операций. Для SHA-256 такие вычислительные затраты делают атаки полным перебором непрактичными на современном оборудовании. SHA-1, напротив, оказался уязвим к практической атаке на коллизии, которую в 2017 году продемонстрировали исследователи Google и CWI; она известна как SHAttered. Эта уязвимость вынудила отказаться от SHA-1 в приложениях, критичных к безопасности.
  5. Bitcoin применяет SHA-256 дважды — это называется двойным хешированием. Заголовки блоков и идентификаторы транзакций хешируются с помощью SHA-256, после чего результат повторно хешируется SHA-256. Сатоши так и не объяснил этот выбор; распространённое объяснение — защита от атак удлинением сообщения, известного свойства хешей на основе конструкции Меркла — Дамгора, таких как SHA-256. Каждый хеш блока и идентификатор транзакции в блокчейне — результат этого двойного прохода.
  6. Откройте любой терминал или онлайн-инструмент и вычислите хеш 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КристаллизоватьНапишите одно предложение о том, как дайджесты фиксированной длины позволяют проверять данные произвольного размера.

Проверка фактов

Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.

Открыть в интерактивной академии →

EN PT ES ZH JA KO DE FR MS