GPG или GnuPG - Gnu Privacy Guard. Полностью открытый аналог PGP (Pretty Good Privacy). Распространяется под лицензией GPL. В настоящее время в наличии практически во всех репозитариях в дистрибутивах Linux. GnuPG служит для создания цифровых подписей и шифрования данных. То есть лицо, получившее от вас письмо или файл, может быть на 100% уверено, что оно не поддельное и прочитать его сможет только получатель, указанный отправителем. Таким образом, ваша почта может быть существенно более безопасной и данные сложнее будет получить злоумышленникам даже в случае полного доступа к ящику во время взлома.
- Симметричное шифрование.
Как уже рассказывалось на странице Шифрование, при наличии в операционной системе GPG можно просто зашифровать любой файл. Для этого достаточно просто отдать команду:
gpg -c file
Система дважды запросит пароль. В итоге вы получите рядом с исходным файлом новый с разширением .gpg в конце. Например, file.gpg. Расшифровать очень просто:
gpg file.gpg
И после введения пароля вы получите свой исходный файл.
- Асимметричное шифрование.
Немного более сложная процедура, т.к. тут участвует 2 ключа. Один ваш личный, секретный, известный только вам и никому иному. Другой публичный, раздаваемый вами знакомым любым удобным способом. Как раз этот вариант и наиболее часто используемый, т.к. в первом варианте кроме зашифрованного файла нужно передавать и пароль на него, а где гарантия, что он не будет перехвачен.
Генерация ключей GPG
Для начала вам необходимо создать для себя эту пару ключей. Есть различные графические оболочки для этого, но для начала мы это сделаем в текстовом режиме. Это просто и позволит вам понять сам процесс формирования ключей. Итак, создание ключей начинается с команды:
gpg –gen-key
Далее система запросит: Выберите тип ключа:
1 2 3 4 |
|
Нужно выбрать ПЕРВЫЙ вариант.
Запрос системы:
1 2 |
|
По умолчанию стоит 2048. Этого в настоящее время вполне хватит. Просто нажмите ENTER.
Запрос системы:
1 2 3 4 5 6 7 |
|
В данном случае вы можете указать срок действия ключа. В качестве принятого (да и в законодательстве РФ), срок действия ключа ограничивают 1 годом. Но вы можете оставить и 0 - срок действия ключа не будет ограничен. Просто нажмите ENTER.
Запрос системы:
1 2 3 4 5 |
|
Вам необходимо указать ваше полное имя, желательно латинскими символами. Например, как указано выше: Wiki Admin. Далее система запросит у вас адрес электронной почты, комментарий (что угодно можно указать тут). И после этого покажет полные введенные данные:
1 2 |
|
Если все ок, просто нажмите латинскую “О”. Система дважды запросит у вас пароль для ключа. Советую использовать сложный, но в то же время хорошо запоминаемый вами пароль. И после этого пойдет процесс генерации ключей. Необходимо сгенерировать много случайных чисел. Желательно, что бы Вы выполняли некоторые другие действия (печать на клавиатуре, движения мыши, обращения к дискам) в процессе генерации; это даст генератору случайных чисел возможность получить лучшую энтропию. Этот процесс протекает не очень быстро, поэтому не торопитесь его прерывать, думая, что все “зависло”.
Просмотр списка ключей в системе
Система после генерации скажет вам, что ключи созданы и покажет их. Но эти и другие ключи вы можете в любой момент увидеть с помощью команды:
1
|
|
где pub - публичный ключ, sub - секретный.
Экспорт открытого ключа
Теперь экспортируем только что созданный ключ в текстовый файл. После этого вы можете его разместить на своём вебсайте, или разослать своим друзьям, и уже вести приватную переписку или обмен зашифрованными файлами. Отдайте команду:
1
|
|
Где вместо wikiadmin@wikiadmin.net.asc укажите свою почту и добавьте расширение asc. (В принципе, вы можете назвать файл 1.txt, но если вы кому-то его пошлете, он может быть потерян, перепутан с другими файлами и т.д. Назвав же таким образом, получателю будет ясно, что это ключ (asc) для зашифрованных писем от wikiadmin@wikiadmin.net). В качестве 111111 идут символы после слова pub в списке ключей (Например, “pub 2048R/F22D3246” - вам нужно указать только “F22D3246” - это и есть ID вашего открытого ключа.) Хотя в качестве ID вы так же можете указать свой e-mail или имя, но не всегда это может быть хорошей идеей.
Отправить ключ вы можете и на сервер ключей. Это позволит вашему корреспонденту не ждать отдельно от вас ключ, а просто запросить его на сервере. Отправка делается просто:
1
|
|
где 111111 - идентификатор ключа, pgp.mit.edu - рекомендуемый сервер ключей. Как получить ключ корреспондента с сервера - чуть ниже…
Импорт открытого ключа другой стороны и доверие к нему
Все, ключи сгенерированы, открытый ключ лежит в ожидании отправки нужным корреспондентам. Но вам нужно не только отправить свой ключ, но и получить ключ того, с кем вы будете вести приватную переписку. Достаточно для этого просто получить файл (например aleksdem@aleksdem.com.asc) и импортировать его командой:
1
|
|
Вы можете так же получить ключ, если он есть на сервере ключей. Для этого достаточно знать email корреспондента. Отдайте такую команду:
1
|
|
где 111111 - идентификатор или (что проще) email корреспондента.
Но, чтобы пользоваться ключoм, вам ещё специфически надо указать, что вы доверяете владельцу этого ключа. Найдите ключ, который вы импортировали (gpg –list-keys). Дальше наберите gpg –edit-key aleksdem@aleksdem.com (используйте имя владельца, или идентификатор ключа). Откроется ком. строка, куда вам нужно набрать слово “trust” и нажмите ENTER. Далее, вам нужно из предлагаемого списка выбрать “5 = I trust ultimately”, написав 5 Enter . Потом команда quit, чтобы выйти. Вот теперь уже импортированным ключом можно пользоваться.
Перенос ключей
Как вы понимаете, всегда нужно делать резервную копию. И это касается в немаловажной степени и ключей:
любые файлы, зашифрованные потерянной парой ключей, невозможно расшифровать;
процесс расшифрования требует закрытого ключа, который не хранится на серверах ключей.
(Важно! Если Вы потеряли Вашу пару ключей, необходимо отозвать ключ при помощи сертификата отзыва.)
Создание копии открытого ключа
Выведите список ключей при помощи команды:
1
|
|
Часть строки после pub 2048R/ является идентификатором открытого ключа. Экспорт открытого ключа можно выполнить при помощи команды:
1
|
|
Создание копии секретного ключа
Выведите список секретных ключей при помощи команды:
1
|
|
Часть строки после sec 2048R/ является идентификатором закрытого ключа. Экспорт закрытого ключа можно выполнить при помощи команды:
1
|
|
Важно! Позаботьтесь о том, чтобы защитить эти файлы, поскольку проэкспортированные ключи хранятся в открытом виде.
Восстановление ключей
Восстановление ключей осуществляется путём их импорта при помощи команд:
1 2 |
|
Отправка зашифрованного сообщения из консоли Linux с помощью mail
Это делается так:
1
|
|
Одно только - сначала вам нужно импортировать открытый ключ получателя (например, в сервера ключей, как описано выше), а так же выставить ему степень доверия (не обязательно).