🏴‍☠️
Сашка ☕
Blog  Tags 
💀 🔵 🔴

🔐 GnuPG

Опубликовано: 5 апреля 2023 г.

GnuPG

GnuPG — полная и свободная реализация OpenPGP стандарта, определенного в 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. Только владелец каталога имеет разрешение на просмотр содержимого, радактирование и доступ к файлам. В целях безопасности, эти разрешения не должны быть изменены. В случае, если этот каталог или любые файлы внутри не следуют данной мере безопасности, вы получите предупреждение о наличии небезопасных файлов и разрешений домашнего каталога.

Создание пары ключей

Чтобы создать пару ключей, необходимо ввести команду:

gpg --full-gen-key

ℹ️ Используйте опцию --expert, чтобы выбрать другие шифры, такие как ECC.

ℹ️ Более простая опция --gen-key использует параметры по умолчанию для шифра, размера и срока действия ключа и запрашивает только имя и адрес электронной почты.

Экспорт открытого ключа

Основное назначение GnuPG — обеспечение конфиденциальности обмена сообщениями с помощью криптографии с открытым ключом. С его помощью каждый пользователь распространяет открытый ключ своей связки ключей, который может быть использован другими пользователями для шифрования сообщений пользователю. Закрытый ключ всегда должен оставаться в тайне, иначе конфиденциальность будет нарушена.

Таким образом, чтобы другие могли отправлять вам зашифрованные сообщения, им нужен ваш открытый ключ.

Чтобы сгенерировать ASCII-версию открытого ключа пользователя в файл public.key (например, для отправки по электронной почте):

gpg --export --armor --output public.key user-id

Импорт открытого ключа

Чтобы зашифровать сообщения другим людям, а также проверить их подписи, вам нужен их открытый ключ. Чтобы импортировать открытый ключ из файла public.key в свой список открытых ключей, выполните команду:

gpg --import public.key

Резервное копирование закрытого ключа

Чтобы создать резервную копию вашего закрытого ключа, выполните:

gpg --export-secret-keys --armor --output privkey.asc user-id

Обратите внимание, что вышеуказанная команда требует ввода пароля от ключа. В противном случае любой, кто получит доступ к экспортированному файлу, сможет шифровать и подписывать документы, как если бы он был вами, без необходимости знать пароль.

⚠️ Важно: Пароль — обычно самое слабое звено в защите закрытого ключа. Поместите закрытый ключ в безопасное место на другой системе или на другом устройстве, например, в заблокированный контейнер или на зашифрованный диск. Это единственное средство защиты, которое поможет вам восстановить контроль над списком ваших ключей в случае, например, поломки диска, кражи или ещё чего-нибудь похуже. Этот способ резервного копирования ключей имеет некоторые ограничения по безопасности. Более безопасный способ резервного копирования и импорта ключей с помощью gpg описан здесь.

Импорт закрытого ключа из резервной копии:

gpg --import privkey.asc

ℹ️ Совет: Paperkey позволяет экспортировать ключ в виде простого текста или машиночитаемого штрих-кода, которые можно отпечатать на бумаге.

Резервное копирование сертификата отзыва

Сертификаты отзыва автоматически генерируются для вновь создаваемых ключей. По умолчанию они находятся в ~/.gnupg/openpgp-revocs.d/. Имя файла сертификата — это отпечаток ключа, который он отзывает. Сертификаты отзыва также можно сгенерированы вручную с помощью следующей команды:

gpg --gen-revoke --armor --output revcert.asc user-id

Этот сертификат используется, чтобы выполнить отзыв ключа в случае, если он оказался потерян или скомпрометирован. Резервная копия будет полезна, если у вас больше нет доступа к закрытому ключу, из-за чего вы не можете сгенерировать новый сертификат отзыва с помощью приведённой выше команды. Он достаточно короткий, чтобы его можно было распечатать и набрать от руки при необходимости.

⚠️ Важно: Любой человек, имеющий доступ к сертификату отзыва, может публично отозвать ключ, и это действие нельзя отменить. Защищайте свой сертификат отзыва так же, как вы защищаете свой закрытый ключ.