GPG и PGP

Создание своего ключа

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

Создаем ключ:

~ $ gpg --gen-key

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

~ $ gpg --armor --output pubkey.txt --export 'Your Name'
~ $ gpg --send-keys 'Your Name' --keyserver hkp://subkeys.pgp.net

Шифрование/расшифровка на локальном хосте

Теперь мы можем зашифровать/расшифровать файл с именем foo.txt на своем локальном хосте, — это выглядет так:

~ $ gpg --encrypt --recipient 'Your Name' foo.txt
~ $ gpg --output foo.txt --decrypt foo.txt.gpg

Шифрование файла для передачи адресату

gpg --search-keys 'myfriend@his.isp.com' --keyserver hkp://subkeys.pgp.net
gpg --import key.asc
gpg --list-keys
gpg --encrypt --recipient 'myfriend@his.isp.net' foo.txt

Расшифровка

gpg --output foo.txt --decrypt foo.txt.gpg

Подписание файлов

gpg --verify crucial.tar.gz.asc crucial.tar.gz
gpg --armor --detach-sign your-file.zip

Ссылки по теме

NO_PUBKEY. Получение GPG-ключа.

При установке пакетов в Linux, с помощью команды apt-get иногда возникает ошибка вида «W: GPG error: [..] Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY [..]». Обычно такая ситуация возникает после добавления нового репозитория в /etc/apt/sources.list с последующей попыткой установить пакет из этого репозитория.

Причина происхождения проблемы — отсутствие в вашей системе публичного GnuPG-ключа репозитория, из которого вы пытаетесь инсталлировать пакет (который, в свою очередь, подписан данным ключом). Хеш нужного ключа указывается в тексте ошибки после NO_PUBKEY (т.е. на месте второго «[..]»). Именно его и надо добавить в базу apt вашей системы для успешной установки пакета.

Чтобы это сделать, требуется выполнить две команды:

gpg --keyserver subkeys.pgp.net --recv KEY
gpg --export --armor KEY | sudo apt-key add -

Здесь вместо KEY нужно подставить значение того GPG-ключа, который вы хотите добавить в свою базу. Так, например, если вы получали ошибку NO_PUBKEY F120156012B83718, вам потребуется выполнить следующие команды:

gpg --keyserver subkeys.pgp.net --recv ADB4438160A655EF
gpg --export --armor ADB4438160A655EF| sudo apt-key add -

После успешного экспорта GPG-ключа в свою базу вы можете повторить попытку установить нужный вам пакет.

——

есть способ проще и элегантнее, возможно пригодится

sudo apt-get update

дождитесь строк типа

W: Ошибка: deb.opera.com unstable Release: Следующие подписи не могут быть проверены, так как недоступен открытый ключ: NO_PUBKEY ADB4438160A655EF

ADB4438160A655EF — это КЛЮЧ, он разный для разных репозитариев

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com ADB4438160A655EF

——

если у вас прокси в сети, то

sudo apt-key adv --recv-keys --keyserver-options http-proxy=«адрес_прокси: порт» --keyserver keyserver.ubuntu.com ADB4438160A655EF

——

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com `sudo apt-get update 2>&1 | grep -o '[0-9A-Z]\{16\}$' | xargs`