digital-garden/knowledge/dev/cryptography/GPG.md
2024-06-13 21:01:37 +03:00

5.8 KiB
Raw Blame History

aliases tags date zero-link parents linked
зрелость/🌱
2024-01-09
00 Криптография

Полезные команды

Посмотреть все ключи:

gpg --list-keys --keyid-format=long

Посмотреть все доступные приватные ключи:

gpg --list-secret-keys --keyid-format=long

Позволяет проверить Yubikey

gpg --card-status

Экспорт публичного ключа

gpg --armor --export <KEY_ID>

Экспорт приватного ключа

gpg --armor --export-secret-key <KEY_ID>

Удалить ключ

gpg --delete-key [uid]

Удалить секретный ключ

gpg --delete-secret-key [uid]

Генерация нового ключа

Генерация нового ключа

gpg --full-generate-key

Нам предложат выбрать тип создаваемого ключа

Выберите тип ключа:
   (1) RSA and RSA
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
   (9) ECC (sign and encrypt) *default*
  (10) ECC (только для подписи)
  (14) Existing key from card

Самый современный способ установлен по умолчанию (9). Также можно выбрать вариант (10). В нашем случае между ними не будет разницы.

Далее выбираем элептическую кривую. Также оставляем по умолчанию (1):

Выберите эллиптическую кривую:
   (1) Curve 25519 *default*
   (4) NIST P-384
   (6) Brainpool P-256

Теперь устанавливаем срок действия ключа.

Выберите срок действия ключа.
         0 = не ограничен
      <n>  = срок действия ключа - n дней
      <n>w = срок действия ключа - n недель
      <n>m = срок действия ключа - n месяцев
      <n>y = срок действия ключа - n лет
Срок действия ключа? (0) 1y

После чего надо указать информацию о себе: ФИО, почту. В примечании можно указать зачем создается этот GPG ключ, чтобы потом не путаться.

Ваше полное имя: Struchkov Mark
Адрес электронной почты: mark@struchkov.dev
Примечание: Key for git commit
Вы выбрали следующий идентификатор пользователя:
    "Struchkov Mark (Key for git commit) <mark@struchkov.dev>"

Сменить (N)Имя, (C)Примечание, (E)Адрес; (O)Принять/(Q)Выход? O

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

Создание дополнительного ключа

Дополнительный ключ позволяет увеличить безопасность использования мастер ключа. Дополнительный ключ привязывается к тому же email что и мастер ключ, но имеет свой срок жизни. К сожалению, нельзя добавить подпись к дополнительному ключу.

gpg --expert --edit-key <KEY_ID>

Далее вы увидите консоль gpg>. Вводим туда команду addkey и выбираем тип ключа. Нам нужен ключ для подписи (10).

gpg> addkey

Выберите тип ключа:
   (3) DSA (sign only)
   (4) RSA (sign only)
   (5) Elgamal (encrypt only)
   (6) RSA (encrypt only)
   (7) DSA (set your own capabilities)
   (8) RSA (set your own capabilities)
  (10) ECC (только для подписи)
  (11) ECC (set your own capabilities)
  (12) ECC (encrypt only)
  (13) Existing key
  (14) Existing key from card
Ваш выбор? 10

Далее снова выбор элиптической кривой. Оставляем значение по умолчанию:

Выберите эллиптическую кривую:
   (1) Curve 25519 *default*
   (2) Curve 448
   (3) NIST P-256
   (4) NIST P-384
   (5) NIST P-521
   (6) Brainpool P-256
   (7) Brainpool P-384
   (8) Brainpool P-512
   (9) secp256k1
Ваш выбор? 

Указываем срок действия для дополнительного ключа и подтверждаем данные.

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

gpg> save
$

Публикация публичного ключа

gpg --send-keys <KEY_ID>

Warning

Однако, эта команда по какой-то причине работает не всегда. Тогда можно загрузить ключ вручную на один из сайтов, например на http://keyserver.ubuntu.com.

Предварительно экспортировав публичный ключ командой

gpg --armor --export

Полезные материалы