Все статьи
Технологии

Хеш-суммы SHA-256 и ГОСТ простыми словами

Хеш — это цифровой отпечаток файла. Поменяете один байт — отпечаток полностью изменится. Объясняем, зачем нужны SHA-256 и ГОСТ Р 34.11-2012, почему Atoros считает оба и как суд по этим циферккам проверяет, что файл не меняли с момента депонирования.

Что такое хеш-функция

Хеш-функция (от английского hash — «мешанина», «крошево») — это математическая процедура, которая берёт файл любого размера и превращает его в строку фиксированной длины. Эта строка и есть хеш-сумма, или цифровой отпечаток файла. Дали на вход двухчасовой фильм в 4 ГБ — получили 64 символа. Дали на вход слово «привет» — получили тоже 64 символа.

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

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

Пример с SHA-256

SHA-256 (Secure Hash Algorithm, 256 бит) — это алгоритм из семейства SHA-2, описанный в стандарте FIPS 180-4. Разработан Агентством национальной безопасности США (NSA) и опубликован в 2001 году. Длина хеша — 256 бит, то есть 32 байта. Если записать эти 32 байта шестнадцатеричными цифрами — получится строка из 64 символов.

Возьмём слово «hello» в кодировке UTF-8 (5 байт). Его SHA-256:

2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

Теперь заменим одну букву — «hello» на «hellp» (последняя «o» заменена на «p»). Новый хеш:

098c6d44d3245c0f7ec46a465e64c3a3a3daa98b6f576d6a6e63b9e95f74f950

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

Почему хеш нельзя обратить

Частый вопрос: если у меня есть хеш, могу я восстановить файл? Математически — нет. SHA-256 отображает 2 в степени N возможных входов (где N — любой размер файла в битах) в 2 в степени 256 возможных выходов. Это сжатие с потерей информации. Многие разные файлы в теории дают одинаковый хеш (это называется коллизией), но для SHA-256 найти такую пару — задача астрономической сложности.

Чтобы «обратить» SHA-256, пришлось бы перебрать примерно 2 в степени 256 вариантов. Это число с 78 нулями. Все компьютеры планеты, работая параллельно с нынешней скоростью, потратили бы на это время, превышающее возраст Вселенной. Поэтому в криптографии хеш-функция считается односторонней.

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

SHA-256 против ГОСТ Р 34.11-2012

ГОСТ Р 34.11-2012 — это российский стандарт хеширования, разработанный ФСБ и принятый в 2012 году (вступил в силу 1 января 2013-го, заменив устаревший ГОСТ Р 34.11-94). Длина хеша — тоже 256 бит, тоже 64 шестнадцатеричных символа. Алгоритм называется «Стрибог» (по имени славянского бога неба) и структурно отличается от SHA-256: другой набор подстановок, другой порядок операций, другая структура раунда.

С точки зрения криптографической стойкости оба алгоритма сопоставимы — ни на один из них нет известных практических атак. Разница в другом: в юрисдикции.

  • SHA-256 (FIPS 180-4) — международный стандарт. Принимают суды США, ЕС, Китая, Японии. Его используют Amazon, Google, Apple, Microsoft. Если спор дойдёт до иностранного суда или маркетплейса — нужен SHA-256.
  • ГОСТ Р 34.11-2012 — стандарт РФ. Требуют российские суды, ФНС, ПФР, Росреестр, нотариусы. Метка времени от ФНС по умолчанию считается по ГОСТ. В российском суде иностранного хеша без перевода и экспертизы может не хватить.

Atoros считает оба хеша параллельно при каждом депонировании. Это бесплатно для пользователя и занимает миллисекунды. В свидетельстве лежат две строки по 64 символа — и ни один суд в мире не сможет сказать, что «не понимает формат».

Почему не один универсальный хеш

Потому что в России ГОСТ — это часть закона. Статья 6 Федерального закона № 63-ФЗ «Об электронной подписи» прямо указывает, что квалифицированная электронная подпись работает по ГОСТ. Метка времени от ФНС подписана квалифицированной подписью — а значит, под ней хеш по ГОСТ. Без ГОСТа метка ФНС не имела бы юридической силы в РФ.

С другой стороны, если вы подаёте DMCA-жалобу в YouTube или иск в суд штата Калифорния — там про ГОСТ не слышали. Им подавайте SHA-256. Поэтому два хеша — это не прихоть, а необходимость для международных и российских кейсов одновременно.

Как проверить хеш самому

Любой пользователь может проверить хеш файла за минуту — без установки специальных программ. Достаточно встроенных средств операционной системы.

  • Linux и macOS. В терминале: sha256sum file.zip или shasum -a 256 file.zip. Для ГОСТ — пакет gostsum или библиотека libgost.
  • Windows. В командной строке: certutil -hashfile file.zip SHA256. Для ГОСТ — «КриптоПро CSP» с утилитой csptest.
  • Онлайн. Сайты вроде emn178.github.io/online-tools/sha256.html — но для конфиденциальных файлов не используйте, файл уходит на чужой сервер.

Сравниваете полученную строку с той, что указана в свидетельстве Atoros. Совпадает посимвольно — файл не менялся с момента депонирования. Не совпадает — либо файл другой, либо его модифицировали.

Почему MD5 и SHA-1 устарели

MD5 (RFC 1321, 1992 год) и SHA-1 (FIPS 180-1, 1995 год) — старые алгоритмы с длиной хеша 128 и 160 бит соответственно. Когда-то их использовали везде — от паролей до сертификатов сайтов. Сейчас они не годятся.

Проблема в коллизиях. Коллизия — это когда два разных файла дают одинаковый хеш. Для MD5 коллизию научились находить за секунды ещё в 2004 году (работа Ван Сяоюнь). Для SHA-1 — в 2017 году, когда Google и CWI опубликовали атаку SHAttered: два разных PDF-файла с одинаковым SHA-1, вычисленные за 2 в степени 63 операции.

После SHAttered все основные сервисы (GitHub, Microsoft, Google) перестали принимать SHA-1 для сертификатов и подписей. Atoros с первого дня работает только на SHA-256 и ГОСТ. Если где-то вам предложат депонирование с MD5 или SHA-1 — откажитесь, это уже не доказательство.

Как суд верифицирует хеш

В судебном процессе хеш проверяет эксперт. Сценарий типовой: истец прикладывает к иску свидетельство Atoros, в котором указаны SHA-256 и ГОСТ-хеш файла, метки времени от ФНС и КриптоПро, запись в Bitcoin OpenTimestamps. Ответчик заявляет: «А вдруг файл потом подменили?».

Суд назначает компьютерно-техническую экспертизу. Эксперт скачивает файл (например, с Яндекс.Диска по ссылке из свидетельства), считает от него SHA-256 и ГОСТ — и сравнивает с теми, что в свидетельстве. Если совпадает — файл именно тот, что депонирован. Дальше эксперт проверяет метку времени ФНС: она подписана квалифицированной подписью Удостоверяющего центра ФНС, проверяется через КриптоПро CSP. Подпись действительна — значит, хеш существовал в момент времени, указанный в метке.

Цепочка замыкается: метка времени подписывает не сам файл (который мог быть секретным), а только его хеш. Эксперт проверяет, что метка действительно покрывает этот хеш. Файл не менялся после даты метки — это математический факт, его нельзя опровергнуть показаниями свидетелей или «я не помню».

Хеш плюс метка времени равно доказательство

Здесь ключевой момент всей конструкции. Метка времени по стандарту RFC 3161 (Time-Stamp Protocol) подписывает именно хеш файла, а не сам файл. Это значит, что Atoros может отправить в ФНС не весь ваш 4-гигабайтный фильм, а только 32 байта его SHA-256. ФНС в ответ присылает токен с подписью: «Этот хеш был у меня такого-то числа в такую-то минуту».

В результате:

  • Содержимое файла остаётся в тайне. ФНС не знает, что вы депонировали.
  • Метка действительна юридически — это квалифицированная электронная подпись по 63-ФЗ.
  • Проверить метку может любой — открытый ключ ФНС опубликован.
  • Подделать метку невозможно — для этого пришлось бы подделать подпись УЦ ФНС.

Сочетание хеша и метки времени — это и есть «доказательство существования файла». Не доказательство авторства, а доказательство того, что в конкретную минуту у конкретного человека был файл с конкретным содержимым. Этого достаточно для 90% судебных споров об авторском праве, где вопрос сводится к датам.

Коротко

  • Хеш — цифровой отпечаток файла фиксированной длины. Один байт изменился — отпечаток неузнаваемо поменялся.
  • SHA-256 (FIPS 180-4, 2001, NSA) — международный стандарт. ГОСТ Р 34.11-2012 («Стрибог», ФСБ) — российский. Длина у обоих 256 бит.
  • Atoros считает оба хеша параллельно, чтобы свидетельство работало и в России, и за рубежом.
  • MD5 и SHA-1 устарели после атак 2004 и 2017 годов — не используйте.
  • Метка времени по RFC 3161 подписывает хеш, а не файл — это позволяет депонировать конфиденциальные данные.
  • Проверить хеш можно командой sha256sum в Linux или certutil -hashfile в Windows.

Подробнее о том, как устроены метки времени от ФНС и КриптоПро, и о том, почему BitTorrent-хранилище делает файл вечным — в соседних статьях. А если хотите задепонировать своё произведение прямо сейчас — начните бесплатно, SHA-256 и ГОСТ посчитаются автоматически.

Защитите свои права прямо сейчас — депонирование бесплатно и занимает 5–30 минут.