Как проверить контрольную сумму ISO Linux и убедиться, что образ не подменён

Краткие ссылки
How This Process Works
How to Verify a Checksum On Linux
How to Verify a Checksum On Windows
Месяцем ранее сайт Linux Mint был взломан, и туда загрузили модифицированный ISO с бэкдором. Проблему быстро исправили, но инцидент подчёркивает важность проверки ISO перед использованием. Ниже описаны практические шаги и рекомендации.
Как это работает
Коротко — процесс проверки ISO состоит из следующих шагов:
- Загрузите ISO образ с сайта дистрибутива или с зеркала/торрента.
- Скачайте файл с контрольными суммами (обычно TXT) и его цифровую подпись (часто .gpg или .asc).
- Получите публичный PGP-ключ подписавшего лица или проекта (через сайт или отдельный keyserver).
- С помощью PGP-ключа проверьте цифровую подпись файла с контрольными суммами — это подтверждает, что файл с суммами не подменён.
- Сгенерируйте контрольную сумму для скачанного ISO и сравните её с официальным значением в TXT — это подтверждает целостность образа.
Общие замечания:
- Типы контрольных сумм: MD5 (устарел), SHA-1 (редко), SHA-256 (стандарт для современных дистрибутивов). Мы в основном используем SHA-256.
- Если дистрибутив не подписывает файлы с контрольными суммами, вы выполняете только шаги 1, 2 и 5 — это менее надёжно, так как злоумышленник может подменить и ISO, и файл сумм.
- PGP повышает уверенность, но не даёт стопроцентной гарантии: если атакующий может подменить как ISO, так и публичный ключ на том же сервере, проблема остаётся. Поэтому по возможности получайте отпечаток ключа по отдельному каналу (официальный сайт через HTTPS, профиль разработчика в соцсетях с верификацией, зеркала).
Подробности модели доверия PGP
Ниже кратко описание важных терминов:
- Подпись (signature): криптографический объём данных, созданный приватным ключом, подтверждающий авторство/целостность файла.
- Публичный ключ (public key): ключ, которым проверяют подпись; приватный — держит автор.
- Отпечаток ключа (fingerprint): хеш-строка, дающая краткое представление ключа; сравните её с источником дистрибутива.
- Web of Trust: модель, где пользователи подтверждают ключи друг друга; для большинства пользователей достаточно сверить отпечаток с сайтом дистрибутива.
Важно: подтверждение «good signature» указывает, что подпись математически корректна для указанного ключа. Но доверять ключу — отдельная задача: убедитесь, что отпечаток ключа соответствует тому, что публикует дистрибутив.
Как проверить контрольную сумму на Linux
В качестве примера используем Linux Mint. Процедура применима к большинству дистрибутивов с незначительными изменениями.
Шаги:
Скачайте ISO, файл с суммами и файл подписи. Например: sha256sum.txt и sha256sum.txt.gpg. Сохраняйте файлы в одну папку (обычно ~/Downloads).
Получите PGP-ключ проекта. Для Linux Mint ключ размещён на сервере Ubuntu Keyserver; пример команды:
gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 0FF405B2Обратите внимание: сайт дистрибутива обычно указывает нужный KEYID или полную ссылку.

- Перейдите в папку с загруженными файлами:
cd ~/Downloads- Проверьте подпись файла с контрольными суммами:
gpg --verify sha256sum.txt.gpg sha256sum.txtОжидаемый результат: gpg сообщит «good signature», укажет идентификатор ключа и имя владельца (если подпись подписана явно). Если ключ не находится в «вебе доверия», gpg может предупредить, что ключ не «trusted», но это не означает, что подпись неправильная — это про модель доверия.

- Если подпись хорошая, проверьте контрольную сумму самого ISO:
sha256sum --check sha256sum.txtПрограмма попытается найти файлы, перечисленные в sha256sum.txt, и сообщит OK для совпавших. Если вы скачали только один образ, другие строки покажут «no such file or directory» — это нормально.

- Альтернативный способ — вычислить хеш вручную и сравнить визуально:
sha256sum /path/to/file.iso
# или для MD5
md5sum /path/to/file.isoСравните полученную строку с тем, что в официальном файле.
Советы для продвинутых пользователей:
- Получите отпечаток ключа и сверяйте его с отпечатком, опубликованным на официальном сайте через HTTPS.
- Для автоматизации впишите проверки в скрипт и запускайте в CI перед распространением образа в организации.
Как проверить контрольную сумму на Windows
Windows не содержит встроенных средств для проверки PGP-подписей и некоторых чексумм, но есть свободные инструменты. Мы рассмотрим Gpg4win (с Kleopatra) и PowerShell.
Скачайте Gpg4win: набор инструментов для работы с OpenPGP на Windows. В его состав входит Kleopatra — GUI для управления ключами.
Скачайте файл ключа (например, fedora.gpg) и файл с контрольными суммами с сайта дистрибутива.
В Kleopatra: File > Import Certificates — выберите скачанный .gpg-файл.

- Проверка подписи файла с суммами: File > Decrypt/Verify Files. Выберите sha256sum.txt.gpg или аналог.
- Снимите галочку «Input file is a detached signature» если подпись встроенная.
- Нажмите Decrypt/Verify.

Вердикт от Kleopatra может содержать предупреждение об отсутствии доверия: это нормально, если вы не строили web of trust. Тем не менее, вы увидите, каким ключом была создана подпись, и сможете сверить отпечаток.
Если автоматическая проверка контрольных сумм не срабатывает, создайте собственный хеш для ISO: Settings > Configure Kleopatra > Crypto Operations > File Operations — выберите sha256sum или md5sum в зависимости от формата.
Или используйте PowerShell для получения SHA-256 без GUI:
Get-FileHash -Path C:\path\to\file.iso -Algorithm SHA256Скопируйте результат и сравните с официальным значением.
Если вы предпочитаете полностью GUI-подход, Kleopatra позволяет создать файл со свёрнутой суммой и сравнить его с загруженным.


Типовые ошибки и как их исправлять
- gpg: Can’t check signature: No public key — импортируйте нужный ключ (gpg –recv-keys KEYID), либо скачайте .gpg с сайта дистрибутива.
- gpg сообщает bad signature — файл подписи или файл сумм был подменён; не доверяйте ISO и повторно проверьте источники.
- sha256sum сообщает FAILED или хеш не совпадает — скачайте ISO повторно с другого зеркала или проверьте целостность сети.
- Если Kleopatra не распознаёт структуру checksum-файла — проверьте формат (иногда дистрибутив использует нестандартный заполненный формат). Создайте сравниваемый файл вручную.
Рекомендации:
- Скачивайте ключи с официальных страниц через HTTPS и сверяйте отпечатки.
- Если вы используете торрент, сравните сумму с той, что опубликована на официальном сайте.
- Для критичных сред используйте зеркала, над которыми у вас есть административный контроль, или распространяйте образы только через внутренний репозиторий.
Когда проверка не даст защиты
- Злоумышленник контролирует и основной сайт дистрибутива, и сервер ключей — тогда подпись и ключ могут быть подменены.
- Ключ владельца проекта скомпрометирован — подписи будут валидны, но злоумышленник подписывает вредоносные образы.
- Вы доверяете ключу, сравнив только имя владельца, но не сверили отпечаток — это слабая проверка.
В таких сценариях нужны дополнительные меры: многоканальное подтверждение отпечатков (социальные сети проекта, зеркала, публичные зеркала Git), организация внутренней проверки и использование hardware root of trust (TPM) и secure boot при установке.
Практическое руководство — пошаговый SOP
- Скачайте ISO, файл сумм и файл подписи в одну папку.
- Получите публичный ключ проекта через указанный источник (HTTPS-страница дистрибутива, keyserver) и импортируйте его.
- Проверьте подпись файла сумм: gpg –verify подпись файл_сумм.
- Сверьте отпечаток ключа с опубликованным отпечатком на официальном ресурсе.
- Выполните sha256sum –check файл_сумм и убедитесь, что ваш ISO имеет статус OK.
- Если шаги выполнены успешно, образ можно использовать; если нет — не устанавливайте и сообщите об инциденте/запросите другой источник.
Критерии приёмки
- Подпись контрольного файла валидна (gpg сообщает good signature).
- Отпечаток ключа совпадает с официальным источником.
- sha256sum сообщает OK для загруженного ISO.
Чек-лист перед установкой ISO
- ISO скачан с официального зеркала или проверенного зеркала.
- Загружен файл контрольных сумм и файл подписи (если доступно).
- Импортирован публичный ключ проекта.
- Подпись файла с суммами проверена и признана корректной.
- Отпечаток ключа сверен с официальным источником.
- Контрольная сумма ISO совпадает с официальной.
- Выполнено резервное копирование важных данных перед установкой.
Шпаргалка команд
Linux / macOS:
# Загрузить ключ по KEYID
gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 0FF405B2
# Провести верификацию подписи
gpg --verify sha256sum.txt.gpg sha256sum.txt
# Проверить ISO по списку сумм
sha256sum --check sha256sum.txt
# Получить sha256 одной команды
sha256sum /path/to/file.iso
# macOS: альтернатива
shasum -a 256 /path/to/file.isoWindows (PowerShell):
# Получить sha256 в PowerShell
Get-FileHash -Path C:\path\to\file.iso -Algorithm SHA256Gpg4win/Kleopatra используется через GUI, но эквиваленты команд gpg доступны и в комплекте.
Рольовые чек-листы
Обычный пользователь:
- Скачал ISO и файл сумм.
- Проверил sha256 локально и сравнил с официальным текстом.
- Не установил, если сумм нет или они не совпадают.
Системный администратор:
- Автоматизировал проверку образов в CI/скриптах развертывания.
- Имеет внутренний репозиторий с проверенными образами.
- Обеспечивает многоканальную проверку отпечатков ключей разработчиков.
Менеджер зеркала:
- Поддерживает HTTPS и RSS/способ уведомления об изменениях.
- Делегирует публикацию ключей на отдельный защищённый сервер.
Ментальные модели и эвристики
- Всегда предполагайте, что публичный ресурс может быть скомпрометирован — используйте слои проверки.
- «Подпись + проверенный отпечаток + совпадение суммы» — минимальная конфигурация доверия для установки.
- Не игнорируйте предупреждения GPG об отсутствии доверия — они сигнализируют об отсутствии внешнего подтверждения, а не о математической ошибке.
Причины несоответствия и способы реакции
- Несовпадение сумм: перекачайте файл, попробуйте другое зеркало, свяжитесь с разработчиками дистрибутива.
- Отсутствие ключа: скачайте ключ по указанному KEYID или с официального сайта.
- Подмена ключа на сервере: сверяйте отпечатки по независимым каналам.
Decision flowchart
flowchart TD
A[Начать: есть ISO и файл сумм?] -->|нет| Z[Скачать файлы]
A --> B[Есть файл подписи?]
B -->|да| C[Импортировать публичный ключ]
C --> D[Проверить подпись файла сумм]
D -->|good signature| E[Сверить отпечаток ключа]
E -->|совпадает| F[Проверить sha256sum]
F -->|OK| G[Использовать ISO]
F -->|не OK| H[Не использовать; перекачать/уведомить]
D -->|bad signature| H
B -->|нет| I[Проверить sha256sum напрямую]
I -->|совпадает| G
I -->|не совпадает| HРиск-матрица и смягчения
- Подмена ISO на зеркале — риск: средний; смягчение: подпись + сверка сумм.
- Компрометация ключа — риск: высокий; смягчение: многоканальная верификация отпечатка, уведомления от проекта.
- Человеческая ошибка (не проверил) — риск: высокий; смягчение: автоматизация проверок, обучение персонала.
Примеры альтернативных инструментов
- apg/gpg2 — альтернативы gpg в некоторых дистрибутивах.
- PowerShell Get-FileHash — для Windows.
- sigtool, rhash — утилиты для проверки разных типов сумм.
- OpenSSL — при необходимости может посчитать дайджест, но удобнее использовать специфичные утилиты.
Миграция и совместимость
- Старые образы могут использовать MD5 — учитывайте это при выборе алгоритма в настройках Kleopatra.
- Для CI/CD используйте контейнерные образы с предустановленным gpg и утилитами хеширования для совместимости.
Примечания по локальным зеркалам и особенностям региона
- Используйте зеркала, поддерживающие HTTPS и имеющие репутацию. Зеркала, не использующие HTTPS, повышают риск MITM‑атак.
- В случае сомнений получайте ключи и отпечатки через официальные страницы проекта или авторитетные каналы.
Краткое резюме
Проверка контрольных сумм и цифровых подписей — простая и эффективная защита от подмены образов. Даже если это не даёт абсолютной гарантии в случае масштабных атак на инфраструктуру дистрибутива, это значительно снижает риск распространения компрометированных ISO. Автоматизируйте процесс в организациях и всегда сверяйте отпечатки ключей по независимым каналам.
Image Credit: Eduardo Quagliato on Flickr
Похожие материалы
Организация разговоров в ChatGPT с ChatGPT Folders
Запретить сообщения Facebook в Instagram
Как перенести контакты на новый Android
Резюме LinkedIn: как написать, чтобы вас заметили
Позиционирование изображений в Word — полный гид