MD5, SHA-1 или SHA-256: какой хэш выбрать для загрузки файлов
Для проверки загруженного файла используйте SHA-256 или SHA-512, если издатель предлагает такой вариант. MD5 и SHA-1 по-прежнему помогают обнаружить случайные повреждения, например обрезанную загрузку, но исследователи показали, что два разных файла можно подогнать под один и тот же хэш MD5 или SHA-1. Совпадение по этим алгоритмам поэтому не доказывает, что файл именно тот, который выпустил издатель. Хэш — это отпечаток, а не шифрование, и он что-то значит только тогда, когда получен из источника, которому вы доверяете.
Генератор хэшейФайл из загрузки совпадает?Сделать бесплатноЧто делает хэш и чего он не делает
Хэш-функция превращает данные любого размера в отпечаток фиксированной длины. Одни и те же данные всегда дают один и тот же отпечаток, а изменение одного байта даёт совершенно другой. Поэтому хэш удобен для сравнения: если отпечаток вашей копии совпадает с опубликованным, файлы почти наверняка одинаковы.
Хэш — не шифрование. Восстановить по нему файл нельзя, и никакой ключ не используется. Он ничего не скрывает и сам по себе не доказывает, кто создал файл. Контрольная сумма — это просто хэш, который издатель публикует рядом с загрузкой, чтобы вы могли сравнить значения.
Четыре распространённых варианта
| Алгоритм | Длина результата | Для чего использовать |
|---|---|---|
| MD5 | 128 бит, 32 шестнадцатеричных символа | Только для поиска случайных повреждений |
| SHA-1 | 160 бит, 40 шестнадцатеричных символов | Проверки для совместимости; для безопасности не используйте |
| SHA-256 | 256 бит, 64 шестнадцатеричных символа | Обычный выбор для загрузок |
| SHA-512 | 512 бит, 128 шестнадцатеричных символов | То же семейство, но с более длинным результатом |
Почему MD5 и SHA-1 недостаточно надёжны
Коллизия — это ситуация, когда два разных входных набора дают один и тот же хэш. Коллизии MD5 известны с 2004 года. В 2017 году исследователи опубликовали практическую коллизию SHA-1: два разных PDF-файла с одинаковым хэшем.
Для загрузок это важно, потому что злоумышленник, который контролирует файл, может подготовить вредоносную версию с таким же хэшем MD5 или SHA-1, как у настоящего. Если издатель публикует только MD5 или SHA-1, совпадение уже не доказывает подлинность файла. Собственная справка генератора хэшей говорит то же самое: для всего, что связано с безопасностью, используйте SHA-256 или SHA-512.
На момент написания практических коллизий SHA-256 не известно, поэтому именно он обычно и выбирается. Шаги проверки описаны в руководстве по проверке SHA-256.
Как выбрать нужный вариант
- Если издатель предлагает SHA-256 или SHA-512, используйте его, а MD5 и SHA-1 для проверки безопасности не берите.
- Если предложены только MD5 или SHA-1, всё равно проверьте файл с помощью генератора хэшей. Он по-прежнему поймает повреждённую или неполную загрузку. Совпадение означает «не повреждён», а не «подлинный».
- Если хэш не опубликован, таким способом целостность не проверить. Скачивайте файл с официальной страницы по HTTPS, а если проект публикует подписанные файлы с контрольными суммами, проверьте подпись.
Генератор хэшей сразу вычисляет MD5, SHA-1, SHA-256, SHA-384 и SHA-512 для текста или одного файла. Файл обрабатывается в вашем браузере, и ничего никуда не загружается. Вставьте хэш издателя в поле Expected hash. Перед сравнением инструмент убирает пробелы и не учитывает регистр, поэтому хэш, напечатанный заглавными буквами или группами, всё равно совпадёт. Очень большие файлы могут перегрузить память браузера; в таком случае используйте утилиту командной строки, например sha256sum в Linux или shasum -a 256 на Mac.
Что говорит совпадение
Совпадение хэшей означает, что ваша копия почти наверняка идентична файлу, для которого считали хэш. Но оно не говорит, кто вычислял хэш и был ли хэшированный файл именно тем, что издатель собирался выпустить. Здесь важнее источник, а не алгоритм. Если хэш взят со страницы релиза самого издателя и вы попали на неё напрямую, а не по ссылке из сообщения, совпадение — серьёзное доказательство. Если хэш взят из комментария, зеркала или форума, считайте его непроверенным, пока не найдёте его на надёжной странице.
Контрольной сумме нужен доверенный источник
Контрольная сумма, которая лежит на том же сервере, что и файл, доказывает лишь то, что копия совпадает с тем, что хранит этот сервер. Если злоумышленник подменит файл, он может подменить и контрольную сумму рядом с ним. Контрольная сумма полезна, когда она получена из отдельного источника, например из подписанных заметок о релизе проекта или со страницы, которую вы открыли независимо от ссылки на загрузку.
Хэши для паролей устроены иначе
Хэширование применяется и для хранения паролей, но там нужен медленный хэш, созданный специально для паролей, с уникальной солью для каждого из них. Быстрый хэш вроде SHA-256 для этого не подходит. Для загрузок задача — сравнение, и с ним SHA-256 справляется отлично.
Особые случаи
- Регистр. Шестнадцатеричные буквы от A до F одинаковы в любом регистре, поэтому сравнивайте, не обращая внимания на заглавные буквы.
- Обрезанные хэши. Некоторые сайты печатают только начало хэша. Короткое совпадение мало что доказывает, поэтому сравнивайте всё значение целиком.
- Несколько файлов. Некоторые проекты публикуют один файл с контрольными суммами для всего релиза. Найдите строку с точным именем файла, потому что совпадение со строкой другого файла ничего не доказывает.
Переведено с помощью ИИ с Английский оригинал.
Комментарии
Комментариев пока нет. Будьте первым.


