135 lines
8.9 KiB
Markdown
135 lines
8.9 KiB
Markdown
---
|
||
title: "🔐 GnuPG"
|
||
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
|
||
```
|
||
|
||
Этот сертификат используется, чтобы выполнить отзыв ключа в случае,
|
||
если он оказался потерян или скомпрометирован.
|
||
Резервная копия будет полезна, если у вас больше нет доступа к закрытому ключу,
|
||
из-за чего вы не можете сгенерировать
|
||
новый сертификат отзыва с помощью приведённой выше команды.
|
||
Он достаточно короткий, чтобы его можно было распечатать и набрать от руки при необходимости.
|
||
|
||
⚠️ **Важно:** Любой человек, имеющий доступ к сертификату отзыва,
|
||
может публично отозвать ключ, и это действие нельзя отменить.
|
||
Защищайте свой сертификат отзыва так же, как вы защищаете свой закрытый ключ.
|