Как проверить загруженный файл на целостность

Обновлено: 21.11.2024

Вероятно, вы загружали какое-либо программное обеспечение с открытым исходным кодом, например ISO-образ дистрибутива Linux, и рядом со ссылкой для скачивания была ссылка для загрузки контрольной суммы файла. Вы когда-нибудь задумывались, для чего нужна эта ссылка с контрольной суммой? Эта контрольная сумма используется для проверки целостности только что загруженного файла.

20 февраля 2016 г. веб-сайт Linux Mint, популярного дистрибутива Linux, был взломан, а ISO-образ, используемый для установки дистрибутива, был скомпрометирован. До того, как был обнаружен скомпрометированный ISO-образ, многие люди загружали и, возможно, устанавливали версию Linux Mint со встроенным бэкдором.

Этой опасной установки можно было бы избежать на уровне пользователя, если бы лица, загрузившие измененный ISO-образ, выполнили проверку файла, чтобы убедиться, что загруженный ими файл имеет ту же контрольную сумму, что и исходный файл. У взломанного ISO была совершенно другая контрольная сумма, чем у оригинального ISO.

Хотя проверка файла может указывать на то, что файл мог быть взломан, часто бывает полезнее показать пользователю, что загруженный файл не совсем правильный или был изменен в процессе загрузки. Если TCP-пакет был потерян во время загрузки, загруженный вами файл может оказаться на волоске, и выполнение проверки файла позволит вам узнать, что то, что вы загрузили, отличается от того, что доступно на исходном сервере.

В этом руководстве вы узнаете, что такое проверка файлов, почему она важна и как ее выполнять в различных операционных системах с помощью инструментов командной строки.

Предпосылки

В этой статье вы будете использовать инструменты командной строки для проверки файлов, встроенные во все основные операционные системы.

Вам потребуется файл для проверки, а также контрольные суммы MD5 и SHA1 для этого файла.

Для проверки файлов мы будем использовать установочный ISO-образ Ubuntu. Загрузите Ubuntu Minimal CD ISO для 64-битных ПК (amd64, x86_64). Во время загрузки обратите внимание на суммы MD5 и SHA1 рядом со ссылкой для скачивания. Вы будете использовать эти контрольные суммы на протяжении всего руководства.

Как работает проверка файлов

Проверка файла, также известная как хеширование, – это процесс проверки идентичности файла, который находится на вашем компьютере, исходному файлу... Когда вы хэшируете файл, у вас остается < em>контрольная сумма, случайная буквенно-цифровая строка заданной длины. Хеширование файла не шифрует файл, и вы не можете взять контрольную сумму и запустить ее через алгоритм, чтобы получить исходный файл.

Процесс создания контрольной суммы часто называют односторонней криптографической функцией. Когда вы выполняете хеширование файла, он «обобщается» в строку случайных символов. Например, допустим, у вас есть документ, содержащий 1000 символов. Когда файл хэшируется с использованием алгоритма MD5, результирующая контрольная сумма будет состоять из 32 случайных символов. Если бы вы хэшировали файл длиной 2000 символов, результирующая контрольная сумма MD5 по-прежнему составляла бы 32 символа. Даже если длина исходного файла составляет всего 10 символов, контрольная сумма MD5 все равно будет состоять из 32 случайных символов.

Каждый раз, когда вы выполняете хеширование одного и того же файла, вы всегда будете получать одну и ту же строку символов в хеше, если каждый бит этого файла не изменился. Но если хоть что-то отличается, например лишний пробел в файле, контрольная сумма будет совсем другой.

Существует два типа контрольных сумм, которые обычно используются для проверки файлов: MD5 или SHA.

Алгоритм MD5 часто подвергается критике в мире шифрования за то, что его легко взломать, но это не проблема, когда речь идет о проверке файлов. Когда дело доходит до проверки целостности файла, слабость инструмента для шифрования не имеет значения. Это хорошо для нас, потому что MD5 является зрелой спецификацией и быстрее, чем другие методы, для выполнения хеширования.

В последнее время алгоритм хеширования SHA стал чаще использоваться для контрольных сумм, поскольку этот алгоритм используется в некоторых современных шифровальных системах. Однако, в отличие от MD5, SHA имеет разные версии, и при проверке важно использовать правильную версию. Версия определяется числом, например 1, 2, 3, или количеством последовательных запусков SHA, например 256, 384 или 512. Используемая вами контрольная сумма должна указывать, какую версию SHA использовать. Если на сайте указан только хэш с пометкой SHA без номера, можно с уверенностью предположить, что он использует SHA1.

Для проверки файлов оба метода одинаково применимы. Хотя алгоритм отличается, оба возвращают случайную строку заданной длины, хотя хэши MD5 короче, чем любые хэши SHA.

Примечание. Иногда подписи PGP/GPG также предоставляются для проверки файлов. Такие подписи не очень распространены, и их сложнее проверять.Они требуют, чтобы вы загрузили контрольную сумму, открытый ключ сайта и чтобы в вашей системе уже был настроен gpg для выполнения проверки. Эти шаги выходят за рамки данного руководства.

Проверка хэша загруженных файлов дает две разные гарантии, обе из которых заслуживают внимания. Во-первых, с совпадающей контрольной суммой вы можете быть уверены, что файл, который вы только что загрузили, идентичен исходному файлу и не был изменен третьей стороной. Во-вторых, вы знаете, что файл не был поврежден или изменен во время передачи. Оба эти случая важны, так как в любом из них загрузка может нанести вред вашему компьютеру или вообще не работать.

Теперь, когда вы знаете, что такое контрольная сумма и почему вы должны выполнять проверку своих файлов, давайте перейдем к тому, как это сделать для вашей ОС. Начнем с Linux.

Выполнение проверки файлов в Linux

В большинстве дистрибутивов Linux есть инструменты командной строки для каждого алгоритма хеширования. Образец имени инструмента — «HASH-TYPE» плюс слово «сумма». Итак, для хеширования с помощью MD5 имя программы — md5sum. Для хеширования с помощью SHA 256 используется команда sha256sum . Если вы не знаете точное имя, введите имя хеш-алгоритма, а затем дважды нажмите клавишу Tab, и в большинстве дистрибутивов будут отображаться все команды, начинающиеся с этого имени алгоритма. Ниже мы рассмотрим пару популярных проверок.

Мы выполним нашу первую проверку, используя алгоритм хеширования MD5. Выполните команду md5sum и передайте ей путь к файлу, который вы хотите хэшировать:

Результаты будут выглядеть примерно так:

Эта случайная строка, начинающаяся с «8388f», является контрольной суммой, и вам нужно будет сравнить ее с контрольной суммой, указанной на странице загрузок.

Поскольку любые изменения в файле приведут к совершенно другой контрольной сумме, для экономии времени просто проверьте, совпадают ли первые несколько символов и последние несколько с исходным, а не каждый символ.

Например, если вы хотите быстро проверить совпадение контрольной суммы для файла "mini.iso", убедитесь, что обе контрольные суммы начинаются с "8388f" и заканчиваются на "f90da". Если оба совпадают, то с большой вероятностью (почти 100 %) полный хэш совпадает.

Если вы хотите быть на 100% уверены, просто скопируйте и вставьте контрольную сумму с веб-сайта под выводом локальной проверки, чтобы увидеть, все ли символы совпадают:

Теперь давайте посмотрим на проверку хэшей SHA. Наиболее распространенными командами хэширования SHA являются sha1sum и sha256sum. Выполните команду sha1sum, передав ей путь к файлу:

Результаты будут выглядеть примерно так:

Сравните полученное значение со значением на веб-странице, чтобы убедиться, что они совпадают.

Теперь давайте рассмотрим проверку файлов в macOS.

Выполнение проверки файлов в macOS

В отличие от Linux, в macOS есть только две команды хеширования ( md5 и shasum ) вместо одной для каждого алгоритма. Но мы по-прежнему можем выполнять все необходимые проверки только с помощью этих инструментов.

Несмотря на разные приложения и разные операционные системы, итоговый хэш этих инструментов одинаков для каждой ОС.

Поскольку md5 — это автономный алгоритм, в macOS это отдельная команда. Выполните команду md5, передав ей путь к файлу, который вы хотите проверить:

Результаты будут выглядеть следующим образом:

Как видите, вывод в macOS отличается от вывода в Linux, но он по-прежнему показывает имя файла и случайную строку из 32 символов. Сравните символы с исходной контрольной суммой MD5 и убедитесь, что они совпадают.

Теперь давайте рассмотрим проверку контрольных сумм SHA. В macOS есть одна утилита, используемая для выполнения любой проверки SHA, которая называется shasum. При его запуске вы указываете нужный тип проверки SHA в качестве аргумента.

Выполните следующую команду, указав SHA1 с помощью флага -a:

Результаты будут выглядеть следующим образом:

Сравните это значение с хэшем SHA1 исходного файла. Если они не совпадают, попробуйте загрузить файл и еще раз проверить его хэш.

Если вам нужно выполнить проверку SHA 256, используйте команду shasum -a 256 mini.iso . Если вы не укажете тип, по умолчанию используется SHA1.

Далее рассмотрим проверку файлов в Windows.

Выполнение проверки файлов в Windows

В Windows 7 и более поздних версиях есть приложение certutil, которое может удовлетворить все наши потребности в хешировании. Вывод сильно отличается от Linux и macOS, но контрольная сумма будет такой же и такой же достоверной. В обоих приведенных ниже примерах используется PowerShell.

Формат команды: certutil -hashfile путь/к/файлу АЛГОРИТМ .

Команда «certutil» не чувствительна к регистру, поэтому все «CertUtil», «certUtil» и «certutil» допустимы. Алгоритм, однако, чувствителен к регистру, что означает, что «md5» не будет работать, и вам нужно будет ввести «MD5».

Чтобы проверить хэш MD5 файла mini.iso, выполните следующую команду:

Результаты будут выглядеть следующим образом:

Для алгоритма SHA мы выполним ту же команду, но будем использовать SHA1 вместо MD5.

Число после SHA указывает другую версию или итерацию SHA. Поэтому мы используем SHA или SHA1 для хеширования SHA1 или SHA256, если нам нужен алгоритм SHA 256.

Результаты будут выглядеть следующим образом:

Сравните полученный хэш с хешем на странице загрузки, чтобы убедиться, что они совпадают.

Заключение

Независимо от того, хотите ли вы убедиться, что файл, который вы только что скачали, не был поврежден во время загрузки, или убедиться, что злоумышленник не взломал сервер загрузки, дополнительное время, необходимое для проверки хэша файла, стоит затраченных усилий.

Если командная строка слишком неудобна для простой проверки файлов, вот несколько инструментов с графическим интерфейсом, которые вы можете использовать вместо нее:

  • macOS: HashTab
  • Linux: GtkHash
  • Windows: HashTab или HashCheck.

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

Я знаю, что мы используем хеш-функции для проверки целостности файлов и т. д., но у меня вопрос: как мы можем проверить целостность файлов, загружаемых с какого-либо сервера?

К вашему сведению, еще один, возможно, не криптографически безопасный, но практически хороший способ — загрузить файл по другому соединению и проверить, что он (или его хеш) одинаков для каждой версии. Поскольку вы не хотите путешествовать только для проверки целостности загруженных файлов, вы можете просто использовать для этой цели прокси, VPN или Tor. Обратите внимание, что это защищает только от сетевых злоумышленников, т. е. должно учитываться на транспортном уровне (например, SSL/TLS). Если сервер скомпрометирован, вы, конечно же, всегда получаете один и тот же (мошеннический) файл.

2 ответа 2

Целостность определяется только относительно авторитетного источника, который сообщает, какова "правильная" последовательность байтов. Хэш-функции не создают целостность, они транспортируют ее. В основном, если у вас есть:

  1. файл;
  2. хеш-значение, предположительно правильное;

затем вы можете повторно вычислить хеш-функцию для файла и посмотреть, получится ли то же значение хеш-функции.

Все равно нужно с чего-то начинать. Некоторые распространители программного обеспечения предоставляют вместе с программным обеспечением файл «контрольной суммы» (или «md5sum», или «sha1sum»), который содержит хеш-значения. Предполагая, что вы получили правильный файл контрольной суммы, это позволяет вам проверить, загрузили ли вы правильный файл, вплоть до последнего бита; и это работает независимо от того, как вы загрузили, возможно, большой файл (даже если он пришел через какую-то сомнительную одноранговую сеть или что-то еще; вы не можете обмануть хэш-функции).

Теперь это не решает проблему целостности; это просто сводит это к проблеме убедиться, что вы получили правильное значение хеш-функции. Хэш-значения небольшие (32 байта для SHA-256), поэтому это открывает множество возможностей. В контексте загрузки файлов из P2P-систем вы можете получить хэш-значение с веб-сайта HTTPS (HTTPS использует SSL, который обеспечивает аутентификацию сервера — у вас есть гарантия, что вы общаетесь с нужным сервером — и целостность передачи — то, что вы получаете, гарантированно будет отправлено сервером). В контексте обмена открытыми ключами PGP с людьми хеш-значения (часто называемые «отпечатками пальцев» или «отпечатками большого пальца») достаточно короткие, чтобы их можно было передать вручную (напечатав на визитной карточке, написав по телефону. ).

В мире кибервойны Интернет стал жизненно важной частью любой сферы жизни. Когда дело доходит до загрузки файла из Интернета на ваш ноутбук или ПК, вы не можете гарантировать 100% безопасность из-за существования быстрых и изощренных киберугроз. Уязвимости системы безопасности, утечка данных, вирусы и вредоносное ПО стали очень распространенными и приводят к злоупотреблению оригинальностью, целостностью и подлинностью любого файла, загружаемого из Интернета.

Важность проверки целостности файла

Важно проверить подлинность файла, чтобы избежать случаев загрузки подозрительных данных и заражения вашего компьютера программами-вымогателями, вирусами, вредоносными программами и другими поврежденными и вредоносными вредоносными компонентами. Один скомпрометированный файл, даже размером в несколько байтов, может использовать всю ИТ-инфраструктуру компании, если его не обнаружить и полностью не уничтожить.

Проверка целостности файла

Проверка целостности или хеш-значения файла предназначена для проверки подлинности файла или проверки того, что файл не был изменен ненадежными сторонами. Проверка целостности файлов жизненно важна как для отдельных лиц, так и для организаций.

Каждый отдельный файл в Интернете по-своему уникален, и когда он изменяется или модифицируется, изменяется либо его хэш-значение, либо его цифровая подпись. Таким образом, аналитики могут использовать как цифровые подписи, так и хеш-значения для проверки целостности файла.

Как проверить значение хеша?

Для обеспечения целостности файла некоторые веб-сайты отображают значение MD5 рядом со ссылкой для скачивания файла или программы (см. рис. 1 ниже).

Рисунок 1. Значение MD5 вместе с файлом

Хэши семейства MD5 или SHA представляют собой набор случайных строк, которые позволяют специалистам по безопасности убедиться, что загружаемый файл не изменен и не поврежден. Некоторые операционные системы, такие как Linux, MacOS и Windows, позволяют проверять загруженные файлы с помощью их хэшей. Например, ОС Windows предлагает для этого Windows PowerShell.

На самом деле каждый файл имеет уникальные данные. Аналитики применяют криптографическую хеш-функцию для проверки хеш-значения программы. Эта функция проверяет, находится ли файл в текущем состоянии или он был изменен злоумышленниками. Алгоритм криптографической хэш-функции работает путем сравнения исходного и текущего значений хеш-функции файла. И если байт или даже часть данных файла были изменены, исходное и текущее значения хэша будут разными, и, следовательно, вы будете знать, тот же это файл или нет.

Алгоритмы, используемые при проверке целостности файла

Наиболее популярными алгоритмами, используемыми на веб-сайте, являются хеш-значения SHA1 и MD5. Чтобы иметь возможность проверить целостность данного файла, вам нужна только утилита или третья сторона. Обычно используемая сторонняя утилита:

Утилита контрольной суммы MB5 и SHA-1

Это одна из самых эффективных и действенных сторонних служебных программ, используемых для проверки хеш-значения файла (см. рис. 2 ниже).

Рисунок 2. Утилита контрольной суммы MD5 и SHA-1 1.1

Это простое в использовании приложение с простой идеей. При загрузке и установке утилиты контрольной суммы MD5 и SHA-1 перед полем «Файл» нажмите «Обзор» (см. рисунок выше). После этого вам нужно выбрать файл, для которого вы хотите сгенерировать хеш-значения, и открыть его. Кроме того, вы можете перетащить файл в утилиту контрольной суммы MD5 и SHA-1. При предоставлении программе файла для проверки его хэш-значений в мгновение ока генерируются хэш-значения MD5 и SHA-1.

В отличие от других программ, которые кажутся раздутыми, MD5 & SHA-1 Checksum Utility выдает хеш-значения без излишеств, что делает ее бесплатным программным обеспечением, совместимым с Windows 7, Vista и XP.

Заключение

В результате выяснилось, что проверка целостности файлов имеет решающее значение для предотвращения проникновения кибер-вредителей через пористую дыру, образованную вредоносными файлами. Поэтому очень важно проверить целостность файла перед его загрузкой на свой ПК, ноутбук или любое другое устройство. Неподлинный файл может привести к распространению программ-вымогателей, вредоносных программ, программ-шпионов и других вирусов.

Часть использования операционной системы на базе Linux заключается в использовании диспетчера пакетов вашего дистрибутива Linux для загрузки и установки нового программного обеспечения. Например, в дистрибутивах на основе CentOS/RHEL репозитории EPEL предоставляют вам почти все, что вам нужно. И часто, когда предустановленный репозиторий недоступен, вы можете добавить его вручную, и файлы будут безопасно загружены после проверки его с помощью ключа.

Однако иногда у вас нет другого выбора, кроме как загрузить пакеты напрямую через Интернет. Одним из примеров являются сами операционные системы. Если вы хотите загрузить новый дистрибутив, вам придется получить его с веб-сайта.

Оглавление

Проверка целостности файла с помощью хэшей

Но откуда мы знаем, что файлы, которые мы загружаем, действительно являются файлами, созданными создателем? Что, если кто-то злонамеренно получит доступ к серверам и вместо этого поместит туда свой собственный файл? Мы можем в конечном итоге загрузить, а затем использовать файл, который может быть сильно скомпрометирован!

Иногда файлы широко распространяются через сторонние сайты, такие как SourceForge. Нам нужен способ убедиться, что файл, который мы загружаем, не был изменен и не был переупакован. Вот тут-то и появляются хэши.

Хэш – это специальная математическая операция, которую мы выполняем над файлом и которая генерирует строку символов, уникальную для этого файла. Их также называют «контрольными суммами». Хотя он не является абсолютно уникальным, вероятность его повторения достаточно мала, чтобы считать его приемлемой формой безопасности.Хороший алгоритм хеширования гарантирует, что даже небольшие изменения во входном файле вызовут огромные различия в выходном хеше. Благодаря этому практически невозможно каким-либо образом изменить файл и получить аналогичный хэш.

Если хэши двух файлов были сгенерированы с помощью хорошего алгоритма и они совпадают, вы можете быть почти уверены, что эти два файла одинаковы. Из-за этого все хорошие поставщики программного обеспечения также отображают свои хэши рядом с файлами, которые они предлагают для загрузки. Вот так:

Теперь давайте посмотрим, как проверить хэш.

Создание и сравнение хэшей

Этот веб-сайт предлагает алгоритмы хеширования twp — SHA256 и SHA512. SHA256 достаточно хорош для наших целей. Когда вы нажимаете на ссылку «SHA256», вы получаете следующее:

Затем мы используем следующую команду в нашем терминале для генерации хэша SHA256:

Замените [имя файла] именем только что загруженного файла. Будет сгенерирована строка из 64 символов, например:

Теперь все, что нам нужно сделать, это сравнить строку символов, которую он создает, со строкой, предоставленной веб-сайтом на втором снимке экрана.

Чтобы было легче читать с некоторым форматированием, вот команда, чтобы сделать все в верхнем регистре и разделить хеш на группы по 8 символов:

И мы получаем следующий вывод:

С этой командой гораздо проще сравнивать, чем с длинной строкой из 64 символов.

Другие алгоритмы контрольной суммы

Разные веб-сайты будут иметь разные алгоритмы хеширования, чтобы вы могли их сравнить. В приведенном выше примере мы рассмотрели SHA256. Вот команды для остальных:

SHA256 – sha256sum (используется выше)
SHA512 – sha512sum
MD5 – md5sum

Если вам нужно вычислить хеш для другого алгоритма, просто замените «sha256sum» в приведенных выше примерах на нужную вам команду. Однако имейте в виду, что хэш MD5 уже некоторое время небезопасен. Вы можете использовать что-то, называемое «солью», для дальнейшего повышения безопасности хэша SHA, однако это можно обойти, поэтому для защиты паролей и личных данных это не рекомендуется.

Если вы можете успешно сравнить хэши загруженного файла с тем, который отображается на веб-сайте, вы можете быть уверены, что загруженный вами файл — это тот файл, который создатель хотел для вас.

Конечно, вам не нужно проверять целостность файлов программного обеспечения, которое вы загружаете, если у вас есть Linux VPS с нами. Вы можете просто попросить нашу службу поддержки установить любое программное обеспечение, которое вам нужно, на ваш VPS. Они доступны круглосуточно и без выходных и помогут вам с установкой.

ПС. Если вам понравилось читать этот пост в блоге о том, как проверить целостность файлов загруженных пакетов в Linux, не стесняйтесь поделиться им в социальных сетях, используя приведенные ниже ярлыки, или просто оставьте комментарий в разделе комментариев. Спасибо.

Читайте также: