GnuPG в linux

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

gnupgБольшинство разумного человечества и представителей других рас здесь ничего нового не узнает, те же кто не умеет читать инструкции по эксплуатации, подчерпнут здесь основы работы с GPG в консоли.

Прежде всего нужно установить GPG если оно не установлено по умолчанию. Тарболы можно скачать с оффсайта – gnupg.org. Однако, вместо компиляции исходников, некоторые предпочитают пакетные менеджеры.

Linux’ы на основе Red Hat:

yum install pgp

В Debian’ах:

apt-get install pgp

генерация ключей

Прежде всего хочется отметить, что GPG имеет возможность делать как ключи для симметричного шифрования, так и для несимметричного. Разница в том, что в первом случае один ключ подходит как для шифрации, так и для дешифрации, а во-втором открытым ключом можно только шифровать, а закрытым можно расшифровать.

Для нас большую ценность представляет несимметричное шифрование т.к. оно круче.

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

$ gpg --gen-key
gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Выберите тип ключа:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (только для подписи)
(4) RSA (только для подписи)
Ваш выбор (?-подробнее)?

Здесь я обычно либо ввожу 1, либо оставляю по умолчанию.

ключи RSA могут иметь длину от 1024 до 4096 бит.
Какой размер ключа Вам необходим? (2048)

Здесь чем больше тем лучше, но 2048 тоже круто и достаточно.

Запрашиваемый размер ключа 4096 бит
Выберите срок действия ключа.
0 = без ограничения срока действительности
= срок действительности n дней
w = срок действительности n недель
m = срок действительности n месяцев
y = срок действительности n лет
Ключ действителен до? (0)
Ключ не имеет ограничения срока действительности
Все верно? (y/N) y

Вводим срок действия и подтверждаем введенные данные.

Для идентификации Вашего ключа необходим User ID
Программа создаст его из Вашего имени, комментария и адреса e-mail в виде:
"Baba Yaga (pensioner) "
Ваше настоящее имя: antonio
Email-адрес: antonio@mail.com
Комментарий: fjkgjdg
Вы выбрали следующий User ID:
"antonio (fjkgjdg) "
Сменить (N)Имя, (C)Комментарий, (E)email-адрес или (O)Принять/(Q)Выход? O

Отвечаем на вопросы GPG, честно отвечая на вопросы.

Для защиты секретного ключа необходим пароль.
Необходимо сгенерировать много случайных чисел. Желательно, что бы Вы
выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.
.............................+++++
....+++++
Необходимо сгенерировать много случайных чисел. Желательно, что бы Вы
выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.
......+++++
....+++++
gpg: ключ 6A189DDA помечен как абсолютно доверяемый.
открытый и закрытый ключи созданы и подписаны.
gpg: проверка таблицы доверий
gpg: 3 ограниченных необходимо, 1 выполненных необходимо, PGP модель доверия
gpg: глубина: 0  корректных:   1  подписанных:   0  доверия: 0-, 0q, 0n, 0m, 0f, 1u
pub   4096R/6A189DDA 2010-10-28
Отпечаток ключа = 404B 5DD8 79F1 7AD9 7FA7  2B7A 2E1C FEB7 6A18 9DDA
uid                  antonio (fjkgjdg)
sub   4096R/664BC16D 2010-10-28

Вводим пароль и запоминаем его. Когда GPG просит сделать какие-нибудь действия берем мышку в руки и внимательно вырисовываем ей амперсант, затем тильду и букву ‘Ё’.

Теперь проверяем, вывод должен быть примерно такой:

$ gpg --list-keys
/home/your_username/.gnupg/pubring.gpg
---------------------------
pub   4096R/6A189DDA 2010-10-28
uid                  antonio (fjkgjdg)
sub   4096R/664BC16D 2010-10-28

экспорт ключей

После того как ключи сгенерированы, в случае если они вам на долго, то их можно сохранить.

открытый ключ

gpg --export -armor -o pub.asc

Если убрать -armor то ключ экспортируется в бинарном виде.

закрытый ключ

gpg --export-secret-key -armor -o sec.asc

Теперь у вас в текующей директории должно быть 2 файла: sec.asc и pub.asc.

шифрование и дешифрование файлов

шифрование

Для примера я зашифрую файл test.rb:

$ gpg -e test.rb > test.rb.gpg
Не задан User ID. (можете использовать "-r")
Текущие получатели:
Введите User ID.  Пустая строка для завершения: antonio
Текущие получатели:
4096R/664BC16D 2010-10-28 "antonio (fjkgjdg) "

Если не перенаправлять вывод, то содержимое зашифрованного файла выведется на стандартный вывод т.е. экран консоли.

дешифрование

$ gpg -d test.rb.gpg > test222.rb
Необходим пароль для доступа к секретному ключу пользователя: "antonio (fjkgjdg) "
4096-бит RSA ключ, ID 664BC16D, создан 2010-10-28 (главный ключ ID 6A189DDA)
gpg: зашифровано 4096-битным ключом RSA, с ID 664BC16D, созданным 2010-10-28
"antonio (fjkgjdg) "

При расшифровке потребуется пароль, ситуация с перенаправлением вывода такая же как и с шифрованием.

Теперь для того чтобы передать сверхважную информацию (а я уверен что у вас только такая инфа и есть) другу через открытый канал, например icq, необходимо вашему дружку скинуть открытый ключ, который мы предусмотрительно экспортировали в файл pub.asc. Друг у себя на компе зашифрует файл и отправит вам, который вы расшифруете закрытым ключом.

удаление ключей

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

Сначала нужно удалить секретный ключ, просто потому что иначе GPG не даст это сделать.

$ gpg --delete-secret-keys antonio
gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
sec  4096R/6A189DDA 2010-10-28 antonio (fjkgjdg)
Удалить данный ключ из таблицы ключей? (y/N)y
Это секретный ключ! - действительно удалить? (y/N)y

Теперь удаляем открытый ключ:

$ gpg --delete-keys antonio
gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
pub  4096R/6A189DDA 2010-10-28 antonio (fjkgjdg)
Удалить данный ключ из таблицы ключей? (y/N)y

И проверяем, что все удалено:

$ gpg --list-keys
gpg: проверка таблицы доверий
gpg: не найдено абсолютно доверяемых ключей

Видите как все просто, и ни в коем случае не надо передавать закрытый ключ!

No Comments.

Leave a Reply

(обязательно)

(обязательно)