174 lines
5.8 KiB
Markdown
174 lines
5.8 KiB
Markdown
|
---
|
|||
|
aliases:
|
|||
|
tags:
|
|||
|
- зрелость/🌱
|
|||
|
date:
|
|||
|
- - 2024-01-09
|
|||
|
zero-link:
|
|||
|
- "[[00 Криптография]]"
|
|||
|
parents:
|
|||
|
linked:
|
|||
|
---
|
|||
|
## Полезные команды
|
|||
|
Посмотреть все ключи:
|
|||
|
```shell
|
|||
|
gpg --list-keys --keyid-format=long
|
|||
|
```
|
|||
|
|
|||
|
Посмотреть все доступные **приватные** ключи:
|
|||
|
```shell
|
|||
|
gpg --list-secret-keys --keyid-format=long
|
|||
|
```
|
|||
|
|
|||
|
Позволяет проверить Yubikey
|
|||
|
```shell
|
|||
|
gpg --card-status
|
|||
|
```
|
|||
|
|
|||
|
Экспорт публичного ключа
|
|||
|
```shell
|
|||
|
gpg --armor --export <KEY_ID>
|
|||
|
```
|
|||
|
|
|||
|
Экспорт **приватного** ключа
|
|||
|
```shell
|
|||
|
gpg --armor --export-secret-key <KEY_ID>
|
|||
|
```
|
|||
|
|
|||
|
Удалить ключ
|
|||
|
```shell
|
|||
|
gpg --delete-key [uid]
|
|||
|
```
|
|||
|
|
|||
|
Удалить **секретный** ключ
|
|||
|
```shell
|
|||
|
gpg --delete-secret-key [uid]
|
|||
|
```
|
|||
|
## Генерация нового ключа
|
|||
|
Генерация нового ключа
|
|||
|
```shell
|
|||
|
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 что и мастер ключ, но имеет свой срок жизни. К сожалению, нельзя добавить подпись к дополнительному ключу.
|
|||
|
|
|||
|
```bash
|
|||
|
gpg --expert --edit-key <KEY_ID>
|
|||
|
```
|
|||
|
|
|||
|
Далее вы увидите консоль `gpg>`. Вводим туда команду `addkey` и выбираем тип ключа. Нам нужен ключ для подписи (10).
|
|||
|
|
|||
|
```bash
|
|||
|
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
|
|||
|
```
|
|||
|
|
|||
|
Далее снова выбор элиптической кривой. Оставляем значение по умолчанию:
|
|||
|
|
|||
|
```bash
|
|||
|
Выберите эллиптическую кривую:
|
|||
|
(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, чтобы сохранить новый ключ.
|
|||
|
|
|||
|
```bash
|
|||
|
gpg> save
|
|||
|
$
|
|||
|
```
|
|||
|
|
|||
|
### Публикация публичного ключа
|
|||
|
```shell
|
|||
|
gpg --send-keys <KEY_ID>
|
|||
|
```
|
|||
|
|
|||
|
> [!WARNING]
|
|||
|
> Однако, эта команда по какой-то причине работает не всегда. Тогда можно загрузить ключ вручную на один из сайтов, например на [http://keyserver.ubuntu.com](http://keyserver.ubuntu.com/).
|
|||
|
>
|
|||
|
> Предварительно экспортировав публичный ключ командой
|
|||
|
>
|
|||
|
> ```
|
|||
|
> gpg --armor --export
|
|||
|
> ```
|
|||
|
>
|
|||
|
|
|||
|
|
|||
|
## Полезные материалы
|
|||
|
- [How to Configure Yubikey with GPG – Generate and Import Keys - ICT Fella](https://ictfella.com/how-to-configure-yubikey-with-gpg-generate-and-import-keys/)
|
|||
|
- [SSH, PGP, TOTP в Yubikey 5 / Хабр](https://habr.com/ru/articles/574760/)
|
|||
|
- [The OpenNET Project: Использование USB-брелоков Yubikey для ключей GPG и SSH](https://www.opennet.ru/tips/3048_yubikey_crypt_ssh_gpg_auth.shtml)
|