- Используем GPG для шифрования сообщений и файлов
- Установка GPG
- Использование
- Создание ключа
- Конфигурация
- Команды и опции
- Редактирование ключа, подпись чужих ключей и отправка ключа на сервер ключей
- Где вы можете столкнуться с использованием GPG
- Использование Pretty-Good-Privacy в Linux
- Вступление
- Как работает криптография открытого ключа
- Версии PGP
- Установка PGP
- Основная конфигурация
- Создание пары ключей
- Добавление ключей к кольцу
- Удаление ключа из кольца
- Выделение ключа
- Содержание кольца
- Кодирование сообщения
- Кодирование сообщения для нескольких получателей
- Как сообщение подписывается
- Декодирование
- Обработка текстовых файлов
- «Отпечатки (fingerprints)»
- Использование PGP в командной строке
- Интеграция в почтовые клиенты
Используем GPG для шифрования сообщений и файлов
Кратко о том, как создавать ключи, шифровать и подписывать файлы и отправлять ключи на сервер ключей.
GPG может использоваться для симметричного шифрования, но в основном программа используется для ассиметричного шифрования информации. Если кратко — при симметричном шифровании для шифровки и расшифровки сообщения используется один ключ (например, какой символ соответствует той или иной букве). При ассиметричном шифровании используются 2 ключа — публичный и приватный. Публичный используется для шифрования и его мы можете дать своим друзьям, а приватный — для расшифровки, и его вы должны хранить в безопасности. Благодаря такой схеме расшифровать сообщение может только владелец приватного ключа (даже тот, кто зашифровывал сообщение, не может произвести обратную операцию). Подробнее про асимметричное шифрование вы можете прочитать в Википедии.
Установка GPG
Скачайте и установите Gpg4win.
В большинстве дистрибутивов GNU/Linux GPG уже установлен. Если же он у вас не установлен, установите пакет gnupg с помощью своего пакетного менеджера или соберите его из исходников.
Для Android существуют программы GnuPG for Android и OpenKeychain. Создатели GnuPG for Android рекомендуют использовать OpenKeychain.
Спасибо товарищу под ником sormon за то, что напомнил!
Использование
Здесь будет приведено только использование в Linux (на момент написания статьи последней версией GPG является 2.2.6)
Для начала стоит уточнить, что в большинстве дистрибутивов Linux есть два бинарных файла: gpg и gpg2 . Насколько я помню, это были две разные версии: 1.4.x и 2.0.x, и для удобного использования я делал alias, чтобы при запуске gpg выполнялся gpg2. Сейчас же в Debian и Arch Linux /bin/gpg2 является символической ссылкой на /bin/gpg и потребность в таких манипуляциях пропала. Проверить это можно выполнив file /bin/gpg2 .
Введя gpg без аргументов он создаст необходимые ему файлы (если они ещё не созданы) и будет ждать ввода шифруемой информации.
При наличии ключа мы можем ввести текст, нажать сочетание клавиш Ctrl + D и получить порцию кракозябр прямо в консоль. Но пока что у нас нет ключа.
Создание ключа
Чтобы создать ключ, нужно запустить GPG с аргументом «—full-generate-key» (можно и с «—gen-key», но в этом случае у нас не будет выбора некоторых важных параметров).
UPD: Если запустить GPG ещё и с аргументом —expert , то выбор типа ключа будет намного шире. За дополнение спасибо товарищу nikitasius!
Вы можете выбрать любой вариант, но учтите, что выбрав третий или четвёртый вариант вы не сможете шифровать сообщения и файлы!
Для RSA ключа размером 2048 бит вполне достаточно, но вы можете выбрать размер до 4096 бит (использовать ключи размера меньше 2048 бит небезопасно).
Если вы выберете ограниченный срок действия ключа, то по истечению его срока ключ будет признан недействительным. Вы можете продлить срок действия ключа, пока он не истечёт.
GPG спросит, верно ли мы указали срок, и если да, то нужно будет указать имя, адрес электронной почты и примечание (всё это опционально, но нужно указать хотя бы что-то одно).
Здесь вы можете сделать правки либо продолжить.
Дальше gpg попросит указать пароль (рекомендую освежить память и почитать о правилах выбора стойкого пароля). Если у вас запущен X сервер, то у вас вылезет диалоговое окно, куда нужно ввести пароль. Если же нет, то пароль вводится прямо в консоль.
Добавьте в файл
/.gnupg/gpg-agent.conf данную строчку:
pinentry-program /usr/bin/pinentry-tty
Pynentry — это те самые диалоговые окна. Помимо tty-версии (консольной) есть ещё несколько версий (графических), которые вы можете попробовать.
Затем перезапустите gpg-agent. На системах с systemd это делается так:
systemd —user reload gpg-agent
В терминале вводимый пароль никак не отображается!
Также тут есть полезный совет, который ускорит создание ключа. Следовать ему желательно, но необязательно (и очень аккуратно, чтобы не натыкать лишнего).
На этом этапе ключ генерируется и добавляется в связку ключей. В связке ключей может находится множество ключей. Также на этом этапе создаётся сертификат отзыва — файл, с помощью которого созданный ключ можно отозвать (признать недействительным). Рекомендуется хранить его в безопасном месте, т.к. если к нему получат доступ злоумышленники, то они смогут отозвать ваш ключ.
Итак, что же означают все эти странные последние строки?
rsa — Алгоритм шифрования RSA.
2048 — Длина ключа.
1970-01-01 — Дата создания ключа.
2BB680. E426AC — Отпечаток ключа. Его следует сверять при импортировании чужого публичного ключа — у обоих сторон он должен быть одинаков.
uid — Идентификатор (User-ID).
pub и sub — Типы ключа:
pub — Публичный ключ.
sub — Публичный подключ.
sec — Секретный ключ.
ssb — Секретный подключ.
[SC] и [E] — Предназначение каждого ключа. Когда вы создаёте ключ, вы получаете аж 4 криптоключа: для шифрования, расшифровки, подписи и проверки подписи:
S — Подпись (Signing).
C — Подпись ключа (Certification). Об этом пойдёт речь чуть позже.
E — Шифрование (Encryption).
A — Авторизация (Authentication). Может использоваться, например, в SSH.
Зачем нужно подписывать сообщения? Для того, чтобы подтвердить, что сообщение написано именно вами и не изменилось в процессе передачи. Если сообщение будет изменено, то при проверке подписи это будет указано.
Конфигурация
Файл конфигурации хранится в файле
/.gnupg/gpg.conf
Вот, например, пример моего файла конфигурации, который я рекомендую себе поставить:
keyid-format 0xlong — формат вывода идентификатора ключа. У каждого ключа и подключа есть свой идентификатор. По умолчанию он не выводится, раньше выводилась его короткая версия.
Доступные форматы:
none — Не выводить (По умолчанию).
short — Короткая запись.
0xshort — Короткая запись с префиксом «0x».
long — Длинная запись.
0xlong — длинная запись с префиксом «0x».
throw-keyids — Не включать информацию о ключе в зашифрованное сообщение. Эта опция может быть полезна для анонимизации получателя сообщения.
no-emit-version — Не вставлять версию GPG в зашифрованное сообщение.
no-comments — Убирает все комментарии из зашифрованного сообщения.
Всё это — опции, которые можно найти в man-странице. В файле конфигурации они записываются без префикса » — «.
Команды и опции
Я опишу только самое основное.
—armor
-a — Создаёт ASCII (символьный) вывод. При шифровании GPG по умолчанию создаёт бинарный вывод. При использовании этой опции GPG кодирует информацию кодировкой Radix-64 (Разновидность Base64). Этот текстовой вывод можно, например, отправить в мессенджере или по электронной почте, а также вывести на экран.
—encrypt
-e — Зашифровать сообщение.
—recipient
-r — Указать ключ, который будет использоваться для шифрования. Можно использовать информацию идентификатор пользователя (имя, почта), идентификатор ключа, отпечаток ключа.
—decrypt
-d — Расшифровать сообщение.
—sign
-s — Подписать сообщение. Подпись при этом будет распологаться отдельно от самого сообщения.
—clear-sign
—clearsign — Подписать сообщение. Подпись при этом сохраняется вместе с сообщением.
—local-user
-u — Указать ключ, который будет использоваться для подписи. Схож с опцией —recipient , но это не одно и то же.
—verify — Проверить подпись.
—list-keys
-k — Вывести список публичных ключей.
—list-secret-keys
-K — Вывести список приватных ключей.
—export — экспортировать публичный ключ в файл, который потом можно куда нибудь отправить.
—import — импортировать публичный ключ.
—edit-key — Редактировать ключ.
—expert — «Режим эксперта».
Примеры
gpg -a -r 0x12345678 -e decrypted.txt > encrypted.gpg
Зашифровать файл decrypted.txt в файл encrypted.gpg ключом 0x12345678 . При этом готовый файл будет текстовым, а не бинарным.
gpg -r 0x12345678 -d encrypted.gpg > decrypted.txt
Расшифровать файл encrypted.gpg ключом 0x12345678 и сохранить его в файл decrypted.txt .
gpg -u 0x12345678 -s message.txt > sign.asc
Подписать файл message ключом 0x12345678 и сохранить подпись в файл sign.asc .
gpg -r 0x12345678 —clearsign message.txt > message.gpg
Подписать файл message.txt ключом 0x12345678 и записать сообщение с подписью в файл message.gpg .
gpg —verify message.asc message.txt
Проверить подпись файла message.txt , которая записана в файле message.asc .
gpg —import pubkey.gpg
Импортировать публичный ключ из файла pubkey.gpg .
Редактирование ключа, подпись чужих ключей и отправка ключа на сервер ключей
Ключ редактируется командой gpg —edit-key .
После ввода этой команды вы увидите это:
Доступные команды вы можете узнать, введя help .
Здесь мы можем добавить различные подключи, добавить идентификаторы пользователя, а также подписать чужие публичные ключи.
Для чего нужно подписывать ключи? Так вы можете подтвердить то, что владелец подписываемого ключа является тем, за кого он себя выдаёт. Таким образом вы создаёте так называемую «Сеть Доверия». Пример: Алиса подписала публичный ключ Боба, а Боб подписал публичный ключ Чарли. Если Алиса получит публичный ключ Чарли, она сможет ему доверять, потому что ключ подписан тем, кому Алиса доверяет, т.е. Бобом. Для того, чтобы получить подписи для своего ключа, люди даже устраивают специальные встречи, где они обмениваются своими публичными ключами и подписывают их.
Теперь о серверах ключей. Сервер ключей — это специальный сервер, хранящий публичные ключи. Сервера ключей используются для распространения публичных ключей.
Внимание! Ключи, отправленные на сервер ключей, невозможно удалить! Их можно только отозвать, импортировав сертификат отзыва на сервер, при этом ключ всё равно остаётся на сервере.
Отправить публичный ключ на сервер:
gpg —keyserver —send-keys
Получить публичный ключ с идентификатором ключа с сервера :
gpg —keyserver —recv-keys
Получить обновления ключей с сервера:
gpg —keyserver —refresh-keys
Найти ключ на сервере:
gpg —keyserver —search-keys
Для удобства можно прописать адрес сервера ключей в gpg.conf , чтобы не прописывать его в командах:
keyserver
Где вы можете столкнуться с использованием GPG
Git
Вы можете использовать GPG для подписи ваших коммитов. Так вы подтверждаете, что коммит сделали именно вы. В GitHub можно импортировать свой публичный ключ и коммиты, подписанные вашим ключом, получат «галочку».
UPD: О конфигурации Git для использования GPG вы можете прочитать в документации по Git.
Вот пример файла конфигурации Git`а от товарища nikitasius:
Загрузка дистрибутивов и прочих файлов
Большинство установочных образов дистрибутивов распространяются подписанными разработчиками. Если вы загрузите модифицированный образ, то при проверке подписи вы сразу заметите, что образ не оригинальный. Примером служит популярный дистрибутив Tails.
Пакетные менеджеры
Все пакеты подписываются разработчиками для защиты от изменений. При установке пакетов эти подписи проверяются. Делается это всё автоматически без вмешательства пользователя.
Источник
Использование Pretty-Good-Privacy в Linux
Вступление
PGP является средством, созданным для обеспечения защиты и аутентификации информации в таких ненадежных коммуникационных сетях, как Internet.
Защита гарантирует, что только получатель информации может воспользоваться ей. Оказавшись в чужих руках, она будет совершенно бесполезной, поскольку ее нельзя будет декодировать.
Аутентификация гарантирует, что если некоторая ифнормация была создана лицом «A» , то она действительно поступила от «A» и не была никем сфальсифицирована или изменена в пути.
PGP основана на криптографической системе, известной как открытый ключ , которая может быть использована на ненадежных каналах. Это делает ее идеальной для обеспечения защиты информации, передаваемой по таким сетям, как Internet.
Для того, чтобы интересоваться защитой передаваемых вами данных и, следовательно, нуждаться в средстве криптографии, вовсе не обязательно участвовать в крутом промышленном шпионаже 🙂 Нечто совсем простое, например E-mail, может быть самой настоящей причиной начать использовать PGP. Давайте разберемся почему: Можно сравнить E-Mail с почтовыми карточками. Любой, кому она попадет в руки, может прочитать ее, потому что нет физических преград, которые смогут помешать этому. С другой стороны, письмо в конверте более защищено. Можно держать конверт в руках, но нельзя прочитать письма. Если кто-то захочет прочитать его, ему придется порвать конверт. Можно провести аналогию конверта с PGP, которое действует как дополнение к нашей E-Mail. PGP не позволяет никому прочитать сообщение, это может сделать только тот, кому оно предназначено; это одно из многих преимуществ PGP.
Как работает криптография открытого ключа
Открытый ключ может и должен быть свободно доступным, так как он является именно тем ключом, который остальной мир использует для передачи вам информации. Однако открытый ключ не угрожает безопасности закрытого ключа.
Рассмотрим это на примере двух друзей, Хуана и Педро. Хуан может безопасно послать информацию Педро, если он знает его открытый ключ. С другой стороны, Педро, используя свой закрытый ключ, способен декодировать сообщение, которое послал Хуан. Предположим, что есть еще один человек, Маркос, который перехватывает сообщение, которое Хуан послал Педро. Маркос не может ничего сделать с сообщением, поскольку у него нет закрытого ключа Педро. Даже сам Хуан, отправитель и создатель сообщения, не может декодировать его, это может сделать только Педро, при помощи закрытого ключа.
Безопасность системы основана на надежном хранении каждым пользователем своих закрытых ключей, даже в тех случаях, когда открытый ключ широко известен . Если кто-то попытается сломать систему, не зная закрытого ключа получателя, ему потребуется так много лет, что в конце концов информация окажется бесполезной.
Как было сказано во вступлении, помимо защиты, PGP дает возможность аутентифицировать информацию. Рассмотрим почему:
Наш открытый ключ служит не только для кодирования сообщений, но и для «подписи» посылаемой информации; полная аналогия с подписями, которые часто ставят на бумажных документах.
Подписанный цифровым образом без закрытого ключа документ может быть аутентифицирован любым человеком, обладающим открытым ключом. Такая аутентификация предоставляет средства, позволяющие проверить, действительно ли сообщение поступило от человека, указанного в качестве отправителя, и что оно не было изменено или фальсифицировано.
Для обеспечения защиты и аутентификации могут использоваться оба процесса, как кодирование, так и подпись. Сначала документ подписывается нашим закрытым ключом и затем кодируется с помощью открытого ключа получателя.
По получении сообщения получатель выполняет шаги в обратном порядке, сначала декодируя документ своим закрытым ключом и потом проверяя нашу подпись нашим открытым ключом.
Все эти процессы могут быть автоматизированы, это мы покажем позднее.
Открытый ключ хранится в так назыаемом сетрификате ключа , который является самим открытым ключом вместе с именем владельца и датой его создания.
Закрытый ключ защищен паролем, который предотвращает его несанкционированное использование.
Оба ключа хранятся в файле, известном как кольцо ключей , в котором также хранятся различные сертификаты ключей. Обычно есть кольцо для открытых ключей и кольцо для закрытых.
Ключи имеют внутренний идентификатор ключа , который состоит из 64 последних бит ключа. При отображении информации о ключе на самом деле показываются последние 32 бита ключа. Эти идентификаторы ключа используются PGP, например, для определения ключа при декодировании сообщения.
При подписывании документа PGP формирует 128 бит, которые представляют документ. Эта подпись является своего рода контрольной суммой, или CRC, которая позволяет обнаружить изменения в документе. В отличие от обычных CRC или контрольных сумм, никто не может заново создать эту подпись чтобы узаконить любые изменения исходного документа. Подпись создается при помощи закрытого ключа отправителя и тот, кто хочет внести изменения, не имеет к нему доступа.
Версии PGP
На этом этапе необходимо еще раз сказать о большой путанице, окружающей различные версии PGP. В виду политики Соединенных Штатов в отношении экспорта криптографического материала, появились несколько версий PGP, вместе с несколькими законами по их использованию. Я постараюсь прояснить всю эту неразбериху и перечислю различные версии, существующие на сегодняшний день.
Бесплатные версии PGP:
PGP 2.3a
Это «классический» PGP. Его все еще можно использовать, хотя из-за несовместимости могут возникнуть некоторые проблемы при обработке ключей и сообщений, созданными версиями 2.6.x и более поздними, использующими ключи длиннее 1280 бит. Предполагается, что версия 2.3a не может использоваться за пределами США из-за патентных ограничений.
PGP 2.6ui
Это неофициальная версия PGP 2.3a, которая устраняет указанные выше проблемы несовместимости. Эта версия не является версией 2.6.x так как она базируется на исходных кодах 2.3a
PGP 2.62ui
Она основана на исходных кодах 2.6ui и является модификацией, в которой попытались достичь совместимости с последнимий нововведениями, появившимися в версиях 2.6.x.
MIT PGP 2.6.2
Это последняя официальная версия PGP. Ее сообщения можно прочитать предыдущими версиями до 2.5 и она использует библиотеку кодирования RSAREF. Экспортировать эту версию за пределы США незаконно, но, что любопытно, если она экспортирована, то ее можно свободно использовать.
PGP 2.6.3i
Основана на исходных кодах MIT PGP 2.6.2, которые были модифицированы для международного использования. В частности, не используется упомянутая выше библиотека кодировани RSAREF. Использование этой версии в США незаконно.
PGP 5.0
PGP 5.0 (ранее известная как PGP 3.0) является абсолютно новой версией PGP. Ее исходные коды были написаны абсолютно независимо. Добавлены новые опции, включая поддержку других криптографических алгоритмов, помимо RSA и IDEA. В нее входит графический пользовательский интерфейс для упрощения ее использования. Эта версия будет доступна в середине лета.
Коммерческие версии PGP (только в США и Канаде):
ViaCrypt PGP 2.7.1 y 4.0
Так как она является коммерческой, в поставку входит руководство и лицензия на личное использование. Исходные коды в поставку не входят.
PGP 4.5 и 5.0
В июне 1996 PGP Inc. купила ViaCrypt и начала разработку коммерческих версий PGP для Соединенных Штатов и Канады. Самой последней версией является PGPMail 4.5.
В нашем случае, если мы живем за пределами США, то было бы правильно использовать 2.6.3i, если в США, то мы должны остановить свой выбор на 2.6.2 или 2.6.3.
Необходимо также учитывать, что в некоторых странах, например во Франции, Иране, Ираке, России и Китае, использование криптографии регулируется законодательством или запрещено.
Установка PGP
Первым шагом будет создать каталог для исходных кодов: Далее разворачиваем архив: Теперь переходим в только что созданный каталог: Теперь разворачиваем файл pgp263ii.tar, котором находится документация и исходный код программы. Это выполняется командой: Сейчас вы готовы к компиляции PGP. Если вы загрузили не исходный код, а скомпилированную версию (a.out или ELF), вы можете пропустить этот этап. Если вы подготовили исходный код, то компиляция выполняется следующими командами: Если все прошло хорошо, то makefile создаст исполняемый файл pgp. В случае глобальной установки вы можете скопировать его в /usr/local/bin, /usr/bin или куда пожелаете. Или вы можете оставить его в вашем домашнем каталоге.
Аналогично, файл справки pgp.1 копируется в /usr/man/man1 в случае глобальной установки.
Основная конфигурация
/.pgp, поэтому первым шагом мы создадим этот каталог в нашем HOME: Обратимся к дистрибутиву и найдем файл config.txt , который отвечает за конфигурацию некоторых аспектов PGP. Чтобы у вас была личная конфигурация, вы должны скопировать этот файл в ваш только что созданный
/.pgp/config.txt, вы можете переименовать его в .pgprc и сохранить в вашем домашнем каталоге, то есть
Среди прочего, этот файл может определять используемый язык при помощи параметра Languaje , возможные варианты: В этом файле есть другие параметры. Чтобы воспользоваться преимуществами этой опции, вы должны скопировать файл languaje.txt в
Далее рекомендуется скопировать персонализированный файл справки на вашем языке в
/.pgp. В случае испано-говорящих пользователей можно скопировать файл es.hlp .
Создание пары ключей
После выбора размера ключа вас попросят задать идентификатор открытого ключа. Обычно здесь люди указывают свои имена или e-mail адрес. В моем случае, я написал:
Angel Lopez Gonzalez
Далее идет пароль, который будет защищать ваш закрытый ключ. Выберите фразу, которую вы легко сможете запомнить. Это необходимо для защиты закрытого ключа. Например, если кто-нибудь украдет его, он будет бесполезен без пароля.
Наконец, программа попросит вас в произвольном порядке нажать несколько клавиш на клавиатуре чтобы она могла создать последовательность случайных чисел. Программа задает последовательность бит на основе интервалов между нажатиями клавиш.
Через несколько секунд PGP создаст ключи и известит вас об этом сообщением. После того, как ключи были сгенерированы должным образом, их необходимо сохранить в каталоге
/.pgp в виде файлов: pubring.pgp и secring.pgp
Первый, pubring.pgp , является кольцом с открытым ключем. На данный момент в нем хранится только ваш ключ.
Второй, secring.pgp является, как вы можете понять, кольцом закрытых ключей, на данный момент в нем содержится только ваш закрытый ключ.
Необходимо помнить, что безопасность методов открытого ключа опирается на безопасность закрытого ключа; поэтому, обязательно храните его в надежном месте и следите за тем, чтобы никто не смог его получить из кольца закрытых ключей. Проверьте права доступа к secring.pgp и установите такие права доступа, чтобы только вы могли читать и записывать, причем остальные не должны иметь доступ вообще.
Наконец, необходимо упомянуть, что редактировать и изменять и идентификаторы ключей и пароли закрытых ключей можно с помощью команды:
Добавление ключей к кольцу
Если в вашем файле Somekey.pgp содержится ключ и вы хотите добавить его в ваши кольца, процедура очень проста: По умолчанию расширение .pgp указывает на файл с ключем и имена pubring.pgp и secring.pgp даются файлам, содержащим кольца открытых и закрытых ключей, соответственно.
После добавления ключа PGP может сообщить вам, что добавленный ключ не полностью сертифицирован ; это означает, что данный ключ не обязательно может принадлежать заявленному владельцу.
Если есть «уверенность», что ключ действительно принадлежит этому человеку, или потому что он или она дали его вам лично или по безопасному каналу, то вы сами можете сертифицировать его. Это означает, что мы удостоверяем сертифицированность ключа.
Это облегчает передачу нашего ключа человеку, который нам доверяет и абсолютно уверен в том, что мы передали ему правильный ключ.
Для этого процесса придумали даже имя, доверие в сети . В Соединенных Штатах пользователи PGP даже устраивают собирания для обмена открытыми ключами и их подписи 🙂
Рассмотрим эту концепцию на примере. Возьмем все тех же двух друзей, Хуана и Педро. Хуан дает свой открытый ключ Педро. Педро уверен, что ключ, который ему дал Хуан, верен, так как они доверяют друг другу. Когда он приходит домой, он добавляет его к своему кольцу открытых ключей, и он может его сертифицировать, поскольку ключ действительно принадлежит Хуану, поэтому он подписывает его своим закрытым ключом.
Теперь на сцене появляются еще два человека: Луис и Мария. Луис получает от Педро ключ Хуана и позднее пересылает его Марии. Мария не доверяет Луису, но видит, что ключ Хуана сертифицирован Педро. Мария может проверить открытый ключ Хуана благодаря подписи Педро. У нее есть открытый ключ Педро, который он дал ей лично, поэтому она может доверять ключу Луиса, проверив подлинность подписи Педро. Теперь мы знаем, как Мария может довериться ключу, данному ей такой ненадежной личностью, как Луис.
Это запутано 🙂 но необходимо для защиты единственного слабого места этого типа криптографии: факта фальсификации открытого ключа.
Удаление ключа из кольца
Выделение ключа
Созданный файл mykey.pgp не в формате ASCII (попробуйте использовать cat для его просмотра). Однако, если кому-нибудь потребуется создать файл ключа в формате ASCII чтобы послать, к примеру, по e-mail, или добавить дополнительную информацию к базе данных finger, ему потребуется напечатать: Например: «pgp -kxa angel mykey» выделяет открытый ключ, идентифицированный подстрокой «angel», в файл «mykey.asc».
Вместе с ключом также выделяются все сертификаты, которые его подтверждают.
Содержание кольца
Чтобы просмотреть все сертификаты каждого ключа, необходимо набрать:
Кодирование сообщения
Помните, что созданный файл, exam.pgp, не является ASCII файлом, поэтому для отправки его по E-Mail может потребоваться добавить еще одну опцию -a для того, чтобы выходной закодированный файл был в формате ASCII, например так: По причинам безопасности, нам иногда может потребоваться удалить оригинал. PGP может делать это автоматически при помощи опции -w:
Кодирование сообщения для нескольких получателей
Как сообщение подписывается
Чтобы подписать документ, необходимо использовать ваш закрытый ключ: Если у нас есть несколько закрытых ключей в нашем secring.pgp, мы можем выбрать один из них при помощи идентификатора.
Когда наш учитель из примера решает подписать экзаменационные задачи, чтобы сообщить, что их послали не студенты-шутники 🙂 он набирает следующее: Эта команда создает файл с именем exam.doc.pgp, который не является ASCII-текстом, потому что PGP пытается сжать файл. Если, с другой стороны, вы хотите подписать файл, оставив текст читабельным и с подписью в конце, то процедура будет выглядеть: Эта последняя команда очень полезна при подписи электронной почты, которую и дальше можно будет читать без использования PGP или тем, кому не хочется проверять подпись.
Кроме того, можно подписать документ и затем закодировать его при помощи следущей команды: Например: Здесь файл exam.doc кодируется и подписывается и сохраняется в файле exam.pgp. Для кодирования файла используется открытый ключ, идентифицируемый подстрокой «marcos», поэтому только этим ключом можно декодировать этот файл. Затем я идентифицирую мой закрытый ключ строкой «angel», так как в моем кольце есть несколько ключей.
Даже в этом случае можно создать файл в формате ASCII, используя опцию -a .
Кроме того, нас может заинтересовать возможность создания подписи файла отдельно от данных. Чтобы это сделать, воспользуемся опцией -b : Эта команда создает новый файл exam.sig, содержащий только подписи.
Декодирование
Однако, после декодирования файла нам необходимо указать стандартный выход для декодированного файла. Это достигается использованием опции -m : Существует еще одна возможность — использовать каналы ввода и вывода с опцией -f : Еще одним интересным сценарием является декодирование подписанного сообщения, посланного нам кем-нибудь, с сохранением подписи, например для кодирования его еще раз для того, чтобы послать его кому-нибудь еще. Чтобы это сделать, нужно использвать опцию -d : Здесь мы берем файл exam.pgp и декодируем его, но при этом оставляем оригинальную подпись в файле. Теперь можно переходить к кодированию его открытым ключом того человека, который после получения может проверить аутентичность исходного сообщения.
Обработка текстовых файлов
«Отпечатки (fingerprints)»
Для просмотра отпечатка ключа используется команда:
Использование PGP в командной строке
При использовании этой опции PGP не будет спрашивать ничего сверх крайне необходимого. Используйте эту опцию для автоматической проверки подписи. При отсутствии подписи в файле возвращается код ошибки 1; если файл подписан и подпись правильна, то возвращается 0. force
Использование этой опции одобряет любую операцию по пререписыванию файла или удалению ключа. В командной строке желательно обойтись без запросов паролей при кодировании файла. Например, чтобы избежать вопросов во время кодирования мы может просто обойти это задав переменную окружения PGPPASS .
Здесь приведен пример: Еще одним способом передачи пароля PGP в не-интерактивном режиме является использование опции -z .
Как здесь: Еще одна полезная операция в командной строке — это изменение «разговорчивости» PGP при помощи опции +verbose. Она задает тихий режим — то есть отсутствие информационных сообщений, только сообщения об ошибках:
Интеграция в почтовые клиенты
В качестве примера я расскажу про интеграцию PGP в Pine. Надеюсь, читатель использует именно этот почтовый клиент.
Хотя я буду описывать работу PGP с Pine, основные принципы применимы ко всем другим клиентам. Конфигурация, конечно, будет отличаться для каждой почтовой программы.
Для автоматической декодировки почты перед чтением необходим фильтр для обработки сообщения и вывода его на экран. Кроме этого, можно создать макрос, который объединит декодирование и вывод на экран.
В случае Pine, у него есть опция для определения фильтров, которые выполняются до вывода сообщения на экран. Эта опция называется ‘ display-filters’ и находится в конфигурационном меню Pine. В эту опцию мы добавим новый фильтр, который выглядит так: Каждое закодированное PGP сообщение заключается двумя определенными строчками — «——BEGIN PGP MESSAGE——» и «——END PGP MESSAGE——» — с тем, чтобы если вы захотите узнать, имеет ли сообщение в теле закодированный текст, то достаточно найти одну из указанных выше строчек. Фильтр, определенный в Pine, делате именно это. Перед отображением самого сообщения он проверяет тело сообщения на наличие строки «——BEGIN PGP MESSAGE——» с тем лишь ограничением, что она должна быть в начале какой-либо строки. Если он находит ее, он выполняет программу: /usr/local/bin/pgp
Затем, если в теле действительно есть закодированное сообщение, будет выполнено декодирование PGP. У вас спросят пароль и вы сможете прочитать сообщение. Если вы хотите еще больше автоматизировать этот процесс, уменьшив время, необходимое на то, чтобы каждый раз указывать пароль, то вам потребуется определить переменную среды PGPPASS или использовать опцию -z как было показано выше.
Теперь нам требуется только задать фильтр, который закодирует наше сообщение с открытыми ключами получателей из нашего открытого кольца до отправки сообщения. Pine помогает нам еще раз, в нем есть конфигурационная опция ‘ sending-filters.’ Ниже приведен фильтр, который надо задать для этой опции: После написания сообщения и нажатия CTRL-X для отправки, Pine спросит нас, хотим ли мы послать его сразу, без применения заданных фильтров. Чтобы послать сообщение без кодирования, просто ответьте утвердительно, но если вы хотите послать сообщение закодированным, то нажмите CTRL-N или CTRL-P, далее вам предложат список всех заданных фильтров. В нашем случае это будет только фильтр PGP, приведенный выше.
Это очень простые и базовые настройки, которые позволят вам использовать PGP в Pine с применением только двух фильтров. Для получения дополнительной информации по интеграции PGP с Pine и другими системами, посмотрите следующие ссылки:
Источник