| README.md | ||
GNU_privacy_guard
Установка:
Ubuntu/Debian:
sudo apt update && sudo apt install gnupg
Создание пары ключей:
gpg --full-generate-key
Параметры генерации:
Please select what kind of key:
(1) RSA and RSA (recommended)
(9) ECC (modern)
RSA keys may be between 1024 and 4096 bits.
What keysize do you want? (3072) 4096
Key is valid for? (0) 2y
Real name: Иван Петров
Email address: ivan@example.com
Comment: work key
Парольная фраза:
┌─────────────────────────────────────────────────────────┐
│ Please enter the passphrase to protect your new key │
│ │
│ Passphrase: ************************************ │
│ Repeat: ************************************ │
└─────────────────────────────────────────────────────────┘
Парольная фраза защищает приватный ключ. Её потеря - потеря ключа.
Просмотр ключей:
Список публичных ключей:
gpg --list-keys
Список приватных ключей:
gpg --list-secret-keys
Подробная информация с отпечатком:
gpg --fingerprint ivan@example.com
Пример вывода:
pub rsa4096 2026-04-02 [SC] [expires: 2028-04-01]
1234 5678 9ABC DEF0 1234 5678 9ABC DEF0 1234 5678
uid [ultimate] Иван Петров <ivan@example.com>
sub rsa4096 2026-04-02 [E] [expires: 2028-04-01]
Экспорт публичного ключа
В текстовом формате (для отправки):
gpg --armor --export ivan@example.com > public_key.asc
Экспорт ключа по отпечатку:
gpg --armor --export 123456789ABCDEF0123456789ABCDEF01234567 > public_key.asc
Может пригодиться, если вы сгенерировали несколько ключей, у которых одинаковое имя владельца и адрес электронной почты
Содержимое файла public_key.asc:
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGYj8...
...
-----END PGP PUBLIC KEY BLOCK-----
между началом и концом PGP PUBLIC KEY BLOCK'а находится ваш публичный ключ.
Импорт публичного ключа
Импорт ключа коллеги:
gpg --import colleague_public_key.asc
Проверка, что ключ был импортирован:
gpg --list-keys colleague@example.com
Шифрование файла
Ассиметричное шифрование для конкретного получателя:
gpg --encrypt --recipient colleague@example.com secret.txt
Результат: зашифрованный файл
secret.txt.gpg
Шифрование с указанием имени выходного файла:
gpg --encrypt --recipient colleague@example.com --output secret.gpg secret.txt
Шифрование для нескольких получателей:
gpg --encrypt --recipient user1@example.com --recipient user2@example.com secret.txt
Расшифровка файла
С выводом на экран:
gpg --decrypt secret.gpg
С сохранением в файл:
gpg --decrypt secret.gpg > secret.txt
Расшифровка без вывода:
gpg --quiet --decrypt secret.txt.gpg > secret.txt
При расшифровке GPG запросит парольную фразу:
┌─────────────────────────────────────────────────────────┐
│ Please enter the passphrase to unlock the secret key │
│ │
│ "Иван Петров <ivan@example.com>" │
│ 4096-bit RSA key, ID 1234567890ABCDEF │
│ │
│ Passphrase: ************************************ │
└─────────────────────────────────────────────────────────┘
Подпись файла:
Удаление ключей:
Удаление публичного ключа:
gpg --delete-keys ivan@example.com
Удаление публичного ключа по отпечатку:
gpg --delete-keys DDA6896DA36A444DB86CC73FE387B6192071F089
Удаление приватного ключа:
gpg --delete-secret-keys ivan@example.com
Удаление обоих ключей:
gpg --delete-secret-and-public-keys ivan@example.com
При наличии нескольких ключей с одним e-mail GPG спросит, какой именно удалить.
Изменение парольной фразы:
gpg --passwd ivan@example.com
Будет вызван диалог для ввода старой и новой парольной фразы.
Структура файлов GPG:
~/.gnupg/
├── pubring.kbx # связка публичных ключей
├── private-keys-v1.d/ # приватные ключи (зашифрованные)
│ └── ABC123.key
├── trustdb.gpg # база доверия
└── gpg.conf # конфигурация
Резервное копирование ключей:
Экспорт приватного ключа:
gpg --armor --export-secret-keys ivan@example.com > private_key.asc
Экспорт публичного ключа:
gpg --armor --export ivan@example.com > public_key.asc
Проверка содержимого экспортированного ключа:
gpg --list-packets public_key.asc | grep "keyid"
Памятка: что точно нельзя делать:
- Никогда не передавайте приватный ключ другим людям;
- Не храните парольную фразу рядом с приватным ключом;
- Не используйте пустую парольную фразу для ключей, работающих с важными данными;
- Не удаляйте старый ключ, пока не убедитесь, что все данные с ним расшифрованы.
Восстановление после потери парольной фразы:
Если парольная фраза утеряна:
- Смириться с потерей - ключ восстановить невозможно
- Сгенерировать новую пару ключей
gpg --full-generate-key
- Сообщить новый публичный ключ всем, кто отправлял вам зашифрованные данные
- Удалить старый ключ
gpg --delete-secret-and-public-keys old@example.com
Файлы, зашифрованные старым ключом, расшифровать больше не получится.