Что такое хеш-сумма и зачем это необходимо.
@etnosismАвтор статьи: Стрельников.
Мы ежедневно обмениваемся информацией с соратниками, знакомыми. Отправляем друг другу файлы, фото, видео и т.д. А как мы можем обеспечить и проверить целосность файла? Например, как нам узнать, тот ли файл мы скачиваем? Не подменил ли его случайно товарищ майор?
MITM-атаки
Как нам всем известно, трафик в Telegram идёт по маршруту: <отправитель>-<сервер>-<получатель>. Таким образом, все файлы, фото, видео и текст, которые вы отправляете своим соратникам, так или иначе сперва загружаются на сервера Telegram, а потом уже получатель загружает их с сервера. Проверяется элементарно: отправьте файл собеседнику, а затем удалите его из памяти своего девайса (не из чата). Файл всё так же будет доступен вашему собеседнику, хоть вы и удалили его со своего устройства. Причина в том, что файл уже находится на сервере. Вроде бы ясно.
Такая система устойчива к т.н. "атакам посредника" (MITM-атакам), то бишь когда в канал связи между отправителем сервером или между сервером и получателем вклинивается товарищ СБУшник или ФСБшник. Товарищ майор может подменить файл, который вам/вы отправляли. Может "зашить" в него вредоносный код, вирус. Нет, этот вирус не будет шифровать ваш диск или блокировать доступ к ПК. Вы ничего даже не заметите (скорее всего). А вот товарищ майор сможет узнать ваш IP-адрес, ваш MAC адрес, сможет просматривать содержимое ваших дисков (про шифрование дисков будет следующая статья). Для наглядности обратим внимание на схему.
![](/file/83778b163b3e4ab72dcbe.png)
Отправитель(слева) отправляет файл (с некой важной информацией) на сервер. На каком-то из этапов товарищи менты подменяют или модифицируют файл, в результате чего меняется его размер. Получатель, открыв этот файл, запускает вредоносный код и к нему приходят люди в масках. Вроде бы понятно. Главной деталью здесь будет размер файла! Это как раз важно! Однако, просто сравнить размер отправленного и полученного файла недостаточно. Здесь мы плавно подошли к вопросу о хеш-суммировании и алгоритмах.
MD5, SHA-1, SHA-256
MD5, SHA-1 и SHA-256. Что это такое? Это три основных алгоритма (я ними пользуюсь чаще всего) хеширования информации. Есть ещё другие, например CRC32, но мне по душе эти три. Что такое хеширование? Простыми словами: обработка данных определённой функцией по определённому алгоритму, в результате чего генерируется УНИКАЛЬНАЯ для каждого файла хеш-сумма (что-то по типу идентификатора), которая и позволяет проверить целосность файла. Хеш-суммирование устроено таким образом, что при измененни исходного файла (даже на 1 бит) его хуш-сумма будет совершенно другой. Даже если изменить в огромной фотографии один пиксель или изменить одну букву в огромном текстовом документе, то его хеш поменяется. После прочтения этой статьи вы сможете это проверить. Как это использовать: при отправке файла вы пишете значение его хеш-суммы. (сумму проверяете перед отправкой). После получения ваш адресат тоже проверяет сумму и если они совпали, то файл подлинный.
Как проверить хеш-сумму?
Можете найти утилиты в интернете и установить пару на своё усмотрение. Но я бы рекомендовал использовать веб-ресурсы в связке с системой TOR/TAILS, о которой я рассказывал в предыдущей статье.
Вот один из сервисов - OnlineMD5
Интерфейс интуитивно понятен.
![](/file/4a40e68d64cb6f4294ada.png)
![](/file/349f369837472f2d7b01f.png)
В поле checksum сайт выводит хеш-сумму загруженного файла.
Очень удобная вещь, на этом сайте можно сразу же сравнить хеш-суммы.
В поле "Compare with" вводите сумму, с которой необходимо сравнить (ту, которую вы получили от отправителя).
![](/file/e35130b35636375739211.png)
![](/file/d1b6068d9d3336b3d4a33.png)
Так какой же алгоритм выбрать?
Лично я бы предпочёл SHA-256, так как в MD-5 и SHA-1 были найдены т.н. "коллизии", когда два разных файла генерируют один и тот же хеш. В алгоритме SHA-256 до сегодняшнего дня таких коллизий обнаружено не было. Пользуйтесь знаниями и не попадайтесь на бутылку мсье Мусорье.
В наше время интернет пересекается со всеми сферами жизнедеятельности человека. Было бы откровенной глупостью пренебрегать этой возможностью выразить свой протест.