Что такое хэши MD5, SHA-1 и SHA-256 и как их проверить?
Иногда вы будете видеть хэши MD5, SHA-1 или SHA-256, отображаемые вместе с загрузками во время ваших интернет-путешествий, но на самом деле не знаете, что это такое. Эти, казалось бы, случайные строки текста позволяют вам убедиться, что загружаемые вами файлы не повреждены и не изменены. Вы можете сделать это с помощью команд, встроенных в Windows, MacOS и Linux.
Как работают хеши и как они используются для проверки данных
Хэши - это продукты криптографических алгоритмов, предназначенных для создания строки символов. Часто эти строки имеют фиксированную длину независимо от размера входных данных. Посмотрите на приведенный выше график, и вы увидите, что и «Fox», и «Red Fox перепрыгивают через синюю собаку» дают одинаковую длину.
Теперь сравните второй пример на графике с третьим, четвертым и пятым. Вы увидите, что, несмотря на очень незначительные изменения во входных данных, полученные хеши очень сильно отличаются друг от друга. Даже если кто-то изменяет очень маленький фрагмент входных данных, хеш будет сильно меняться.
MD5, SHA-1 и SHA-256 - это разные хэш-функции. Создатели программного обеспечения часто берут загружаемый файл, такой как файл .iso в Linux, или даже файл .exe в Windows, и запускают его через хэш-функцию. Затем они предлагают официальный список хэшей на своих сайтах..
Таким образом, вы можете загрузить файл, а затем запустить хеш-функцию, чтобы убедиться, что у вас есть настоящий, оригинальный файл и что он не был поврежден в процессе загрузки. Как мы видели выше, даже небольшое изменение файла резко изменит хеш.
Они также могут быть полезны, если у вас есть файл, полученный из неофициального источника, и вы хотите подтвердить его законность. Допустим, у вас есть Linux .ISO-файл, который вы откуда-то получили, и вы хотите подтвердить, что он не был подделан. Вы можете найти хэш этого конкретного файла ISO в Интернете на веб-сайте дистрибутива Linux. Затем вы можете запустить его с помощью хеш-функции на вашем компьютере и убедиться, что он соответствует значению хеша, которое вы ожидаете получить. Это подтверждает, что у вас есть тот же файл, который предлагается для загрузки на веб-сайте дистрибутива Linux, без каких-либо изменений..
Обратите внимание, что были обнаружены «коллизии» с функциями MD5 и SHA-1. Это несколько разных файлов, например, безопасный файл и вредоносный файл, которые приводят к одному и тому же хешу MD5 или SHA-1. Вот почему вы должны предпочесть SHA-256, когда это возможно.
Как сравнить хэш-функции в любой операционной системе
Имея это в виду, давайте посмотрим, как проверить хеш файла, который вы скачали, и сравнить его с тем, который вы получили. Вот методы для Windows, MacOS и Linux. Хеши всегда будут идентичны, если вы используете одну и ту же функцию хеширования в одном и том же файле. Неважно, какую операционную систему вы используете.
Windows
Этот процесс возможен без использования стороннего программного обеспечения в Windows благодаря PowerShell.
Для начала откройте окно PowerShell, запустив ярлык «Windows PowerShell» в меню «Пуск»..
Запустите следующую команду, заменив «C: \ path \ to \ file.iso» на путь к любому файлу, для которого вы хотите просмотреть хеш:
Get-FileHash C: \ path \ to \ file.iso
Генерирование хеша файла займет некоторое время, в зависимости от размера файла, используемого вами алгоритма и скорости диска, на котором находится файл.
По умолчанию команда покажет хэш SHA-256 для файла. Однако вы можете указать алгоритм хеширования, который хотите использовать, если вам нужен хеш-код MD5, SHA-1 или другой тип..
Выполните одну из следующих команд, чтобы указать другой алгоритм хеширования:
Get-FileHash C: \ path \ to \ file.iso -Алгоритм MD5
Get-FileHash C: \ path \ to \ file.iso -Алгоритм SHA1
Get-FileHash C: \ path \ to \ file.iso -Алгоритм SHA256
Get-FileHash C: \ path \ to \ file.iso -Алгоритм SHA384
Get-FileHash C: \ path \ to \ file.iso -Алгоритм SHA512
Get-FileHash C: \ path \ to \ file.iso -Алгоритм MACTripleDES
Get-FileHash C: \ path \ to \ file.iso -Алгоритм RIPEMD160
Сравните результат хеш-функции с результатом, который вы ожидали увидеть. Если это то же значение, файл не был поврежден, подделан или иным образом изменен по сравнению с исходным.
Macos
В macOS есть команды для просмотра различных типов хэшей. Чтобы получить к ним доступ, запустите окно терминала. Вы найдете его в Finder> Приложения> Утилиты> Терминал.
md5
Команда показывает MD5 хеш файла:
MD5 / путь / к / файлу
shasum
По умолчанию команда показывает хэш файла SHA-1. Это означает, что следующие команды идентичны:
shasum / путь / к / файлу
shasum -a 1 / путь / к / файлу
Чтобы показать SHA-256 хэш файла, выполните следующую команду:
shasum -a 256 / путь / к / файлу
Linux
В Linux зайдите в Терминал и выполните одну из следующих команд, чтобы просмотреть хеш для файла, в зависимости от того, какой тип хеша вы хотите просмотреть:
md5sum / path / to / file
sha1sum / путь / к / файлу
sha256sum / путь / к / файлу
Некоторые хеши криптографически подписаны для еще большей безопасности
Хотя хэши могут помочь вам подтвердить, что файл не был подделан, здесь есть еще один способ атаки. Злоумышленник может получить контроль над веб-сайтом дистрибутива Linux и изменить отображаемые на нем хэши, или злоумышленник может выполнить атаку типа «злоумышленник в середине» и изменить транзитную веб-страницу, если вы обращались к сайту через HTTP вместо зашифрованный HTTPS.
Вот почему современные дистрибутивы Linux часто предоставляют больше, чем хэши, перечисленные на веб-страницах. Они криптографически подписывают эти хэши, чтобы помочь защитить от злоумышленников, которые могут попытаться изменить хэши. Вы захотите проверить криптографическую подпись, чтобы убедиться, что хеш-файл был действительно подписан дистрибутивом Linux, если вы хотите быть абсолютно уверены, что хеш-файл и файл не были подделаны.
Проверка криптографической подписи является более сложным процессом. Прочитайте наше руководство по проверке Linux ISO не были подделаны для получения полных инструкций.
Изображение предоставлено: Хорхе Столфи / Викимедиа