03 / ГИДЫ
Проверка загрузок и целостности файлов контрольными суммами
Что на самом деле доказывает криптографический хеш, почему MD5 и SHA-1 сегодня годятся только для целостности, пошаговая проверка установщика и как хешировать чувствительный текст, никуда его не загружая.
Целостность, а не подлинность
Криптографический хеш превращает любой вход в отпечаток фиксированной длины. Переверните один бит в любом месте гигабайтного файла — и дайджест изменится полностью, поэтому сравнение дайджестов точно отвечает, байт-в-байт ли совпадают две копии файла.
- Целостность доказанаЦелостность доказана: если ваш дайджест совпал с опубликованным, ваша копия — в точности тот файл, который хешировал издатель, без повреждений при передаче и на диске.
- Подлинность отдельноПодлинность — нет: контрольная сумма рядом со ссылкой на скачивание ничего не говорит о том, кто написал файл; атакующий, подменивший загрузку, подменит и напечатанную сумму.
- Подписи — другой инструментПодлинности нужен другой механизм: подпись, проверенная ключом, которому вы уже доверяете, или контрольная сумма, доставленная по каналу, которому вы доверяете больше, чем самой загрузке.
MD5 и SHA-1 теперь только для целостности
MD5 выдаёт 128-битный дайджест, записанный 32 шестнадцатеричными символами; SHA-1 — 160 бит, 40 символов. Оба быстры и годятся для обнаружения случайных повреждений — и у обоих публично продемонстрированы коллизии, так что ни один не устоит перед атакующим, намеренно строящим вредоносный файл с совпадающим дайджестом.
Практическое правило: совпадение MD5 или SHA-1 по-прежнему ловит оборванную загрузку или умирающий диск, потому что случайности не вычисляют коллизий. Чего эти алгоритмы больше не могут — так это оправдать файл, у которого есть причины вызывать недоверие: это решение теперь принадлежит SHA-256 или сильнее.
- MD5 сломанКоллизии MD5 практичны уже много лет: два разных файла с одинаковым дайджестом MD5 можно сконструировать целенаправленно, так что MD5 больше не отличает аварию от атаки.
- SHA-1 сломанSHA-1 прошёл тот же путь: продемонстрированная коллизия закончила его жизнь как примитива безопасности, и браузеры, удостоверяющие центры и хостинги кода давно ушли дальше.
- SHA-2 — базовая линияСемейство SHA-2 — текущая базовая линия: SHA-256 (64 hex-символа) — стандарт публикуемых сумм для загрузок, а SHA-224, SHA-384 и SHA-512 (56, 96 и 128 символов) — его братья под разные ограничения.
Проверка установщика по шагам
Вся проверка занимает меньше минуты и использует инструменты, уже есть на вашей машине. Порядок важен: возьмите ожидаемый дайджест с официальной страницы издателя, хешируйте локальную копию и сравните каждый символ.
Несовпадение — не всегда злой умысел: оборванные загрузки и кеширующие прокси портят файлы регулярно, — но реакция в любом случае одна: файл проверку не прошёл, и единственный правильный следующий шаг — свежая копия с источника.
- Возьмите ожидаемое значениеНайдите опубликованную сумму на официальной странице загрузки или релиза вендора — в идеале по HTTPS на домене, на который вы зашли сами, а не на зеркале или в сниппете поисковой выдачи.
- Хешируйте локальноХешируйте скачанный файл локально: shasum -a 256 на macOS или Linux либо Get-FileHash в PowerShell на Windows. Оба работают с вашим диском; ничего не загружается.
- Сравнивайте точноСравните весь дайджест посимвольно, без учёта регистра. Один отличающийся символ означает: удалите файл и возьмите свежую копию с источника — не устанавливайте в надежде на лучшее.
Хешируйте чувствительный текст без загрузки
Многие реальные проверки — это текст, а не файлы: фрагмент конфигурации, лицензионный ключ, кусок токена, значение, продиктованное коллегой по телефону. Вставить их на случайном сайте — значит отдать их в чужие логи, поэтому хеширование должно происходить локально.
Создание и проверка хеша SHA-256 покрывает текущий 64-символьный стандарт публикуемых сумм. Проверка там — сравнение, а не расшифровка: ваш текст хешируется, и два значения сравниваются внутри браузера.
- Локально по дизайнуВвод остаётся на устройстве: рабочая область хеширует до 1 048 576 байт текста UTF-8 во вкладке движком WebAssembly и ничего после этого не хранит.
- Явное сравнениеРежим проверки — это явное сравнение: вставьте ожидаемый дайджест, и рабочая область сообщит о совпадении или несовпадении, заранее отклоняя деформированные значения — ровно 32 hex-символа для MD5, 64 для SHA-256.
- Односторонность по построениюДайджесты односторонни: эти инструменты создают и сравнивают отпечатки и не пытаются их обратить, потому что ни один легитимный инструмент не может.
Встройте сравнение в рутину
Контрольные суммы работают, только когда их сравнение — привычка, а не запоздалая мысль. Несколько мелких дисциплин делают проверку надёжной каждый раз.
Для целых файлов правильный инструмент — встроенные команды операционной системы, столь же локальные, как браузер. Браузерные рабочие области сильны на текстовых данных и быстрых проверках дайджестов: создание и проверка хеша MD5 — для устаревших 32-символьных значений, которые старые страницы загрузок всё ещё публикуют.
- Полное сравнениеСравнивайте дайджест целиком, а не первые и последние символы; беглый взгляд по краям — ровно тот ярлык, который эксплуатирует искусно построенная коллизия.
- Называйте алгоритмХраните имя алгоритма вместе с дайджестом: 64 hex-символа могут происходить из нескольких алгоритмов, и сумма без подписи провоцирует угадайку.
- Пересчёт на каждом прыжкеПерехешируйте после переноса файла через USB-диски, клиенты синхронизации или почту; каждый прыжок — новый шанс повреждения, а дайджест путешествует бесплатно.
Публикуйте суммы для собственных файлов
Если вы распространяете файлы — релизный бинарник, набор данных, внутренний инструмент — публикуйте контрольные суммы рядом. Это стоит одну команду на артефакт и даёт каждому получателю способ проверить целостность, не обращаясь к вам.
Создание и проверка хеша SHA-512 локально выдаёт 128-символьный дайджест, когда нужна более длинная форма, а братья SHA-224 и SHA-384 покрывают остальное семейство SHA-2 — тот же движок, та же вкладка, та же граница.
- Минимум SHA-256Публикуйте как минимум SHA-256; добавляйте SHA-512 рядом, если ваша аудитория проверяет на платформах, где он быстрее, и подписывайте алгоритм у каждого дайджеста.
- Тот же уровень доверияРаздавайте суммы с того же уровня доверия, что и саму загрузку, в идеале — со страницы или репозитория, которые ваши пользователи уже считают авторитетными.
- MD5 — устаревшая меткаОставляйте строки MD5 только как метки обратной совместимости, ясно помеченные как проверка целостности от случайных повреждений — никогда как проверка безопасности.
Проверка — лишь часть доверия к инструменту.
Научитесь проверять путь данных любого онлайн-инструмента до того, как отдать ему файл, — тот самый здоровый скепсис, который вознаграждает контрольная сумма.