Совет предложил: rl03.
GnuPG - программа для шифрования и подписывания информации, совместимая с PGP. Я не буду здесь рассказывать, что такое шифрование и как оно работает, а лишь приведу основные приемы работы с GnuPG.
Исполняемый файл GnuPG называется gpg. Работа с ним производится при помощи параметров командной строки либо в интерактивном режиме (например, редактирование ключа).
Связка открытых ключей хранится в файле ~/.gnupg/pubring.gpg, а закрытых - в ~/.gnupg/secring.gpg.
Создание пары ключей
Пара ключей создается командой gpg --gen-key. При этом вас спросят тип, размер и срок действия ключа. Затем будет предложено ввести идентификатор пользователя и ключевую фразу. После создания ключа можно просмотреть его командой gpg --list-keys <�ключ>, где <�ключ> - это любая информация о ключе - имя пользователя, почтовый адрес или цифровой идентификатор.
Теперь экспортируем открытый ключ в файл. Это делается следующей командой:
gpg --output pubkey.asc --export <�ключ> --armor
Здесь --armor указывает на то, что вывод должен быть в текстовом, а не двоичном, формате.
Импорт и подписывание чужих открытых ключей
Допустим, у нас имеется чей-то открытый ключ, полученный по почте, с PGP-сервера или еще как-то и созраненный в файл pubkey.asc. Импортируем его в свою связку:
gpg --import pubkey.asc
Перед тем, как пользоваться этим ключом для шифрования или проверки подписи, надо указать степень доверия к этому ключу, а для этого подписать его своим закрытым ключом. Всё это (как и все операции над ключами, имеющимися в связке) делается в специальном режиме редактирования ключа, запускаемом командой gpg --edit-key <�ключ>.
Сначала командой fpr просмотрите отпечаток ключа и обязательно сравните его с отпечатком, полученным от хозяина ключа по надежным каналам (по телефону или при личной встрече). Помните, что подписывая открытый ключ, вы подтверждаете его подлинность. Не проверяя отпечаток, вы можете довериться подмененному ключу, что недопустимо. После проверки отпечатка введите команду sign. Укажите, должна ли будущая подпись быть экспортируемой вместе с открытым ключом, или же только локальной. Выберите степень Вашего доверия к данному открытому ключу. Затем введите ключевую фразу своего закрытого ключа. Ключ подписан. Для проверки можете ввести команду check и увидеть только что сделанную подпись. Для выхода из режима редактирования введите команду q и не забудьте сохранить сделанные изменения.
Шифрование
Для шифрования нам необходим открытый ключ человека, которому предназначена шифруемая информация. Для шифрования самому себе можно использовать и собственный открытый ключ.
Чтобы зашифровать файл 1.txt, введите следующую команду:
gpg --output 1.gpg --encrypt --recipient <�ключ> 1.txt
При этом можно указывать несколько получателей, перед каждым заново ставя --recipient. По умолчанию создается бинарный файл, для создания текстового файла укажите опцию --armor.
Для расшифровки необходим закрытый ключ, соответствующий открытому, которым шифровалось сообщение. Для расшифровки введите команду
gpg --output 1.txt --decrypt 1.gpg
Необходимо будет ввести ключевую фразу используемого ключа.
При необходимости gnupg может шифровать информацию с применением симметричных алгоритмов. Для этого к команде шифрования добавьте опцию --symmetric. Вас попросят ввести ключевую фразу, на основе которой будет зашифрован файл. Для расшифровки необходимо будет ввести эту же фразу.
Подписывание и проверка подписи
Существует 3 типа подписей. Для создания подписи необходим закрытый ключ, для проверки - открытый.
1. Обычная подпись. Команда:
gpg --output 1.gpg --sign 1.txt
При этом сам файл и его подпись будут объединены в отдельный файл. Прочитать этот файл просто так не получится. Для простой проверки подписи выполните
gpg --verify 1.gpg
Для того, чтобы извлечь сам файл, вместо --verify используйте --decrypt. При этом, несмотря на название ключа, закрытый ключ не потребуется.
2. Прозрачная подпись (Clearsign). При таком способе подписывания к исходному файлу добавляется подпись, при этом сам файл можно просматривать без использования gpg. Для создания такой подписи вместо --sign используется --clearsign.
3. Отделенная (detached) подпись. При этом исходный файл вообще не меняется, а подпись сохраняется в отдельный файл. Для этого используется ключ --detach-sign. Чтобы проверить подпись, необходимы и подпись, и сам подписанный файл. В команде проверки надо указывать оба файла:
gpg --verify 1.sig 1.txt