Что такое контрольная сумма (и почему это должно вас волновать)?

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

Объяснение контрольных сумм

Чтобы получить контрольную сумму, вы запускаете программу, которая обрабатывает этот файл алгоритмом. Типичные алгоритмы, используемые для этого, включают MD5, SHA-1, SHA-256 и SHA-512.

Алгоритм использует криптографическую хеш-функцию, которая принимает входные данные и создает строку (последовательность цифр и букв) фиксированной длины. Входной файл может быть небольшим файлом размером 1 МБ или массивным файлом размером 4 ГБ, но в любом случае вы получите контрольную сумму такой же длины. Контрольные суммы также могут называться «хешами».

Небольшие изменения в файле приводят к очень иному виду контрольных сумм. Например, мы создали два разных текстовых файла, которые почти одинаковы, но в одном есть восклицательный знак, а в другом - точка. После запуска на них встроенной утилиты контрольной суммы Windows 10 мы увидели очень разные контрольные суммы. Разница в один символ в базовом файле дает совсем другую контрольную сумму.

Когда контрольные суммы полезны

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

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

Компьютеры используют методы контрольной суммы для проверки данных на наличие проблем в фоновом режиме, но вы также можете сделать это самостоятельно. Например, дистрибутивы Linux часто предоставляют контрольные суммы, чтобы вы могли проверить правильно загруженный ISO-образ Linux, прежде чем записывать его на диск или помещать на USB-накопитель. Вы также можете использовать контрольные суммы для проверки целостности любого другого типа файла, от приложений до документов и носителей. Вам просто нужно знать контрольную сумму исходного файла.

В чем разница между суммами MD5, SHA-1 и SHA-256?

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

Однако эти криптографические хеш-функции не идеальны. Исследователи безопасности обнаружили «коллизии» с функциями MD5 и SHA-1. Другими словами, они нашли два разных файла, которые производят один и тот же хэш MD5 или SHA-1, но разные.

Это вряд ли произойдет случайно, но злоумышленник может использовать эту технику, чтобы замаскировать вредоносный файл под законный файл. Вот почему не следует полагаться на суммы MD5 или SHA-1 для проверки подлинности файла - просто для проверки на наличие повреждений.

Сообщений о конфликте SHA-256 пока не поступало, поэтому приложения теперь создают суммы SHA-256 вместо сумм MD5 и SHA-1. SHA-256 - более сильный и безопасный алгоритм.

Различные алгоритмы контрольной суммы дают разные результаты. Файл будет иметь разные контрольные суммы MD5, SHA-1 и SHA – 256. Если вам известна только сумма MD5 исходного файла, вы должны вычислить сумму MD5 своей копии, чтобы проверить, совпадает ли она.

СВЯЗАННЫЕ: Что такое SHAttered? Атаки на столкновение SHA-1, объяснение

Как рассчитать контрольные суммы

Если вы знаете контрольную сумму исходного файла и хотите проверить ее на своем ПК, вы можете это легко сделать. Windows, macOS и Linux имеют встроенные утилиты для генерации контрольных сумм. Вам не нужны сторонние утилиты.

СВЯЗАННЫЕ С: Что такое хэши MD5, SHA-1 и SHA-256 и как их проверить?

В Windows Get-FileHashкоманда PowerShell вычисляет контрольную сумму файла. Чтобы использовать его, сначала откройте PowerShell. В Windows 10 щелкните правой кнопкой мыши кнопку «Пуск» и выберите «Windows PowerShell». Вы также можете запустить его, выполнив поиск в меню «Пуск» по запросу «PowerShell» и щелкнув ярлык «Windows PowerShell».

Обновление: Get-FileHash входит в состав Windows 10. Но в Windows 7 вам придется установить обновление PowerShell 4.0, чтобы получить его.

В командной строке введите Get-FileHashи нажмите пробел.

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

Нажмите Enter, чтобы запустить команду, и вы увидите хэш SHA-256 для файла. В зависимости от размера файла и скорости хранилища вашего компьютера процесс может занять несколько секунд.

Если вам нужен другой тип контрольной суммы, добавьте соответствующую -Algorithmопцию в конец команды, например:

Get-FileHash C: \ путь \ к \ file.iso -Algorithm MD5
Get-FileHash C: \ путь \ к \ file.iso -Алгоритм SHA1

Сравните рассчитанную контрольную сумму с исходной. Вам не нужно смотреть слишком внимательно, так как контрольная сумма будет сильно отличаться, даже если в базовом файле будет только крошечная разница.

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