Глоссарий

Контрольная сумма

проверочная суммазначение проверки целостности

Контрольная сумма — компактное значение, вычисляемое по данным для обнаружения случайных изменений или повреждений.

Определение

Контрольная сумма — небольшое значение, вычисленное по блоку данных, чтобы позже программа или человек могли пересчитать его и сравнить результат. Если значения различаются, данные почти наверняка изменились при хранении, копировании или передаче.

Контрольные суммы встречаются в форматах файлов, сетевых протоколах, загрузках, резервных копиях и архивах. Они удобны своей компактностью и простым сравнением, а не тем, что содержат исходные данные.

Как это работает

Алгоритм читает точные байты и объединяет их в значение фиксированного размера. Например, CRC32 выдаёт 32-битное значение, часто записанное как 8 шестнадцатеричных символов. Криптографические хеши, такие как SHA-256, тоже используют как контрольные суммы, если опубликованному дайджесту можно доверять.

Одинаково выглядящий текст может иметь разные контрольные суммы, если отличаются кодировка байтов, переводы строк, пробелы или содержимое файла. Контрольная сумма имени файла не является контрольной суммой самого файла.

Ограничения безопасности

Многие алгоритмы контрольных сумм, включая простые суммы и CRC, рассчитаны на случайные ошибки, а не на злонамеренную подмену. Если атакующий может изменить и данные, и контрольную сумму, он часто способен сделать так, чтобы они совпали.

Когда модель угроз включает намеренное изменение данных, нужны HMAC, цифровая подпись или механизм целостности конкретного протокола. SHA-256 даёт более сильную стойкость к коллизиям, чем CRC32, но обычный хеш сам по себе всё равно не доказывает, кто создал данные.

Частые вопросы

Обычно нет. Контрольная сумма обнаруживает изменение данных; для восстановления нужны коды исправления ошибок или резервные копии.

Нет, если речь о противодействии злоумышленнику. CRC32 быстр и хорошо обнаруживает распространённые случайные повреждения, но не рассчитан на защиту от намеренной подмены.

Отличаются данные или алгоритм. Проверьте точные байты файла, кодировку текста, переводы строк, скрытые пробелы, вариант алгоритма и формат вывода.

См. также