## Что такое PGP и GPG
**PGP (Pretty Good Privacy)** — криптографическая программа, разработанная Филиппом Циммерманом в 1991 году для защиты электронной почты и файлов. Предоставляет функции:
– Шифрование данных (конфиденциальность).
– Цифровая подпись (аутентификация и целостность).
– Сжатие данных перед шифрованием.
**GPG (GnuPG, GNU Privacy Guard)** — свободная реализация стандарта **OpenPGP** (RFC 4880), совместимая с PGP. Является частью проекта GNU и широко используется в операционных системах Linux, включая Astra Linux.
> [!summary] Простыми словами
> PGP/GPG позволяет “запечатать” письмо так, что прочитать его сможет только адресат (шифрование), или поставить “печать”, которую никто не сможет подделать (цифровая подпись).
## Архитектура ключей в PGP
Каждый пользователь в системе PGP имеет **пару ключей**:
| Тип ключа | Назначение | Хранение |
| —————————– | —————————————————- | ————————————————————— |
| **Закрытый (приватный) ключ** | Подпись документов, расшифрование сообщений | Хранится в секрете на устройстве пользователя, защищён паролем |
| **Открытый (публичный) ключ** | Проверка подписи, шифрование сообщений для владельца | Распространяется свободно: через ключевые серверы, почту, сайты |
### Структура ключа PGP
“`mermaid
graph TD
A[Ключевая пара PGP] –> B[Открытый ключ]
A –> C[Закрытый ключ]
B –> D[Идентификатор ключа Key ID]
B –> E[Байты открытого ключа]
B –> F[Подписи ключа другими пользователями]
C –> G[Байты закрытого ключа]
C –> H[Парольная защита]
“`
> [!note] Примечание В отличие от иерархической модели ИОК с центром сертификации, в PGP используется децентрализованная модель доверия — **Web of Trust**, где пользователи сами решают, каким ключам доверять.
## Сеть доверия (Web of Trust)
**Web of Trust** — модель доверия, в которой пользователи самостоятельно подписывают открытые ключи других пользователей, подтверждая их подлинность.
### Уровни доверия в GPG
| Уровень | Описание |
| ————————- | ———————————————————————– |
| **Неизвестно** | Ключ не подписан вами и нет информации о подписях от доверенных лиц |
| **Частичное доверие** | Ключ подписан несколькими пользователями, которым вы **частично доверяете**. По отдельности каждая такая подпись не гарантирует подлинность |
| **Полное доверие** | Ключ подписан **вами лично**, или пользователем с **полным доверием**, или **достаточным числом пользователей с частичным доверием** (обычно 3) |
| **Окончательное доверие** | Ключ принадлежит вам (ваш собственный ключ) |
> [!note] Примечание Порог числа подписей от частично доверенных пользователей (часто 3) можно настраивать. Это позволяет получить полное доверие к сертификату без прямого подписания его вами или кем-то с полным доверием — только за счёт совокупности подписей от нескольких частично доверенных участников.
> [!summary] Простыми словами В Web of Trust доверие распространяется “по цепочке”: если вы доверяете Алисе, а Алиса подписала ключ Боба, то вы можете доверять ключу Боба (в зависимости от настроек).
## Алгоритмы шифрования и подписи в GPG
### Поддерживаемые алгоритмы
|Тип|Алгоритмы|Рекомендуемые параметры|
|—|—|—|
|**Асимметричное шифрование**|RSA, ElGamal, ECC (Curve25519)|RSA 3072+ бит, ECC P-256/P-384|
|**Симметричное шифрование**|AES, CAST5, Twofish|AES-256|
|**Хеш-функции**|SHA-256, SHA-384, SHA-512|SHA-256 и выше|
|**Сжатие**|ZIP, ZLIB, BZIP2|ZLIB|
### Формат ключей и сертификатов
– **Ключи** хранятся в формате **OpenPGP** в файлах `.asc` (ASCII-armored) или `.gpg` (binary).
– **Сертификаты отзыва** позволяют отозвать ключ при компрометации.
– **Подписи ключей** содержат информацию о том, кто и когда подтвердил подлинность ключа.
> [!attention] Важно Закрытый ключ никогда не должен покидать защищённое хранилище пользователя. При компрометации закрытого ключа необходимо немедленно отозвать соответствующий открытый ключ и выпустить новую пару.
## Управление ключами в Astra Linux: утилита kgpg
**kgpg** — графический фронтенд для GnuPG в среде KDE, предоставляющий удобный интерфейс для:
– Создания и управления ключевыми парами.
– Подписи и проверки ключей.
– Шифрования и расшифрования файлов.
– Экспорта/импорта ключей.
### Основные операции в kgpg
| Операция | Описание |
| ———————– | ————————————————————————————- |
| Создать пару ключей | Генерация нового открытого и закрытого ключа с указанием имени, email, срока действия |
| Подписать ключ | Подтверждение подлинности чужого открытого ключа своей подписью |
| Экспорт открытого ключа | Сохранение публичной части ключа в контейнер для передачи другим пользователям |
| Импорт ключа | Добавление чужого открытого ключа в ваше хранилище |
| Отозвать ключ | Создание сертификата отзыва для аннулирования скомпрометированного ключа |
| Зашифровать файл | Шифрование файла открытым ключом получателя или симметричным ключом на основе пароля |
| Расшифровать файл | Расшифрование файла с использованием закрытого ключа или пароля |