В России для государственных информационных систем и любой криптографии, подлежащей сертификации ФСБ, контрольные суммы обычно вычисляют не SHA-256, а ГОСТ Р 34.11-2012 «Стрибог» — национальным стандартом хеширования, пришедшим на смену устаревшему ГОСТ Р 34.11-94. Дистрибутивы отечественных ОС (Astra Linux, «Альт») и другого сертифицированного ПО нередко публикуют суммы именно в этом алгоритме, а не в привычном SHA-256.
Почему у контрольной суммы вообще должен совпадать алгоритм
Хеш, вычисленный одним алгоритмом, нельзя сравнивать с хешем, вычисленным другим, — даже если оба они корректны сами по себе, длины и внутренняя структура отличаются, поэтому единственный способ проверки — вычислить именно тот алгоритм, в котором опубликована эталонная сумма. Для «Стрибога» большинство браузерных инструментов, включая этот, такой возможности не имеют — Web Crypto API стандартно предоставляет только SHA-семейство и MD5, а «Стрибог» требует отдельной реализации.
Чего контрольная сумма не гарантирует
Совпадение хешей подтверждает лишь то, что файл идентичен тому, из которого вычислен опубликованный хеш, — но не то, что этот оригинал безопасен или действительно происходит от заявленного источника. Если злоумышленник подменит и файл, и опубликованную контрольную сумму одновременно (например, на скомпрометированном зеркале), проверка ничего не выявит — отсюда важность подписи (например, GPG) поверх самой суммы.
Зачем это нужно
- Убедиться, что загруженный образ дистрибутива или архив не повредился при скачивании с зеркала.
- Быстро сравнить два больших файла без побайтового сопоставления.
- Проверить, что резервная копия файла идентична оригиналу.
Почему иногда используют CRC32 вместо SHA-256
CRC32 намного быстрее криптографических хеш-функций, но его легко подделать намеренно — это не проблема для обнаружения случайного повреждения при передаче (для чего CRC32 и создавали), но непригодная защита от злоумышленника, который хочет подменить файл незаметно. Поэтому CRC32 до сих пор встречается в архиваторах (ZIP, RAR) и сетевых протоколах для контроля ошибок, а не там, где нужна именно криптографическая стойкость.