www.Litecode.ru – Сборник рецептов для создания сайтов

Cоздание gpg ключа в linux

ГлавнаяUnix → Cоздание gpg ключа в linux

GPG или GnuPG – утилита для шифрования данных и создания электронных цифровых подписей. GnuPG работает на всех популярных операционных системах: Windows, Linux, Mac OS, FreeBSD и т.д.. GnuPG выполняет шифрование данных с помощью асимметричных пар ключей.

Шаг 1. Чтобы создать пару gpg ключей на linux-платформе необходимо установить утилиту gnupg

sudo apt-get install gnupg

После успешной установки можно переходить непосредственно к генерации gpg ключа ( пары ключей ). Внимание! Для генерации gpg ключей необходимо обеспечить энтропию не менее чем 800. Проверить entropy можно следующей командой:

cat /proc/sys/kernel/random/entropy_avail

Шаг 2. Открываем еще одно окно терминала. Создать достаточное количество случайных чисел для генератора gpg ключа можно следующим образом: создать файл с рандомными символами размером 2-3 Гб. и запустить бесконечное побайтовое копирование в устройство /dev/null.

Чтобы создать файл размеров 2-3 Гб. Запускаем команду на две-три минуты:

cat /dev/urandom > /tmp/randomfile

После, в этом же терминале запускаем побайтовое копирование:

dd if=/tmp/randomfile of=/dev/null iflag=direct

Шаг 3. Переходим в первый терминал (или любой другой) и запускаем генератор gpg ключа:

su username
gpg --gen-key

Далее отвечаем на вопросы gnupg.

gpg (GnuPG) 1.4.16; Copyright (C) 2013 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 и RSA (по умолчанию)
   (2) DSA и Elgamal
   (3) DSA (только для подписи)
   (4) RSA (только для подписи)
Ваш выбор (?-подробнее)? 

Выбираем нужный. Например ставим 2 и жмем enter.

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

2048 - надежная длина ключа, поэтому просто жмем enter.

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

Нужно указать период действия ключа. Для примера я оставляю 0 ( без ограничения ).

Ключ не имеет ограничения срока действительности
Все верно? (y/N) y

Для идентификации Вашего ключа необходим User ID
Программа создаст его из Вашего имени, комментария и адреса e-mail в виде:
    "Baba Yaga (pensioner) <yaga@deepforest.ru>"

Ваше настоящее имя: Vasya Batareikin
Email-адрес: vasya@batareikin.ru
Комментарий: vasya gpg-key
Вы выбрали следующий User ID:
    "Vasya (vasya gpg-key) <vasya@batareikin.ru>"

Сменить (N)Имя, (C)Комментарий, (E)email-адрес или (O)Принять/(Q)Выход? 

Вводим O и жмем enter если все ок и ждем. Генератор выдаст что-то типа:

Для защиты секретного ключа необходим пароль.

Необходимо сгенерировать много случайных чисел. Желательно, что бы Вы
выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.
gpg: WARNING: some OpenPGP programs can't handle a DSA key with this digest size
..++++++++++++++++++++.+++++++++++++++.+++++.+++++.+++++..+++++..++++++++++++++++++++.++++++++++.....+++++.+++++..+++++..++++++++++++++++++++++++++++++++++++++++..+++++>.+++++..+++++>+++++>.+++++...>.+++++....................................................................................................>+++++..<+++++...+++++^^^

В случае успешного завершения генератор выдаст следующее:

gpg: /home/username/.gnupg/trustdb.gpg: создана таблица доверий
gpg: ключ F98BA69A помечен как абсолютно доверяемый.
открытый и закрытый ключи созданы и подписаны.

gpg: проверка таблицы доверий
gpg: 3 ограниченных необходимо, 1 выполненных необходимо, PGP модель доверия
gpg: глубина: 0  корректных:   1  подписанных:   0  доверия: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048D/F98BA69A 2016-01-15
      Отпечаток ключа = 4B9E 9A14 3A01 3468 E368  20A5 4620 B777 F98B A69A
uid                  Vasya (vasya gpg-key) <vasya@batareikin.ru>
sub   2048g/0DB901A1 2016-01-15

Если не выполнить шаг 2, то значение entropy будет слишком малым и генератор выдаст такую ошибку:

Недостаточно случайных чисел.  Выполняйте какие-либо действия для того,
чтобы ОС могла получить больше случайных данных! (Необходимо ещё 126 байт)

В случае успеха, в домашнем каталоге пользователя username будет создан каталог с ключами – .gnupg. Чтобы проверить список ключей выполните команду от имени пользователя username ( su username ):

gpg --list-keys

Ответ будет похожим на такой вывод:

/home/username/.gnupg/pubring.gpg
-------------------------------
pub   2048D/F98BA69A 2016-01-15
uid                   Vasya (vasya gpg-key) <vasya@batareikin.ru>
sub   2048g/0DB901A1 2016-01-15

Шаг 4. Чтобы другие пользователи могли использовать ваш ключ его необходимо передать или опубликовать на сервере ключей. Второй способ более часто используется в разработке для подписи deb-пакетов.

Импорт gpg ключа на сервер ключей:

gpg --keyserver keyserver.ubuntu.com --send-keys {PUBLIC KEY ID}

Для пользователя username, ID публичного ключа – F98BA69A. Пример:

gpg --keyserver keyserver.ubuntu.com --send-keys F98BA69A

Чтобы другой пользователь, на этой или другой машине смог проверять подписи или использовать ваш ключ в других целях, ему необходимо получить ваш ключ следующей командой:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com  {KEY}

Для ключа который создал и опубликовал username, команда будет такой:

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

Так же, пользователь username может экспортировать свой ключ в файл и передать его другим способом. Команда для экспорта ключа в файл:

gpg --export -a {KEY} > filename.asc
gpg --export -a F98BA69A > /tmp/username_public_gpgkey.asc