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

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

Мануал

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

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

Например, злоумышленник с скомпрометированным центром сертификации может провести атаку «человек посередине» (MITM), обманывая вас при загрузке вредоносного файла с поддельного веб-сайта HTTPS.

Чтобы защитить себя от подобных проблем, часто рекомендуется проверять подлинность и целостность файла при его загрузке из Интернета. Особенно когда вы загружаете довольно чувствительные файлы (например, образы ОС, двоичные файлы приложений, исполняемые установщики и т. Д.), Слепое доверие загруженным файлам не является хорошей привычкой.

Одним быстрым и простым способом проверки целостности загруженного файла является использование различных инструментов контрольных сумм (например, md5sum, sha256sum, cksum) для вычисления и сравнения контрольных сумм (например, MD5, SHA или CRC).

Однако контрольные суммы уязвимы для атак коллизий, а также не могут использоваться для проверки подлинности (т. е. Владельца) файла.

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

В этом руководстве я собираюсь описать, как проверить подлинность и целостность файла с помощью GnuPG (GNU Privacy Guard).

В этом примере я собираюсь проверить файл образа диска, доступный для загрузки с https://onionshare.org.

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

Что касается загружаемого файла, издатель также предлагает свою соответствующую подпись PGP.

Установите GnuPG и создайте пару ключей

Давайте начнем с установки GnuPG в вашей системе Linux.

В Debian, Ubuntu и других производных Debian:

 $ sudo apt-get install gnupg 

На Fedora, CentOS или RHEL:

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

 $ gpg --gen-key 

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

Вы также можете выбрать, когда истечет срок действия пары ключей (по умолчанию нет срока действия).

В зависимости от размера ключа, который вы выбираете (от 1024 до 4096 бит), процесс генерации ключа может занять пару минут или чуть более, так как он требует сбора достаточного количества случайных данных, которые поступают из ваших действий на рабочем столе (например, ввод с клавиатуры, мышь).

После завершения генерации открытый и закрытый ключи будут сохранены в каталоге ~/.gnupg.

Импортируйте открытый ключ владельца файла

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

Сначала загрузите открытый ключ владельца файла:

$ wget https://onionshare.org/signing-key.asc 

Затем выполните импорт открытого ключа с помощью команды gpg:

 $ gpg --import signing-key.asc 

Как только открытый ключ владельца будет импортирован, он выведет идентификатор ключа (например, «EBA34B1C»), как показано выше.

Запишите этот идентификатор ключа.

Теперь проверьте отпечаток импортированного открытого ключа, выполнив:

 $ gpg --fingerprint EBA34B1C 

Вы увидите строку отпечатка открытого ключа.

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

В общем, проверка того, что владелец открытого ключа является тем, кем он или она утверждает, должна быть более строгим процессом, чем простое сравнение отпечатков, поскольку веб-сайт мог быть подделан так, чтобы соответствовать отпечатку.

Вы доверяете чьему-либо открытому ключу только тогда, когда ключ был полностью проверен на принадлежность этому человеку (например, вы встретились с этим человеком, поговорили по телефону, чтобы подтвердить его / ее личность и т. д.).

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

Обратите внимание, что этот шаг не является обязательным.

 $ gpg --edit-key EBA34B1C 
Эта команда покажет вам приглашение GPG:
В командной строке GPG введите «trust», что позволит вам выбрать уровень доверия для этого ключа от 1 до 5.
В этом случае я решил назначить траст «4».
После этого подпишите его своим личным ключом, введя «sign», а затем завершите, введя «save» в командной строке GPG:

Опять же, этот способ явного присвоения доверия открытому ключу не требуется, и зачастую достаточно неявного доверия путем простого импорта ключа.

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

В целом, проверка ключей основана на сложном механизме, известном как «сеть доверия».

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

 $ gpg --list-keys 
Вы должны увидеть как минимум два ключа: один ключ с глубиной 0 и предельным доверием (“1u”), который является вашим собственным ключом, и другой ключ с глубиной 1 и полным доверием (“1f”), который является ключом, подписанным себя раньше.

Проверьте подлинность / целостность файла

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

В нашем примере владелец файла публикует файл и соответствующую подпись PGP (* .asc) отдельно.

Роль подписи заключается в удостоверении и внесении отметки времени в файл.

Типичная подпись (* .asc) выглядит следующим образом.

-----BEGIN PGP SIGNATURE-----

iQIcBAABCgAGBQJUJGhsAAoJEP1yCtnro0sc1jUP/ixNY/lKdrcMIAUoqlWKNE8f
sj4SFiwREMew76w66GASDF03fa5zPX6EsS2kucgx8ZsfEiSmN5T0y2P/aSaXwZqF
kywZVEzirKtca5AJ4DBzu6qrt9GgSw6JBJVv1oBJCMNyO+eAj341paR3MudvnyQz
H/N5tc4Qcilzy6M184opGIzy4ipEmMXfLHsd7WJpAyn+tO/z3uhh9NkNuygZpaFr
olpSWPE8revdDJyfMfSmb3ZrFmhLn7FCEltOi+a7SluvrMclizfnbec9rgLJtjo0
CPDZY7tsWmmL0DA3VvpMVqGvkg/Dyhpn2IIDrNaLAlvGQ5aovf+4tjad5IHvyaWx
4Gds93G6Hqvv5RwGx7OR3hgt2o0Y+qFsVDxVnPxerGhXeJXHzSDwLQMpdj9IoSU
Ae/53XXnxqSN6POZcwHiHvbsv0pdlg0Ea0dDAAN0ZeINNyZf1R0tLjWkcgpvGCtv
qkJuYFF9W9cWHraPY2ov5Hs/JZzPcG0eVpnDdzfOOH1gDKADq9A5D2X5QJCulsh9
WwU3X+E43OqIsoRzBucItD9HhZbEH7t8Q0xAqnAkgU3hriZp3dN4cnMfhM6I9hli
EmpSpLKCceMexu2o9QgzGXVm+AGZJe4QkuwAhRIccp5JDMVny61UlKTasjy6co8h
5GBhhYybPEFM+G1BODMd
=c9wo
-----END PGP SIGNATURE-----

Давайте загрузим файл и его подпись:

 $ wget https://onionshare.org/files/0.6/OnionShare.dmg
$ wget https://onionshare.org/files/0.6/OnionShare.dmg.asc 

Теперь проверьте подпись PGP загруженного файла.

 $ gpg --verify OnionShare.dmg.asc OnionShare.dmg 

Если выходные данные команды содержат «”Good signature from <file owner>», загруженный файл .dmg был успешно аутентифицирован и проверен.

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

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

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий