2023-06-25 21:13:11 +03:00
|
|
|
|
---
|
2023-06-25 21:13:48 +03:00
|
|
|
|
title: "🔐 GnuPG"
|
2023-06-25 21:13:11 +03:00
|
|
|
|
date: 2023-04-05T12:05:35+03:00
|
|
|
|
|
draft: false
|
|
|
|
|
tags: [gpg, privacy, tips]
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## GnuPG
|
|
|
|
|
|
|
|
|
|
GnuPG — полная и свободная реализация [OpenPGP](https://openpgp.org/about/) стандарта,
|
|
|
|
|
определенного в [RFC4880](https://tools.ietf.org/html/rfc4880) (также известного, как PGP).
|
|
|
|
|
GnuPG позволяет вам шифровать и подписывать данные и сообщения.
|
|
|
|
|
Он оснащен универсальной системой управления ключами,
|
|
|
|
|
а также модулями доступа для всех типов открытых ключей.
|
|
|
|
|
GnuPG, также известный как GPG,
|
|
|
|
|
это инструмент командной строки с возможностью легкой интеграции с другими приложениями.
|
|
|
|
|
Доступен богатый выбор пользовательских приложений и библиотек.
|
|
|
|
|
Также 2 версия GnuPG поддерживает S/MIME и Secure Shell (ssh).
|
|
|
|
|
|
|
|
|
|
## Расположение каталогов
|
|
|
|
|
|
|
|
|
|
`$GNUPGHOME` используется GnuPG для определения каталога,
|
|
|
|
|
в котором хранятся конфигурационные файлы.
|
|
|
|
|
По умолчанию `$GNUPGHOME` не назначена и вместо этого используется `$HOME`;
|
|
|
|
|
таким образом, вы найдете каталог `~/.gnupg` сразу после установки.
|
|
|
|
|
|
|
|
|
|
Чтобы изменить стандартное расположение, выполните `gpg --homedir путь/к/файлу`
|
|
|
|
|
или установите переменную окружения `GNUPGHOME`.
|
|
|
|
|
|
|
|
|
|
## Файлы конфигурации
|
|
|
|
|
|
|
|
|
|
Файлы конфигурации по умолчанию `~/.gnupg/gpg.conf`.
|
|
|
|
|
По умолчанию разрешения доступа каталога gnupg установлены в `700`,
|
|
|
|
|
а файлов, которые он содержит - `600`.
|
|
|
|
|
Только владелец каталога имеет разрешение на просмотр содержимого,
|
|
|
|
|
радактирование и доступ к файлам. В целях безопасности,
|
|
|
|
|
эти разрешения не должны быть изменены.
|
|
|
|
|
В случае, если этот каталог или любые файлы внутри не следуют данной мере безопасности,
|
|
|
|
|
вы получите предупреждение о наличии небезопасных файлов и разрешений домашнего каталога.
|
|
|
|
|
|
|
|
|
|
## Создание пары ключей
|
|
|
|
|
|
|
|
|
|
Чтобы создать пару ключей, необходимо ввести команду:
|
|
|
|
|
```sh
|
|
|
|
|
gpg --full-gen-key
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
ℹ️ Используйте опцию `--expert`, чтобы выбрать другие шифры,
|
|
|
|
|
такие как [ECC](https://en.wikipedia.org/wiki/Elliptic_curve_cryptography).
|
|
|
|
|
|
|
|
|
|
ℹ️ Более простая опция `--gen-key` использует параметры по умолчанию для шифра,
|
|
|
|
|
размера и срока действия ключа и запрашивает только имя и адрес электронной почты.
|
|
|
|
|
|
|
|
|
|
## Экспорт открытого ключа
|
|
|
|
|
|
|
|
|
|
Основное назначение GnuPG — обеспечение конфиденциальности обмена сообщениями
|
|
|
|
|
с помощью криптографии с открытым ключом.
|
|
|
|
|
С его помощью каждый пользователь распространяет открытый ключ своей связки ключей,
|
|
|
|
|
который может быть использован другими пользователями для шифрования сообщений пользователю.
|
|
|
|
|
Закрытый ключ всегда должен оставаться в тайне, иначе конфиденциальность будет нарушена.
|
|
|
|
|
|
|
|
|
|
Таким образом, чтобы другие могли отправлять вам зашифрованные сообщения,
|
|
|
|
|
им нужен ваш открытый ключ.
|
|
|
|
|
|
|
|
|
|
Чтобы сгенерировать ASCII-версию открытого ключа пользователя в файл `public.key`
|
|
|
|
|
(например, для отправки по электронной почте):
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
gpg --export --armor --output public.key user-id
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Импорт открытого ключа
|
|
|
|
|
|
|
|
|
|
Чтобы зашифровать сообщения другим людям, а также проверить их подписи,
|
|
|
|
|
вам нужен их открытый ключ. Чтобы импортировать открытый ключ из файла public.key в свой список открытых ключей, выполните команду:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
gpg --import public.key
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Резервное копирование закрытого ключа
|
|
|
|
|
|
|
|
|
|
Чтобы создать резервную копию вашего закрытого ключа, выполните:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
gpg --export-secret-keys --armor --output privkey.asc user-id
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Обратите внимание, что вышеуказанная команда требует ввода пароля от ключа.
|
|
|
|
|
В противном случае любой, кто получит доступ к экспортированному файлу,
|
|
|
|
|
сможет шифровать и подписывать документы, как если бы он был вами,
|
|
|
|
|
без необходимости знать пароль.
|
|
|
|
|
|
|
|
|
|
⚠️ **Важно:**
|
|
|
|
|
Пароль — обычно самое слабое звено в защите закрытого ключа.
|
|
|
|
|
Поместите закрытый ключ в безопасное место на другой системе или на другом устройстве,
|
|
|
|
|
например, в заблокированный контейнер или на зашифрованный диск.
|
|
|
|
|
Это единственное средство защиты, которое поможет
|
|
|
|
|
вам восстановить контроль над списком ваших ключей в случае,
|
|
|
|
|
например, поломки диска, кражи или ещё чего-нибудь похуже.
|
|
|
|
|
Этот способ резервного копирования ключей имеет некоторые ограничения по безопасности.
|
|
|
|
|
Более безопасный способ резервного копирования и импорта ключей с помощью gpg описан
|
|
|
|
|
[здесь](https://web.archive.org/web/20210803213236/https://habd.as/post/moving-gpg-keys-privately/).
|
|
|
|
|
|
|
|
|
|
## Импорт закрытого ключа из резервной копии:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
gpg --import privkey.asc
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
ℹ️ Совет: [Paperkey](https://www.jabberwocky.com/software/paperkey/) позволяет экспортировать ключ в виде простого текста
|
|
|
|
|
или машиночитаемого штрих-кода, которые можно отпечатать на бумаге.
|
|
|
|
|
|
|
|
|
|
## Резервное копирование сертификата отзыва
|
|
|
|
|
|
|
|
|
|
Сертификаты отзыва автоматически генерируются для вновь создаваемых ключей.
|
|
|
|
|
По умолчанию они находятся в `~/.gnupg/openpgp-revocs.d/`.
|
|
|
|
|
Имя файла сертификата — это отпечаток ключа, который он отзывает.
|
|
|
|
|
Сертификаты отзыва также можно сгенерированы вручную с помощью следующей команды:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
gpg --gen-revoke --armor --output revcert.asc user-id
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Этот сертификат используется, чтобы выполнить отзыв ключа в случае,
|
|
|
|
|
если он оказался потерян или скомпрометирован.
|
|
|
|
|
Резервная копия будет полезна, если у вас больше нет доступа к закрытому ключу,
|
|
|
|
|
из-за чего вы не можете сгенерировать
|
|
|
|
|
новый сертификат отзыва с помощью приведённой выше команды.
|
|
|
|
|
Он достаточно короткий, чтобы его можно было распечатать и набрать от руки при необходимости.
|
|
|
|
|
|
|
|
|
|
⚠️ **Важно:** Любой человек, имеющий доступ к сертификату отзыва,
|
|
|
|
|
может публично отозвать ключ, и это действие нельзя отменить.
|
|
|
|
|
Защищайте свой сертификат отзыва так же, как вы защищаете свой закрытый ключ.
|