Поиск по сайту:

Как проверить подпись PGP?


PGP (Pretty Good Privacy) — это криптографическая программа на основе открытого ключа. PGP дополняет симметричный ключ алгоритмами с асимметричным ключом, превращая это программное обеспечение в гибридную криптографическую систему, часто называемую гибридной криптосистемой.

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

В этом руководстве легко объясняется, как работает PGP и как проверять подписи PGP.

Как работает PGP

На изображении ниже показан открытый ключ PGP. Этот открытый ключ PGP можно расшифровать только с помощью определенного закрытого ключа PGP. Эмитент открытого ключа, указанный ниже, также выпустил закрытый ключ PGP, поскольку они генерируются в одном и том же процессе. Он делится только открытым ключом.
Если вы возьмете его открытый ключ, чтобы зашифровать ему сообщение, он сможет расшифровать сообщение, используя свой закрытый ключ. Только его закрытый ключ может расшифровать сообщение, которое вы зашифровали с помощью его открытого ключа.

Информация шифруется с помощью открытого ключа, а расшифровывается с помощью закрытого ключа. Это называется асимметричным шифрованием.

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

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

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

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

Подписи PGP

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

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

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

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

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

Как проверить подпись PGP?

В первом примере показано, как проверить подпись ядра Linux. Чтобы попробовать, зайдите на https://kernel.org и загрузите версию ядра и его файл PGP. В этом примере я буду загружать файлы linux-5.12.7.tar.xz и linux-5.12.7.tar.sign.

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

Первый параметр –keyserver-options позволяет определить параметры сервера ключей, на котором хранятся открытые ключи. По сути, это позволяет реализовать варианты получения открытых ключей.

Параметр –keyserver-options в сочетании с параметром –auto-key-retrieve автоматически извлекает открытые ключи с сервера ключей при проверке подписей.

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

gpg --keyserver-options auto-key-retrieve --verify linux-5.12.7.tar.sign

Как видите, подпись в порядке, но есть предупреждающее сообщение о том, что gpg не может подтвердить, что подпись принадлежит владельцу. Любой может сделать публичную подпись от имени Грега Крохана-Хартмана. Вы знаете, что подпись является законной, потому что вы доверяете серверу, с которого вы ее загрузили. В этом случае он указан в .sign, скачанном с kernel.org.
Это предупреждение присутствует всегда, и вы можете избежать его, добавив подписи в список доверенных подписей с помощью параметра –edit-key trust. Правда в том, что этого не делает ни один пользователь, и сообщество Gpg запросило удаление предупреждения.

Проверка SHA256SUMS.gpg

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

После загрузки образа iso, SHA256SUMS.gpg и SHA256SUMS вам необходимо получить открытые ключи. В следующем примере я получаю ключи с помощью wget и gpg –import (инструкции по проверке Kali ссылаются на этот сервер ключей).

Затем я проверяю целостность файла, вызывая gpg с аргументом –verify:

wget -q -O - https://archive.kali.org/archive-key.asc | gpg --import

gpg --verify SHA256SUMS.gpg SHA256SUMS

Как видите, подпись хорошая, и проверка прошла успешно.

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

Используя параметр –keyserver, я могу указать сервер для поиска ключа. Используя параметр –recv-keys, я получаю ключи. Тогда проверка работает:

gpg --verify SHASUMS256.txt.asc

Я копирую ключ, который мне нужно получить, а затем запускаю:

gpg --keyserver pool.sks-keyservers.net --recv-keys

74F12602B6F1C4E913FAA37AD3A89613643B6201


gpg --verify SHASUMS256.txt.asc

Поиск ключей gpg:

Если автоматическое получение ключей не работает и вы не можете найти инструкции по проверке, вы можете найти ключ на сервере ключей с помощью параметра –search-key.

gpg --search-key 74F12602B6F1C4E913FAA37AD3A89613643B6201

Как видите, ключ найден. Вы также можете получить его, нажав номер ключа, который вы хотите получить.

Заключение

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

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

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

Статьи по данной тематике: