PGP - andyceo/documentation GitHub Wiki
-
Создадим мастер-ключ (ключ, который может только заверять другие ключи):
gpg2 --full-gen-key --expert
Нужно сгенерировать ключ, который будет только подписывать другие ключи (способность Заверить). Запустите эту команду дважды, чтобы сгенерировать RSA и ed25519 ключи. Будет спрошена passphrase. Обязательно нужно запомнить ее. Это единственное, что и будет являтся вашим паролем, хранящимся исключительно в вашей голове.
Для RSA:
- нажать (8) RSA (с требуемыми возможностями)
- убрать у ключа все возможности, кроме Заверить, нажимая для этого числа 1-2-3, чтобы получилось: Допустимы действия: Заверить
- размер ключа - 4096 бит
- затем нажимать и возить мышкой и клавиатурой для энтропии
Для ed25519:
- нажать (11) ECC (с требуемыми возможностями)
- аналогично RSA - убрать все кроме Заверить
- выбрать (1) Curve 25519
- подтвердить выбор и возить мышкой и клавиатурой для энтропии
В различных мануалах встречается команда
gpg2 --quick-gen-key 'Alice Engineer <[email protected]>' rsa4096 cert
почему-то она не работает совсем в Ubuntu 16.04.4.
После этого пункта команда
gpg2 --list-keys
должна выводить что-то вроде:/home/USER/.gnupg/pubring.kbx -------------------------------- pub rsa4096/11112222 2018-01-08 [C] [годен до: 2020-03-17] uid [ абсолютно ] Full Name <[email protected]> pub ed25519/33334444 2018-01-08 [C] [годен до: 2020-03-17] uid [ абсолютно ] Full Name <[email protected]>
-
Добавим нужные идентификаторы себя с помощью команды:
gpg2 --quick-adduid [fpr] 'Alice Engineer (alicee) <[email protected]>'
-
Генерируем подключи. Будем делать это из консоли
gpg2
. Для этого нужно изменить какой-либо уже существующий базовый ключ, в данном случае, будем изменять уже существующий RSA-ключ:gpg2 --edit-key 11112222
Затем в консоли, набрать:
addkey
и затем выбрать (4) RSA (только для подписи), а потом снова
addkey
и выбрать (6) RSA (только для шифрования), таким образом сгенерировав два отдельных ключа для подписи и другой для шифрования. Выбирайте для них другую парольную фразу, чем для мастер-ключей. Должно получиться что-то вроде этого:$ gpg2 --list-keys /home/USER/.gnupg/pubring.kbx -------------------------------- pub rsa4096/11112222 2018-01-08 [C] [годен до: 2020-03-17] uid [ абсолютно ] Full Name <[email protected]> uid [ неизвестно ] Full Name (alicee) <[email protected]> uid [ неизвестно ] Full Name (alicee) <[email protected]> sub rsa2048/55556666 2018-01-08 [S] [годен до: 2019-03-17] sub rsa2048/77778888 2018-01-08 [E] [годен до: 2019-03-17] pub ed25519/33334444 2018-01-18 [C] [годен до: 2020-03-17] uid [ абсолютно ] Full Name <[email protected]> uid [ неизвестно ] Full Name (alicee) <[email protected]> uid [ неизвестно ] Full Name (alicee) <[email protected]>
-
Отправим публичные ключи на сервер:
gpg2 --send-keys
и на Github:
gpg2 --export --armor 11112222
(следуйте их официальной инструкции Adding a new GPG key to your GitHub account)
-
Теперь нужно забекапить куда-нибудь в надежное оффлайн-место получившуюся папку
~/.gnupg
и удалить секретную часть ключей и сертификатов их отзыва. Для подробностей см. ссылки.
Ссылки:
- Protecting Code Integrity with PGP — Part 1: Basic Concepts and Tools
- Protecting Code Integrity with PGP — Part 2: Generating Your Master Key
- Protecting Code Integrity with PGP — Part 3: Generating PGP Subkeys
- Protecting Code Integrity with PGP — Part 4: Moving Your Master Key to Offline Storage
- GPG Offline Master Key
- Protecting Code Integrity with PGP — Part 5: Moving Subkeys to a Hardware Device
- Instructions for exporting/importing (backup/restore) GPG keys
- Paperkey - an OpenPGP key archiver
Возможно, чтобы работать с менеджером паролей pass
, нужно будет сделать полное доверие ключу: gpg --edit-key 11112222
, trust
, 5
, save