Безопасность
Безопасность файлов: проверка и защита
Полный гид: как проверять загрузки на вирусы, шифровать данные, безопасно передавать файлы и делать бэкапы. Практика и проверенные инструменты.
Скачали образ Windows, установщик программы или архив — а как убедиться, что файл дошёл целым и его не подменили по дороге? Для этого и придумали контрольные суммы: короткий «отпечаток» файла, который легко сверить с эталоном на сайте разработчика. Разбираем, что это такое и как проверить хэш файла штатными средствами Windows, macOS и Linux — без установки лишних программ.

Контрольная сумма нужна в двух случаях: убедиться, что файл не побился при скачивании, и проверить, что его не подменили на вредоносный. Ниже — команды для всех систем и разбор частой проблемы «суммы не совпадают».
Коротко: контрольная сумма (хэш) — это строка фиксированной длины, вычисленная из содержимого файла. В Windows её считают командой certutil -hashfile файл SHA256 или Get-FileHash, на macOS — shasum -a 256, в Linux — sha256sum. Полученную строку сравнивают с эталоном на сайте автора: совпала — файл целый, нет — качайте заново.
Контрольная сумма — это результат работы хэш-функции: файл любого размера пропускают через математический алгоритм, и на выходе получается короткая строка из букв и цифр фиксированной длины. Такую строку называют хэшем, дайджестом или «отпечатком» файла. Например, хэш SHA-256 всегда состоит из 64 шестнадцатеричных символов, независимо от того, посчитали вы его для текстового файла в 1 КБ или для образа диска на 5 ГБ.
Главное свойство хэш-функции — чувствительность к изменениям. Стоит поменять в файле хотя бы один бит, и контрольная сумма изменится полностью, до неузнаваемости. Обратное вычисление невозможно: по хэшу нельзя восстановить сам файл, поэтому контрольная сумма — это именно «отпечаток», а не сжатая копия. Самые распространённые алгоритмы — MD5, SHA-1 и SHA-256; последний сегодня считается стандартом.
Контрольная сумма — как пломба на посылке. Она не защищает содержимое сама по себе, но по ней сразу видно, вскрывали файл или нет: целая пломба (совпал хэш) — доставили как есть, сорванная (хэш другой) — что-то пошло не так.
Проверка контрольной суммы решает две разные задачи, и обе важны.
Именно поэтому крупные проекты — дистрибутивы Linux, образы Windows, менеджеры паролей, кошельки — рядом со ссылкой на скачивание всегда выкладывают строку SHA-256. Это часть базовой гигиены при загрузке софта; смежные приёмы разбираем в разделе безопасность файлов.
Контрольная сумма подтверждает, что файл совпадает с эталоном, но не проверяет сам файл на вирусы. Если заражён уже оригинал на сайте, хэш совпадёт, а файл всё равно будет опасным. Сумма и антивирусная проверка дополняют друг друга, а не заменяют.
В Windows ничего устанавливать не нужно — подойдут встроенные инструменты. Есть два штатных способа: утилита CertUtil в командной строке и командлет Get-FileHash в PowerShell.
cmd и нажмите Enter.:: синтаксис: certutil -hashfile путь_к_файлу алгоритм
certutil -hashfile C:\Users\Ivan\Downloads\ubuntu.iso SHA256Вместо SHA256 можно указать MD5 или SHA1. Утилита выведет строку хэша — её и сравнивают с эталонной. Совет: перетащите файл мышью прямо в окно командной строки, и путь подставится сам, без ручного набора.
PowerShell удобнее, если хочется сразу выбрать алгоритм и получить аккуратный вывод. Откройте PowerShell (Win + X → «Терминал» или «PowerShell») и выполните:
# SHA-256 (алгоритм по умолчанию)
Get-FileHash C:\Users\Ivan\Downloads\ubuntu.iso
# явно указать другой алгоритм
Get-FileHash ubuntu.iso -Algorithm MD5 | Format-ListБез параметра -Algorithm командлет считает SHA-256. Поддерживаются также MD5, SHA1, SHA384 и SHA512 — полный список приведён в документации Microsoft по Get-FileHash. Результат появится в колонке Hash.
Если командная строка не по душе, поставьте бесплатную утилиту HashTab или OpenHashTab — они добавляют в свойства файла (правый клик → «Свойства») вкладку с хэшами MD5, SHA-1 и SHA-256. Удобно для разовых проверок без терминала.
В macOS есть встроенные утилиты командной строки — откройте «Терминал» (Programs → Утилиты → Терминал) и используйте shasum для SHA-алгоритмов или md5 для MD5.
# SHA-256
shasum -a 256 ~/Downloads/ubuntu.iso
# SHA-1 (по умолчанию, если не указать -a)
shasum ~/Downloads/ubuntu.iso
# MD5
md5 ~/Downloads/ubuntu.isoПараметр -a 256 задаёт алгоритм: доступны 1, 224, 256, 384 и 512. Как и в Windows, файл можно перетащить в окно терминала, чтобы не набирать путь вручную.
В большинстве дистрибутивов Linux инструменты для хэширования уже установлены — для каждого алгоритма есть своя команда: sha256sum, md5sum, sha1sum, sha512sum.
# посчитать SHA-256
sha256sum ubuntu.iso
# посчитать MD5
md5sum ubuntu.isoУ Linux есть удобная возможность — автоматическая проверка по файлу с эталонной суммой. Многие проекты выкладывают рядом с образом файл вроде SHA256SUMS. Скачайте его в ту же папку и выполните:
sha256sum -c SHA256SUMSКоманда сама посчитает хэши перечисленных файлов и напишет напротив каждого OK или FAILED — сравнивать строки глазами не придётся.
Посчитать хэш — половина дела; вторая половина — правильно сравнить его с эталонным. Порядок такой:
SHA256SUMS). Сумма со стороннего форума или зеркала доверия не заслуживает.A1B2 и a1b2 — одно и то же. Проще всего скопировать обе строки в текстовый редактор одну под другой или воспользоваться поиском.Чтобы не сверять 64 символа вручную, подставьте эталон в команду — она ответит True или False: (Get-FileHash ubuntu.iso).Hash -eq 'ЭТАЛОННАЯ_СУММА'. PowerShell сам игнорирует регистр при таком сравнении.
Часто рядом с файлом лежит несколько сумм сразу — MD5, SHA-1, SHA-256. Разница между ними — в стойкости к подделке. Алгоритмы MD5 и SHA-1 давно считаются криптографически ненадёжными: для них научились подбирать разные файлы с одинаковым хэшем (коллизии). Это значит, что для защиты от умышленной подмены они не годятся — теоретически можно изготовить вредонос с тем же MD5, что и у оригинала.
Для проверки целостности (не побился ли файл при скачивании) MD5 по-прежнему вполне пригоден и считается быстрее. Но если задача — убедиться в подлинности загрузки, всегда выбирайте SHA-256. Когда автор публикует и MD5, и SHA-256 — проверяйте по SHA-256.
| Алгоритм | Длина хэша | Защита от подмены | Когда использовать |
|---|---|---|---|
| MD5 | 32 символа | Ненадёжен | Быстрая проверка целостности |
| SHA-1 | 40 символов | Ненадёжен | Устарел, лучше избегать |
| SHA-256 | 64 символа | Надёжен | Стандарт для подлинности |
Несовпадение хэша — сигнал, что файл на диске отличается от оригинала. Не паникуйте: чаще всего причина безобидная. Пройдитесь по списку сверху вниз.
Отдельный случай — файл скачался целым, но не открывается: тогда дело не в подмене, а в повреждении данных, и помогут приёмы из гайда как восстановить повреждённый архив. А если сомневаетесь, что у файла вообще то расширение, что заявлено, — определите его реальный тип через инструмент определения формата.
Если эталонную сумму вам прислали в том же письме или архиве, что и сам файл, — такая проверка бессмысленна. Подменивший файл злоумышленник подменит и сумму рядом. Эталон должен приходить из независимого доверенного источника: официального сайта, а не из вложения.
Это одно и то же. «Контрольная сумма», «хэш», «дайджест» и «отпечаток файла» — синонимы: строка фиксированной длины, вычисленная из содержимого файла хэш-функцией вроде MD5 или SHA-256.
Нет. В Windows есть встроенные CertUtil и Get-FileHash, в macOS — shasum и md5, в Linux — sha256sum и md5sum. Сторонние утилиты вроде HashTab нужны только ради удобного графического интерфейса.
Вы считаете другим алгоритмом. MD5 даёт 32 символа, SHA-1 — 40, SHA-256 — 64. Посчитайте тем же алгоритмом, что указан рядом с эталонной суммой.
Нет. Шестнадцатеричная строка хэша нечувствительна к регистру: A1FF и a1ff — одна и та же сумма. Инструменты сравнения это учитывают.
Для проверки, что файл не побился при скачивании, — да. Для защиты от умышленной подмены — нет: у MD5 есть коллизии. Если нужна подлинность, используйте SHA-256.
Нет. Совпадение подтверждает лишь, что файл идентичен эталону. Если заражён сам оригинал, хэш совпадёт, а файл останется опасным. Проверяйте загрузки ещё и антивирусом.