Blog/content/posts/2023/privacy/gpg.md
2023-06-25 21:13:48 +03:00

135 lines
8.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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