Это многостраничный печатный вид этого раздела. Нажмите что бы печатать.

Вернуться к обычному просмотру страницы.

Что такое PGP?

PGP (Pretty Good Privacy) — это криптографическая программа, обеспечивающая конфиденциальность и аутентификацию данных при передаче. По сути, это стандарт для шифрования сообщений электронной почты, файлов, каталогов и даже целых дисков.

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

Ключевые концепции: как это работает

  1. Асимметричное шифрование (Криптография с открытым ключом):
    • У каждого пользователя есть пара ключей:
      • Закрытый ключ (Private Key): Должен храниться в строжайшем секрете. Никогда и никому не передается. Используется для расшифровки данных, предназначенных вам, и для подписи ваших сообщений.
      • Открытый ключ (Public Key): Может свободно распространяться кому угодно (публиковаться на сайте, в ключевых серверах, отправляться по почте). Используется для шифрования данных, которые сможете расшифровать только вы, и для проверки вашей цифровой подписи.
    • Принцип: То, что зашифровано открытым ключом, может быть расшифровано только соответствующим закрытым ключом, и наоборот.
flowchart TD
    subgraph Sender [Отправитель]
        A[Исходное сообщение] --> B{Создать цифровую подпись}
        B --> C[Зашифровать своим<br>Закрытым ключом]
        C --> D[Цифровая подпись]

        A --> E[Исходное сообщение]
        D --> F{Объединить сообщение и подпись}
        E --> F
        F --> G[Подписанное сообщение]

        G --> H{Зашифровать сообщение}
        H --> I[Сгенерировать случайный<br>сеансовый ключ]
        I --> J[Зашифровать сообщение<br>сеансовым ключом симметрично]
        J --> K[Зашифрованное сообщение]

        I --> L[Зашифровать сеансовый ключ<br>Открытым ключом получателя]
        L --> M[Зашифрованный сеансовый ключ]

        K --> N{Объединить для отправки}
        M --> N
        N --> O[Итоговые данные для отправки]
    end

    O --> P[Передача по незащищенному каналу<br>e.g. Интернет, почтовый сервер]

    subgraph Receiver [Получатель]
        P --> Q[Итоговые данные для отправки]
        Q --> R{Разделить данные}
        R --> S[Зашифрованный сеансовый ключ]
        R --> T[Зашифрованное сообщение]

        S --> U[Расшифровать сеансовый ключ<br>своим Закрытым ключом]
        U --> V[Сеансовый ключ]
        
        T --> W[Расшифровать сообщение<br>сеансовым ключом]
        V --> W
        W --> X[Подписанное сообщение]

        X --> Y{Разделить сообщение и подпись}
        Y --> Z[Полученное сообщение]
        Y --> AA[Цифровая подпись]

        AA --> AB[Расшифровать подпись<br>Открытым ключом отправителя]
        AB --> AC[Оригинальный хэш отправителя]

        Z --> AD[Вычислить хэш от<br>полученного сообщения]
        AD --> AE[Хэш полученного сообщения]

        AC --> AF{Сравнить хэши}
        AE --> AF

        AF -- Совпали --> AG[✅ Подпись верна<br>Сообщение аутентично и не изменено]
        AF -- Не совпали --> AH[❌ Подпись неверна!<br>Сообщение отклонено]
    end
  1. Цифровая подпись:

    • Позволяет получателю убедиться в двух вещах:
      • Аутентичность: Сообщение действительно отправлено вами.
      • Целостность: Сообщение не было изменено во время передачи.
    • Как создается: Вы создаете хэш (отпечаток) вашего сообщения и шифруете этот хэш своим закрытым ключом. Получатель расшифровывает хэш вашим открытым ключом, вычисляет хэш полученного сообщения самостоятельно и сравнивает их. Если они совпали — подпись верна.
  2. Гибридная система:

    • Шифровать большие объемы данных (например, длинное письмо) асимметричным шифрованием computationally expensive (требует много вычислительных ресурсов).
    • Решение PGP:
      1. Программа создает случайный сеансовый ключ (симметричный, один и тот же для шифрования и расшифровки).
      2. Этим сеансовым ключом шифруется само сообщение (быстро и эффективно).
      3. Этот сеансовый ключ сам шифруется открытым ключом получателя.
      4. Зашифрованное сообщение и зашифрованный сеансовый ключ отправляются получателю.
    • Получатель:
      1. Своим закрытым ключом расшифровывает сеансовый ключ.
      2. Расшифрованным сеансовым ключом расшифровывает всё сообщение.
flowchart TD
    subgraph Sender [Отправитель]
        direction LR
        A[Исходные данные<br>Сообщение или файл] --> B[Сгенерировать случайный<br>сеансовый ключ]
        B --> C[Зашифровать данные<br>сеансовым ключом<br>Симметричное шифрование AES]
        B --> D[Зашифровать сеансовый ключ<br>Открытым ключом получателя<br>Асимметричное шифрование RSA]
        C --> E[Зашифрованные данные]
        D --> F[Зашифрованный сеансовый ключ]
        E --> G[Объединить и отправить]
        F --> G
    end

    G --> H[Передача]

    subgraph Receiver [Получатель]
        direction LR
        H --> I[Принять данные]
        I --> J[Извлечь зашифрованный<br>сеансовый ключ]
        I --> K[Извлечь зашифрованные данные]
        J --> L[Расшифровать сеансовый ключ<br>своим Закрытым ключом]
        L --> M[Сеансовый ключ]
        K --> N[Расшифровать данные<br>сеансовым ключом]
        M --> N
        N --> O[Исходные данные]
    end

Схема омена ключами

flowchart TD
    A[Алиса генерирует свою<br>пару ключей] --> B[Алиса публикует свой<br>Открытый ключ на сервере]
    A --> C[Алиса отправляет свой<br>Открытый ключ Бобу по email]

    subgraph Bob [Действия Боба]
        D[Боб генерирует свою<br>пару ключей] --> E[Боб получает ключ Алисы]
        B -.-> E
        C --> E
        E --> F{Верифицировать отпечаток ключа}
        F -- "Звонок Алисе,<br>сверка отпечатков" --> G[✅ Ключ доверен]
        F -- "Отпечаток не проверен" --> H[❌ Ключ не доверен]
        G --> I[Боб может отправлять<br>Алисе зашифрованные сообщения]
    end

    subgraph Alice [Действия Алисы]
        J[Алиса получает ключ Боба] --> K[Алиса верифицирует<br>отпечаток ключа Боба]
        K --> L[✅ Ключ доверен]
        L --> M[Алиса может отправлять<br>Бобу зашифрованные сообщения]
    end

Пошаговое руководство по применению PGP

Современное применение PGP чаще всего сводится к использованию его реализаций с графическим интерфейсом, которые упрощают процесс.

Шаг 1: Установка необходимого ПО

Вам не нужна оригинальная коммерческая программа PGP. Существует ее бесплатный и открытый аналог — GnuPG (GPG). Это движок командной строки. Для удобства ставьте программы с графическим интерфейсом:

  • Для электронной почты:
    • Thunderbird (почтовый клиент) + дополнение Enigmail. Это классическая и очень мощная связка.
    • Mailvelope — расширение для браузеров (Chrome, Firefox), которое позволяет работать с PGP прямо в веб-интерфейсах, таких как Gmail, Outlook.com и т.д.
  • Для шифрования файлов/текста:
    • Gpg4win (для Windows) — комплект, включающий GPG, Kleopatra (менеджер ключей), плагины для Outlook и др.
    • GPG Suite (для macOS) — аналогичный комплект для Mac.
    • Kleopatra — кроссплатформенный менеджер ключей и сертификатов.

Шаг 2: Генерация пары ключей

  1. Установите, например, Gpg4win или GPG Suite.
  2. Запустите менеджер ключей (Kleopatra или другой).
  3. Нажмите «Создать новую пару ключей» («New Key Pair»).
  4. Введите свои данные:
    • Имя и Email: Это идентифицирует ваш ключ. Указывайте реальный email, на который планируете получать зашифрованные письма.
    • Парольная фраза (Passphrase): Это ОЧЕНЬ ВАЖНО. Парольная фраза защищает ваш закрытый ключ на диске. Она должна быть длинной и сложной (например, 4-5 случайных слов). Без нее даже кража вашего закрытого ключа будет бесполезна.
  5. Дождитесь завершения генерации. Процесс может занять несколько минут, так как программа собирает энтропию (случайные данные) от ваших действий с мышкой и клавиатурой.

Шаг 3: Обмен открытыми ключами

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

  • Экспорт: В вашем менеджере ключей (Kleopatra) вы можете экспортировать открытый ключ в файл (обычно с расширением .asc или .pub). Этот файл представляет собой блок текста между строками -----BEGIN PGP PUBLIC KEY BLOCK----- и -----END PGP PUBLIC KEY BLOCK-----.
  • Способы распространения:
    • Отправить по email: Просто прикрепите файл .asc к письму.
    • Скопировать текст: Скопируйте текстовый блок и вставьте его в тело письма.
    • Ключевые серверы (Keyservers): Это специальные публичные базы данных открытых ключей. Вы можете «залить» (upload) свой ключ на сервер (например, keys.openpgp.org). Тогда любой человек, зная ваш email, сможет его найти. (Важно: удалить ключ с ключевого сервера обычно невозможно!)

Шаг 4: Импорт и проверка чужих открытых ключей

Чтобы отправить сообщение кому-то, вам нужен их открытый ключ.

  1. Импорт: Получите файл ключа или текстовый блок. В вашем менеджере ключей будет функция «Импорт» («Import»), где вы можете указать файл или вставить текст.
  2. Верификация (Крайне важный шаг!): Как убедиться, что импортированный ключ действительно принадлежит тому, кто вам его прислал, а не злоумышленнику (атака “man-in-the-middle”)?
    • Сравнение отпечатка (Fingerprint): У каждого ключа есть уникальный «отпечаток» — длинная строка из букв и цифр (например, AB12 CD34 EF56 7890 ...). Свяжитесь с человеком другим, доверенным каналом связи (телефонный звонок, мессенджер с E2EE типа Signal/Telegram, личная встреча) и сравните отпечатки. Если они совпали — ключ подлинный.
    • Подпись ключей (Web of Trust): Более продвинутый метод, когда ваши доверенные контакты digitally подписывают ваш ключ, подтверждая его подлинность для третьих лиц.

Шаг 5: Шифрование и подпись

  • В почтовом клиенте (Thunderbird + Enigmail): После настройки в интерфейсе письма появятся кнопки «Зашифровать» (иконка с ключом) и «Подписать» (иконка с ручкой). Просто отметьте нужные галочки перед отправкой. Плагин сам найдет открытый ключ получателя в вашей связке и всё сделает.
  • В веб-почте (Mailvelope): Расширение добавит свою кнопку в интерфейс Gmail/Yahoo и т.д. Нажав на нее, вы откроете окно, где можно ввести текст, выбрать получателя (чей открытый ключ использовать) и зашифровать. Результат вставится в тело письма.
  • Для файлов (Kleopatra): Через меню «Файл» -> «Зашифровать/Расшифровать» можно выбрать файлы и указать получателей.

Шаг 6: Расшифровка и проверка

  • Когда вы получаете зашифрованное письмо, ваш почтовый плагин (Enigmail/Mailvelope) автоматически распознает его.
  • Он проверит, есть ли у вас в связке закрытый ключ, соответствующий адресу получателя.
  • Если есть, он запросит у вас парольную фразу для доступа к этому закрытому ключу и автоматически расшифрует сообщение.
  • Если письмо было подписано, плагин также покажет результат проверки подписи (например, зеленую галочку и текст “Проверенная подпись от Имя Отправителя”).

Сценарии применения

  1. Конфиденциальная переписка: Самая частая цель. Защита содержимого писем от прочтения провайдерами, хакерами, правительственными агентствами.
  2. Защита целостности данных: Отправка важных документов (договоров, инструкций) с подписью, чтобы получатель мог быть уверен, что их не подменили.
  3. Шифрование файлов на диске: Можно зашифровать чувствительные файлы на своем компьютере или на флеш-накопителе, чтобы даже в случае утери устройства данные были защищены.
  4. Анонимность в darknet: PGP — обязательный стандарт для безопасного общения на теневых форумах и в рынках, где анонимность критически важна.

Сильные и слабые стороны

Сильные стороны:

  • Высокий уровень безопасности при правильном использовании.
  • Де-факто стандарт, поддерживается многими платформами.
  • Децентрализованность — не зависит от единого центра сертификации.

Слабые стороны:

  • Сложность для обычных пользователей: Основная причина, почему PGP не стал мейнстримом.
  • Проблема верификации ключей: Сложно надежно проверить, что ключ действительно принадлежит нужному человеку.
  • Уязвимости метаданных: PGP шифрует тело письма, но не скрывает метаданные (тему, отправителя, получателя, дату отправки). Эта информация остается открытой.
  • Управление ключами: Потеря закрытого ключа или парольной фразы означает безвозвратную потерю доступа к данным. Компрометация ключа требует его отзыва и генерации нового.

Вывод

PGP — это мощный, проверенный временем инструмент для защиты приватности, который остается золотым стандартом для шифрования email. Его применение требует определенных усилий для изучения и дисциплины для постоянного использования. Для большинства пользователей лучшей отправной точкой является установка Thunderbird с плагином Enigmail или браузерного расширения Mailvelope.

1 - Структура хранения ключей

Описание структуры хранения ключей при установке GnuPG

1. База данных и структура хранения GnuPG на компьютере

GnuPG не использует единую базу данных в традиционном понимании (как SQLite или MySQL). Вместо этого он использует набор файлов в специальном каталоге (обычно ~/.gnupg/ в Linux/macOS или %APPDATA%\gnupg в Windows). Это портативная и простая в резервном копировании структура.

Вот ключевые файлы и их назначение:

Файл / Каталог Назначение и описание
~/.gnupg/ Домашний каталог GnuPG. Основное место хранения всех данных. Его местоположение можно изменить через переменную окружения GNUPGHOME или опцию --homedir.
pubring.kbx Основной файл с открытыми ключами (публичными). Это ключевой файл в современном формате “keybox” (KBX), который используется по умолчанию в версиях GnuPG 2.1 и новее. Хранит импортированные открытые ключи.
trustdb.gpg База данных доверия (Trust DB). Это самая близкая к “базе данных” часть. Она не содержит самих ключей, а хранит информацию о уровне доверия, который вы назначили владельцам ключей (например, “полное”, “ограниченное”, “недоверенное”), и вычисленные на основе этой информации валидности ключей (ultimate, full, marginal, expired, revoked и т.д.).
private-keys-v1.d/ Каталог с секретными ключами. Это очень важный каталог. В современных версиях каждый секретный ключ (закрытый) хранится в отдельном файле с расширением .key. Файлы зашифрованы с использованием вашей парольной фразы. Это то, что нужно бэкопировать в первую очередь и максимально защищать!
openpgp-revocs.d/ Каталог с предварительно сгенерированными отзывными сертификатами. Когда вы создаете новый ключ, GnuPG автоматически генерирует сертификат для его отзыва (чтобы вы могли объявить ключ недействительным, если забыли пароль или потеряли доступ к нему). Имена файлов соответствуют отпечаткам ключей.
gpg.conf Главный файл конфигурации для команды gpg. Сюда можно прописать все часто используемые опции (например, используемый keyserver, алгоритмы по умолчанию и т.д.).
dirmngr.conf Файл конфигурации для dirmngr — демона, отвечающего за взаимодействие с keyserver-ами и проверку сертификатов OCSP.
gpg-agent.conf Файл конфигурации для gpg-agent — демона, который управляет секретными ключами, кэширует парольные фразы и обеспечивает безопасность их использования.

Устаревшие файлы (встречаются в старых системах или после обновления):

  • pubring.gpg, secring.gpg: Публичные и секретные ключи в старом формате. Современные версии GnuPG (>2.1) используют pubring.kbx и каталог private-keys-v1.d/ вместо secring.gpg.

Как это работает вместе?

  1. Когда вы выполняете gpg --list-keys, программа читает список открытых ключей из pubring.kbx.
  2. Когда вы проверяете подпись, gpg сверяется с trustdb.gpg, чтобы узнать, насколько ключ, которым подписан файл, валиден с точки зрения вашей сети доверия.
  3. Когда вы подписываете или расшифровываете что-либо, gpg обращается к gpg-agent.
  4. gpg-agent находит нужный секретный ключ в каталоге private-keys-v1.d/, запрашивает у вас пароль для его расшифровки (если он еще не закэширован) и выполняет криптографическую операцию.

2. Что устанавливается при установке GnuPG

При установке GnuPG (пакет gnupg, gnupg2 или установщик для Windows) устанавливается не одна программа, а целый набор взаимосвязанных компонентов:

Компонент Назначение
gpg / gpg2 Основная программа (бинарник). Это командная утилита, с которой взаимодействует пользователь. Именно она вызывает все остальные компоненты для выполнения задач. В версиях 2.x основной бинарник называется gpg2, но часто существует символьная ссылка gpg на него для совместимости.
gpg-agent Агент управления ключами. Это фоновый процесс (демон), который:
• Управляет секретными ключами.
• Кэширует введенные парольные фразы в течение заданного времени (чтобы не вводить пароль каждый раз).
• Перенаправляет запросы на ввод пароля на правильный PIN-entry.
Это ключевой компонент для безопасности и удобства.
gpg-connect-agent Утилита для отладки и отправки команд gpg-agentу напрямую.
gpgconf Утилита для управления конфигурацией runtime-процессов GnuPG (например, для перезагрузки агента или просмотра используемых опций).
dirmngr Менеджер каталогов. Еще один фоновый процесс, который отвечает за:
• Связь с keyserver-ами (получение ключей, отправка ключей, поиск).
• Проверку отозванных сертификатов (CRL/OCSP) для технологии S/MIME (используется в gpgsm).
gpgsm Утилита для работы с сертификатами S/MIME (стандарт, часто используемый в почтовых клиентах). Работает с X.509 сертификатами, а не с OpenPGP ключами.
gpgparsemail, gpgscm и др. Вспомогательные скрипты и утилиты для обработки почты и тестирования.
pinentry-* Набор программ для ввода пароля. Это отдельные пакеты (например, pinentry-gtk2, pinentry-qt, pinentry-curses, pinentry-tty), которые должны быть установлены вместе с GnuPG. Агент gpg-agent вызывает pinentry, чтобы показать графический или текстовый диалог ввода пароля. Это сделано для изоляции и безопасности — сам gpg-agent не имеет доступа к дисплею.

Итог: Установка GnuPG — это установка целой экосистемы (gpg, gpg-agent, dirmngr), которая работает вместе, чтобы предоставить полнофункциональную криптографическую инфраструктуру. Данные хранятся в виде набора файлов в домашнем каталоге, а не в единой монолитной базе, что упрощает резервное копирование и перенос.

2 - gpg-agent

gpg-agent — это демон для управления секретными (приватными) ключами независимо от какого-либо протокола. Он используется в качестве бэкенда для gpg и gpgsm, а также для нескольких других утилит.

Агент автоматически запускается по требованию gpg, gpgsm, gpgconf или gpg-connect-agent. Таким образом, нет необходимости запускать его вручную. Если вы хотите использовать включенный агент Secure Shell, вы можете запустить агент с помощью:

gpg-connect-agent /bye

Если вы хотите вручную завершить текущий работающий агент, вы можете сделать это безопасно с помощью:

gpgconf --kill gpg-agent

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

GPG_TTY=$(tty)
export GPG_TTY

Важно, чтобы эта переменная окружения всегда отражала вывод команды tty. Для систем W32 эта опция не требуется.

Пожалуйста, убедитесь, что подходящая программа pinentry установлена под именем по умолчанию (что зависит от системы) или используйте опцию pinentry-program, чтобы указать полное имя этой программы. Часто полезно установить символическую ссылку от фактически используемого pinentry (например, /usr/local/bin/pinentry-gtk) к ожидаемому (например, /usr/local/bin/pinentry).

3 - dirmngr

С версии 2.1 GnuPG dirmngr отвечает за доступ к серверам ключей OpenPGP. Как и в предыдущих версиях, он также используется в качестве сервера для управления и загрузки списков отзыва сертификатов (CRL) для сертификатов X.509, загрузки сертификатов X.509 и предоставления доступа к провайдерам OCSP. Dirmngr вызывается внутренне через gpg, gpgsm или с помощью инструмента gpg-connect-agent.

4 - gpg

gpg — это часть OpenPGP в GNU Privacy Guard (GnuPG). Это инструмент для предоставления услуг цифрового шифрования и подписи с использованием стандарта OpenPGP. gpg предлагает полное управление ключами и все функции, которые вы ожидаете от полноценной реализации OpenPGP.

Существуют две основные версии GnuPG: GnuPG 1.x и GnuPG 2.x. GnuPG 2.x поддерживает современные алгоритмы шифрования и, следовательно, должен быть предпочтительным вариантом по сравнению с GnuPG 1.x. Вам нужно использовать GnuPG 1.x только в том случае, если ваша платформа не поддерживает GnuPG 2.x или вам нужна поддержка некоторых функций, которые были устаревшими в GnuPG 2.x по соображениям безопасности, например, расшифровка данных, созданных с помощью ключей PGP-2.

Если вы ищете первую версию GnuPG, вы можете обнаружить, что эта версия установлена под именем gpg1.

Команды и опции

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

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

Если у вас возникли какие-либо проблемы, добавьте опцию --verbose (подробно) к вызову команды, чтобы увидеть больше диагностической информации.

4.1 - Команды GPG

Полный список команда GPG

Команды, не привязанные к конкретной функции

--version Выводит информацию о версии программы и лицензировании. Обратите внимание, что эту команду нельзя сокращать.

--help -h Выводит сообщение о использовании, суммирующее наиболее полезные опции командной строки. Обратите внимание, что эту команду нельзя произвольно сокращать (хотя можно использовать её короткую форму -h).

--warranty Выводит информацию о гарантиях.

--dump-options Выводит список всех доступных опций и команд. Обратите внимание, что эту команду нельзя сокращать.

Конечно, вот перевод и структурированная таблица с командами, а также примеры использования.

Команды для выбора типа операции

Команда (короткая) Описание
--sign (-s) Подписать сообщение. Можно комбинировать с --encrypt (для подписи и шифрования) и/или --symmetric. Ключ для подписи выбирается по умолчанию или задаётся опциями --local-user и --default-key.
--clear-sign
--clearsign
Создать подпись в чистом тексте (cleartext signature). Содержимое читаемо без специального ПО, которое нужно только для проверки подписи. Может изменять пробельные символы в конце строк.
--detach-sign (-b) Создать отделённую подпись (detached signature).
--encrypt (-e) Зашифровать данные для одного или нескольких открытых ключей. Комбинируется с --sign и/или --symmetric. Получатели задаются опциями --recipient.
--symmetric (-c) Зашифровать симметричным шифром с использованием парольной фразы (по умолчанию AES-128). Комбинируется с --sign и/или --encrypt. Пароль кэшируется.
--store Только сохранить (создать простой пакет literal data).
--decrypt (-d) Расшифровать файл, переданный в командной строке (или из STDIN) и записать в STDOUT. Если файл подписан, подпись также проверяется.
--verify Проверить подпись файла, не выводя содержимое. Для проверки отделённой подписи нужно указать файл подписи и файл(ы) данных.
--multifile Модифицирует другие команды (--verify, --encrypt, --decrypt) для обработки нескольких файлов, переданных в командной строке или из STDIN.
--verify-files Аналогично --multifile --verify.
--encrypt-files Аналогично --multifile --encrypt.
--decrypt-files Аналогично --multifile --decrypt.
--list-keys (-k)
--list-public-keys
Вывести список указанных или всех открытых ключей. Не использовать для парсинга в скриптах (используйте --with-colons).
--list-secret-keys (-K) Вывести список указанных или всех секретных ключей. # означает, что ключ не используется, > — ключ на смарт-карте.
--check-signatures
--check-sigs
Аналогично --list-keys, но также проверяет и выводит подписи ключей. ! — хорошая подпись, - — плохая, % — ошибка проверки.
--locate-keys
--locate-external-keys
Найти ключи по аргументам (использует те же методы, что и при шифровании). Вторая команда не ищет в локальных хранилищах.
--show-keys Анализирует переданные ключи (не из ключевых колец) и выводит информацию о них, как --list-keys.
--fingerprint Вывести список ключей вместе с их отпечатками. Если указать дважды, покажет отпечатки всех субключей.
--list-packets Вывести только последовательность пакетов (для отладки).
--edit-card
--card-edit
Открыть меню для работы со смарт-картой.
--card-status Показать содержимое смарт-карты.
--change-pin Позволить сменить PIN-код смарт-карты.
--delete-keys Удалить ключ из открытого ключевого кольца. В пакетном режиме требуется --yes или указание отпечатка.
--delete-secret-keys Удалить ключ из секретного ключевого кольца. В пакетном режиме требуется указание отпечатка.
--delete-secret-and-public-key Удалить и секретный, и открытый ключ.
--export Экспортировать указанные или все открытые ключи в STDOUT или файл.
--send-keys Отправить указанные ключи на keyserver.
--export-secret-keys
--export-secret-subkeys
Экспортировать секретные ключи. Вторая форма делает первичный ключ непригодным для использования (GNU расширение).
--export-ssh-key Экспортировать ключ в формате OpenSSH.
--import
--fast-import
Импортировать/объединить ключи в ключевое кольцо.
--receive-keys
--recv-keys
Импортировать ключи с заданными keyIDs с keyserver’а.
--refresh-keys Запросить обновления для существующих в ключевом кольце ключей с keyserver’а.
--search-keys Найти ключи по именам на keyserver’е.
--fetch-keys Загрузить ключи по указанным URI.
--update-trustdb Обслуживание базы доверия (интерактивно, запрашивает ownertrust).
--check-trustdb Обслуживание базы доверия без взаимодействия с пользователем.
--export-ownertrust Экспортировать значения ownertrust (для резервного копирования).
--import-ownertrust Импортировать значения ownertrust из файла.
--rebuild-keydb-caches Перестроить кэши в ключевом кольце.
--print-md
--print-mds
Вывести дайджест сообщения для указанного или всех алгоритмов.
--gen-random Сгенерировать count случайных байт заданного уровня качества (0, 1, 2).
--gen-prime Сгенерировать простое число. (Use the source, Luke :-))
--enarmor
--dearmor
Упаковать/распаковать произвольные данные в/из ASCII-armor OpenPGP.
--unwrap Модифицирует --decrypt для вывода исходного сообщения без слоя шифрования (выводит структуру OpenPGP).
--tofu-policy Установить политику TOFU (Trust On First Use) для указанных ключей.

Конкретные примеры использования

1. Шифрование и подпись:

# Зашифровать и подписать файл 'document.txt' для получателя alice@example.com, используя свой ключ bob@example.com для подписи.
# Результат в файле 'document.txt.gpg'
gpg --encrypt --sign --recipient alice@example.com --local-user bob@example.com --output document.txt.gpg document.txt
# Короткая форма:
gpg -e -s -r alice@example.com -u bob@example.com -o document.txt.gpg document.txt

2. Создание и проверка отделённой подписи:

# Создать отделённую подпись для файла 'package.zip'
gpg --detach-sign --output package.zip.sig package.zip
# Проверить отделённую подпись
gpg --verify package.zip.sig package.zip

3. Симметричное шифрование:

# Зашифровать файл 'secret.txt' симметричным шифром с помощью пароля
gpg --symmetric --output secret.txt.gpg secret.txt
# Расшифровать полученный файл (gpg запросит пароль)
gpg --decrypt --output secret.txt secret.txt.gpg

4. Работа с ключами:

# Вывести список открытых ключей с отпечатками
gpg --list-keys --fingerprint
# Импортировать ключ из файла
gpg --import public_key.asc
# Экспортировать открытый ключ с ID 12345678 в файл
gpg --export --armor 12345678 > public_key.asc
# Обновить все ключи в ключевом кольце с keyserver'а
gpg --refresh-keys

5. Проверка подписи чистого текста:

# Проверить подпись файла 'message.txt.asc'
gpg --verify message.txt.asc
# Если нужно извлечь подписанное содержимое в файл 'message.txt'
gpg --output message.txt --decrypt message.txt.asc

Конечно, вот перевод, структурированная таблица и практические примеры.

Как управлять своими ключами

В этом разделе объясняются основные команды для управления ключами.


Таблица команд управления ключами

Команда (короткая) Описание
--quick-generate-key
--quick-gen-key
Быстро сгенерировать стандартный ключ с одним ID пользователя. Без диалогов.
--quick-set-expire Установить срок действия основного ключа (fpr) и/или его субключей.
--quick-add-key Добавить субключ к существующему ключу (по отпечатку fpr).
--quick-add-adsk Добавить Дополнительный Субключ для Расшифровки (ADSK) из другого ключа.
--generate-key
--gen-key
Сгенерировать новую пару ключей, используя параметры по умолчанию (интерактивно).
--full-generate-key
--full-gen-key
Сгенерировать новую пару ключей с диалогами для всех опций.
--generate-revocation
--gen-revoke
Создать сертификат отзыва для всего ключа.
--generate-designated-revocation
--desig-revoke
Создать назначенный сертификат отзыва (позволяет отозвать чужой ключ).
--edit-key Основная команда для интерактивного управления ключами через меню.
--sign-key Подписать открытый ключ вашим секретным ключом (ярлык для sign в --edit-key).
--lsign-key Подписать ключ с пометкой “не для экспорта” (ярлык для lsign).
--quick-sign-key
--quick-lsign-key
--quick-tsign-key
Быстро подписать ключ без дополнительного взаимодействия.
--quick-add-uid Добавить новый ID пользователя к существующему ключу.
--quick-revoke-uid Отозвать ID пользователя на существующем ключе.
--quick-revoke-sig Отозвать подписи ключей, сделанные указанным ключом.
--quick-set-primary-uid Установить или обновить флаг основного ID пользователя.
--quick-update-pref Обновить список предпочтений ключа до текущего значения по умолчанию.
--quick-set-ownertrust Установить уровень доверия (ownertrust) для ключа.
--change-passphrase
--passwd
Изменить парольную фразу секретного ключа.

Ключевые понятия из --edit-key:

  • sign / lsign / tsign / nrsign – Подписать ключ (обычная/локальная/доверительная/безотзывная).
  • adduid – Добавить user ID.
  • addkey – Добавить субключ.
  • passwd – Сменить парольную фразу.
  • revkey / revuid – Отозвать субключ / user ID.
  • expire – Изменить срок действия.
  • save – Сохранить изменения и выйти.
  • quit – Выйти без сохранения.

Примеры использования

1. Быстрое создание ключа

# Создать ключ для Alice, который никогда не истекает, используя алгоритмы по умолчанию
gpg --quick-generate-key "Alice Lovelace <alice@example.com>" default default never

# Создать ключ для Bob с истечением через 1 год
gpg --quick-gen-key "Bob Babbage <bob@example.com>" default default 1y

# Создать ключ, защищённый паролем "secret", в пакетном режиме
echo "secret" | gpg --batch --pinentry-mode loopback --passphrase-fd 0 --quick-gen-key "Test User" default default

2. Управление сроком действия и субключами

# Установить срок действия основного ключа (с отпечатком XYZ123...) на 2025-12-31
gpg --quick-set-expire XYZ1234567890ABCDEFGH 2025-12-31

# Добавить субключ шифрования (алгоритм по умолчанию) к существующему ключу
gpg --quick-add-key XYZ1234567890ABCDEFGH default encr

# Добавить субключ для аутентификации (Ed25519) с истечением через 6 месяцев
gpg --quick-add-key XYZ1234567890ABCDEFGH ed25519 auth 6m

3. Работа с существующими ключами (подпись, отзыв)

# Подписать ключ с отпечатком ABCD... (все его user IDs)
gpg --quick-sign-key ABCD0987654321ABCD0987654321ABCD0987654321

# Подписать ключ, но только конкретный user ID ('=*@company.org' - точное совпадение)
gpg --quick-sign-key ABCD0987654321ABCD0987654321ABCD0987654321 "=*@company.org"

# Отозвать user ID 'old@email.com' у ключа 'user@example.com'
gpg --quick-revoke-uid "user@example.com" "old@email.com"

4. Импорт и экспорт

# Импортировать ключ из файла
gpg --import public_key.asc

# Экспортировать открытый ключ с отпечатком XYZ... в файл
gpg --export --armor XYZ1234567890ABCDEFGH > alice_public.asc

# Экспортировать секретный ключ для резервной копии (ОСТОРОЖНО!)
gpg --export-secret-keys --armor XYZ1234567890ABCDEFGH > alice_secret_backup.asc

5. Просмотр и проверка

# Показать список открытых ключей с отпечатками
gpg --list-keys --fingerprint

# Показать список секретных ключей
gpg --list-secret-keys

# Проверить подписи на всех ключах в ключевом кольце
gpg --check-signatures

6. Интерактивное управление через --edit-key

# Начать редактирование ключа (заменить 'user@example.com' на свой ID)
gpg --edit-key user@example.com

# В появившемся интерактивном меню (prompt: gpg>) можно использовать:
# gpg> adduid                         # Добавить новый user ID
# gpg> addkey                         # Добавить новый субключ
# gpg> passwd                         # Сменить пароль
# gpg> expire                         # Изменить срок действия
# gpg> key 1                          # Выбрать первый субключ (для операций с ним)
# gpg> trust                          # Изменить уровень доверия
# gpg> save                           # Сохранить изменения и выйти

Конечно, вот подробная таблица всех субкоманд --edit-key и дополнительные примеры.

Таблица субкоманд интерактивного меню --edit-key

Команда вводится после приглашения gpg>.

Субкоманда Описание
uid n Переключить выбор пользователя (user ID) или фотографии с индексом n. * — выбрать всех, 0 — отменить выбор всех.
key n Переключить выбор субключа с индексом n или key ID n. * — выбрать все, 0 — отменить выбор всех.
sign Создать подпись на ключе. Если ключ ещё не подписан вашим ключом по умолчанию, будет запрошено подтверждение.
lsign То же, что sign, но подпись помечается как неэкспортируемая (local).
nrsign То же, что sign, но подпись помечается как безотзывная (non-revocable).
tsign Создать доверительную подпись (trust signature). Требует указания глубины цепи доверия и значения.
delsig Удалить подпись с ключа. Не может отозвать подпись, уже отправленную публично.
revsig Отозвать подпись. Для каждой вашей подписи будет предложено создать сертификат отзыва.
check Проверить подписи на всех выбранных user IDs. С опцией selfsig показываются только самоподписи.
adduid Добавить дополнительный user ID (имя и email).
addphoto Добавить фотографию (JPEG) в качестве user ID.
showphoto Показать выбранную фотографию user ID.
deluid Удалить user ID или фотографию. Не может отозвать user ID, уже отправленный публично.
revuid Отозвать user ID или фотографию.
primary Пометить текущий user ID как основной. Снимает эту пометку с других user IDs.
keyserver Установить предпочтительный keyserver для выбранных user IDs. "none" — удалить.
notation Установить нотацию (name=value) для выбранных user IDs. "none" — удалить все.
pref Показать фактические предпочтения (шифры, хэши, сжатие) для выбранного user ID.
showpref Показать предпочтения с учётом значений по умолчанию (более подробно).
setpref [string] Установить список предпочтений. Без аргументов — сбросить на значения по умолчанию. "none" — очистить.
addkey Добавить новый субключ к основному ключу.
addcardkey Сгенерировать субключ на смарт-карте и добавить его к этому ключу.
keytocard Перенести выбранный секретный субключ на смарт-карту. Ключ в keyring будет заменён на заглушку.
bkuptocard file Восстановить ключ из файла-бэкапа на новую смарт-карту.
keytotpm Перенести выбранный секретный ключ в форму, защищённую TPM (Trusted Platform Module).
delkey Удалить публичную часть субключа. Не может отозвать субключ, уже отправленный публично.
revkey Отозвать субключ.
expire Изменить срок действия основного ключа или выбранного субключа.
trust Изменить уровень доверия (ownertrust) для ключа. Изменения в trustdb применяются сразу.
disable Отключить весь ключ. Отключённый ключ нельзя использовать.
enable Включить ключ.
addrevoker Добавить назначенного отзывающего (designated revoker) для ключа. Опция "sensitive" — не экспортировать по умолчанию.
addadsk Добавить Дополнительный Субключ для Расшифровки (Additional Decryption Subkey) с другого ключа.
passwd Изменить парольную фразу для секретного ключа.
toggle Пустая команда для обратной совместимости.
clean Очистить ключ: удалить невалидные, устаревшие, отозванные подписи и подписи от отсутствующих ключей.
minimize Сжать ключ до минимального размера, оставив для каждого user ID только последнюю самоподпись.
change-usage Изменить флаги использования (возможности) основного ключа или субключей (например, добавить Authenticate).
cross-certify Добавить перекрёстные сертифицирующие подписи на подписывающие субключи для защиты от атак.
save Сохранить все изменения в ключевое кольцо и выйти.
quit Выйти без сохранения изменений.

Примеры использования --edit-key

1. Базовое управление ключом

# Начать редактирование ключа для alice@example.com
gpg --edit-key alice@example.com

# В интерактивном меню:
gpg> adduid                         # Добавить новый user ID (запрос имени и email)
    Real name: Alice Lovelace
    Email address: alice@work.com
    Comment: Work account
    (Подтвердить)

gpg> uid 2                          # Выбрать второй user ID (только что добавленный)
gpg> primary                        # Сделать его основным
gpg> passwd                         # Изменить парольную фразу
gpg> save                           # Сохранить изменения и выйти

2. Управление субключами

gpg --edit-key bob@example.com

gpg> addkey                         # Добавить новый субключ
    Please select what kind of key you want:
       (3) DSA (sign only)
       (4) RSA (sign only)
       (5) Elgamal (encrypt only)
       (6) RSA (encrypt only)
       (7) DSA (set your own capabilities)
       (8) RSA (set your own capabilities)
       (10) ECC (sign only)
       (11) ECC (set your own capabilities)
       (12) ECC (encrypt only)
       (13) Existing key
    Your selection? 6               # Выбираем RSA (только шифрование)
    What keysize do you want? 4096  # Указываем размер ключа
    Key is valid for? 1y            # Указываем срок действия (1 год)
    (Подтвердить создание)

gpg> key 1                          # Выбрать первый субключ (для операций с ним)
gpg> expire                         # Изменить его срок действия
    Key is valid for? (0) 0
    Key does not expire at all
    Is this correct? (y/N) y        # Сделать бессрочным

gpg> revkey                         # ОТОЗВАТЬ этот субключ (если он скомпрометирован)
gpg> save

3. Подписание чужих ключей и управление доверием

# Предполагается, что ключ друга уже импортирован
gpg --edit-key friend@example.com

gpg> sign                           # Подписать ключ друга
    ... Вывод информации о ключе и его отпечатка ...
    Really sign? (y/N) y            # Подтверждаем подписание

gpg> tsign                          # Создать доверительную подпись
    Enter the depth of this trust signature (1-255): 1
    Enter the trust value (60=marginal, 120=full, 0-255): 120
    Enter a domain name (optional): our-community.org
    Really sign? (y/N) y

gpg> trust                          # Изменить уровень доверия к владельцу ключа
    Your decision? 5                # Указываем: "I trust ultimately"
gpg> save

4. Работа со смарт-картой (YubiKey и аналоги)

gpg --edit-key mykey@example.com

gpg> keytocard                      # Перенести выбранный секретный ключ на карту
    Please select where to store the key:
       (1) Signature key
       (2) Encryption key
       (3) Authentication key
    Your selection? 1               # Переносим подписывающий ключ в слот для подписи
    (Введите пароль админа карты)

gpg> key 1                          # Выбрать следующий ключ
gpg> keytocard
    Your selection? 2               # Переносим шифрующий ключ в слот для шифрования

gpg> save                           # Секретные ключи теперь на карте, в keyring - заглушки

5. Отзыв компонентов ключа

# Ключ скомпрометирован, нужно отозвать старый email и создать сертификат отзыва
gpg --edit-key compromised@example.com

gpg> uid 1                          # Выбрать user ID со старым email
gpg> revuid                         # ОТОЗВАТЬ этот user ID
    Create a revocation certificate for this user ID? (y/N) y
    Enter the reason for the revocation: 1 # 1 = Key has been compromised
    Enter an optional description; ...:
    (Подтвердить)

gpg> genrevoke                      # Создать сертификат отзыва для всего ключа
    Create a revocation certificate? (y/N) y
    Enter the reason for the revocation: 1
    ... (Описание) ...
    Вывод ASCII-armored сертификата отзыва
    Сохранить его в надёжное место!

gpg> quit                           # Пока не сохраняем изменения, только создали сертификат

# Позже, чтобы применить отзыв, импортируем сертификат
gpg --import revocation_certificate.asc

4.2 - Опции PGP

Список опций PGP

В GnuPG (gpg) имеется множество опций для точного контроля поведения и изменения конфигурации по умолчанию.

Опции конфигурации GPG: Как изменить конфигурацию. • Опции GPG, связанные с ключами: Опции, связанные с ключами. • Ввод и вывод GPG: Опции ввода и вывода. • Опции OpenPGP: Специфичные для протокола OpenPGP опции. • Опции соответствия (Compliance): Опции соответствия. • Эзотерические опции GPG: Выполнение действий, которые обычно не требуются. • Устаревшие опции: Опции, признанные устаревшими.

Длинные опции (long options) можно поместить в файл настроек (по умолчанию ~/.gnupg/gpg.conf). Короткие имена опций (short option names) работать не будут — например, armor является допустимой опцией для файла настроек, а a — нет. Не нужно писать 2 дефиса, достаточно указать имя опции и любые необходимые аргументы. Строки, у которых первый непробельный символ является решёткой (#), игнорируются. Команды также можно помещать в этот файл, но обычно это бесполезно, так как команда будет выполняться автоматически при каждом запуске gpg.

Пожалуйста, помните, что разбор опций останавливается, как только встречается не-опция. Вы можете явно остановить разбор с помощью специальной опции --.

Таблица опций конфигурации GPG

Опция (короткая) Описание
--default-key name Использовать name как ключ по умолчанию для подписи. Рекомендуется использовать отпечаток или длинный ключевой ID. Переопределяется опцией -u.
--default-recipient name Использовать name как получателя по умолчанию, если не используется --recipient. Не запрашивать подтверждение.
--default-recipient-self Использовать ключ по умолчанию в качестве получателя по умолчанию.
--no-default-recipient Сбросить --default-recipient и --default-recipient-self. Не для файла опций.
-v, --verbose Выдавать больше информации при обработке. Если использовать дважды, входные данные выводятся подробно.
--no-verbose Сбросить уровень детализации до 0. Не для файла опций.
-q, --quiet Работать как можно тише. Не для файла опций.
--batch Использовать пакетный режим. Никогда не спрашивать, не разрешать интерактивные команды.
--no-batch Отключить пакетный режим.
--no-tty Убедиться, что TTY (терминал) никогда не используется для вывода.
--yes Предполагать ответ “да” на большинство вопросов. Не для файла опций.
--no Предполагать ответ “нет” на большинство вопросов. Не для файла опций.
--proc-all-sigs Отменить поведение --batch для остановки проверки подписи при первой плохой подписи.
--list-filter {select=expr} Фильтр списка для вывода только определенных ключей при выводе списка ключей.
--list-options parameters Строка параметров для настройки вывода списков ключей и подписей. См. подопции ниже.
show-photos Показывать фото ID ключей. По умолчанию no.
show-usage Показывать информацию об использовании ключей (E=шифрование, S=подпись, C=сертификация, A=аутентификация). По умолчанию yes.
show-ownertrust Показывать значение доверия (ownertrust) для ключей. По умолчанию no.
show-trustsig Показывать информацию о доверительных подписях. По умолчанию no.
show-policy-urls Показывать URL политик в списках --check-signatures. По умолчанию no.
show-notations Показывать все notations подписей. По умолчанию no.
show-std-notations Показывать только стандартные (IETF) notations подписей. По умолчанию no.
show-user-notations Показывать пользовательские notations подписей. По умолчанию no.
show-x509-notations Выводить сертификаты X.509, встроенные в подписи ключей, в формате PEM (для отладки).
store-x509-notations Сохранять сертификаты X.509, встроенные в подписи ключей, как файлы PEM.
show-keyserver-urls Показывать предпочтительные URL keyserver’ов. По умолчанию no.
show-uid-validity Показывать расчетную валидность user ID. По умолчанию yes.
show-unusable-uids Показывать отозванные и просроченные user ID. По умолчанию no.
show-unusable-subkeys Показывать отозванные и просроченные субключи. По умолчанию no.
show-unusable-sigs Показывать подписи ключей, сделанные с использованием слабых или неподдерживаемых алгоритмов.
show-keyring Показывать имя ключевого кольца в заголовке списков ключей. По умолчанию no.
show-sig-expire Показывать даты истечения срока действия подписей. По умолчанию no.
show-sig-subpackets Включать подпакеты подписи в список ключей (только с --with-colons). По умолчанию no.
show-only-fpr-mbox Для каждого user ID с действительным email выводить только отпечаток и адрес.
sort-sigs Сортировать подписи по keyID и времени создания для --list-sigs и --check-sigs. По умолчанию yes.
--verify-options parameters Строка параметров для настройки проверки подписей. См. подопции ниже.
show-photos Показывать фото ID на ключе, выпустившем подпись. По умолчанию no.
show-policy-urls Показывать URL политик в проверяемой подписи. По умолчанию yes.
show-notations Показывать все notations в проверяемой подписи.
show-std-notations Показывать только стандартные (IETF) notations в проверяемой подписи. По умолчанию yes.
show-user-notations Показывать пользовательские notations в проверяемой подписи.
show-keyserver-urls Показывать предпочтительные URL keyserver’ов в проверяемой подписи. По умолчанию yes.
show-uid-validity Показывать расчетную валидность user ID на ключе, выпустившем подпись. По умолчанию yes.
show-unusable-uids Показывать отозванные и просроченные user ID при проверке подписи. По умолчанию no.
show-primary-uid-only Показывать только основной user ID при проверке подписи.
--enable-large-rsa Разрешить создание RSA-ключей размером до 8192 бит (с --generate-key --batch).
--disable-large-rsa Запретить создание больших RSA-ключей.
--enable-dsa2 Включить усечение хэша для всех DSA-ключей.
--disable-dsa2 Отключить усечение хэша для DSA-ключей.
--photo-viewer string Командная строка для просмотра фото ID. Замещает %i, %I, %k, %K, %f, %t, %T, %v, %V, %U, %%.
--exec-path string Задать список каталогов для поиска программ просмотра фото.
--keyring file Добавить файл file в текущий список ключевых колец.
--primary-keyring file Обозначить file как основное ключевое кольцо (сюда импортируются новые ключи).
--secret-keyring file Устаревшая опция, игнорируется.
--trustdb-name file Использовать file вместо trustdb по умолчанию.
--homedir dir Установить домашний каталог в dir.
--display-charset name Установить кодировку для преобразования строк (например, iso-8859-1, koi8-r, utf-8).
--utf8-strings Считать аргументы командной строки строками в UTF-8.
--no-utf8-strings Считать аргументы в кодировке, указанной --display-charset.
--options file Читать опции из файла file, а не из файла по умолчанию.
--no-options Явно не читать никакой файл опций. Сокращение для --options /dev/null.
-z n Установить уровень сжатия n для алгоритмов ZIP/ZLIB. 0 - отключить сжатие. -1 - принудительное сжатие уровнем по умолчанию.
--compress-level n Установить уровень сжатия для ZIP/ZLIB.
--bzip2-compress-level n Установить уровень сжатия для BZIP2.
--no-compress Отключить сжатие. Identical to -z0.
--bzip2-decompress-lowmem Использовать метод распаковки BZIP2 с низким потреблением памяти (медленнее).
--mangle-dos-filenames Заменять расширение выходного файла для совместимости со старыми версиями Windows.
--no-mangle-dos-filenames Не изменять имена файлов (по умолчанию).
--ask-cert-level Запрашивать уровень сертификации при подписании ключа.
--no-ask-cert-level Не запрашивать уровень сертификации.
--default-cert-level n Уровень сертификации по умолчанию при подписании ключа (0-3). По умолчанию 0.
--min-cert-level Минимальный уровень сертификации для принятия подписи при построении базы доверия. По умолчанию 2.
--trusted-key long key ID or fingerprint Считать указанный ключ таким же доверенным, как свой собственный секретный ключ.
--add-desig-revoker [sensitive:]fingerprint Добавить указанный ключ как назначенного отзывающего для вновь создаваемых ключей.
--default-new-key-adsk fingerprint Добавить указанный субключ как ADSK (Additional Decryption Subkey) для вновь создаваемых ключей.
--trust-model {pgp|classic|tofu|tofu+pgp|direct|always|auto} Установить модель доверия. По умолчанию pgp.
--always-trust Идентично --trust-model always.
--assert-signer fpr_or_file Убедиться, что хотя бы одна действительная подпись сделана указанным ключом (по отпечатку).
--assert-pubkey-algo algolist Убедиться, что при проверке подписи использовался алгоритм из algolist.
--auto-key-locate mechanisms Механизмы автоматического поиска ключей (local, wkd, keyserver, ldap, cert, dane, ntds, nodefault, clear). По умолчанию local,wkd.
--no-auto-key-locate Отключить автоматический поиск ключей.
--auto-key-import Импортировать ключ, встроенный в подпись, при успешной проверке.
--no-auto-key-import Не импортировать встроенные ключи (по умолчанию).
--auto-key-retrieve Автоматически получать ключи с keyserver’а при проверке подписей неизвестных ключей.
--no-auto-key-retrieve Не получать ключи автоматически (по умолчанию).
--keyid-format {none|short|0xshort|long|0xlong} Формат отображения key ID. По умолчанию 0xlong.
--keyserver name Устарело. Использовать name в качестве keyserver’а. Используйте dirmngr.conf вместо этого.
--keyserver-options {name=value} Опции для keyserver’а (include-revoked, include-disabled, honor-keyserver-url, include-subkeys и др.).
--completes-needed n Количество полностью доверенных пользователей для представления нового подписанта (по умолчанию 1).
--marginals-needed n Количество частично доверенных пользователей для представления нового подписанта (по умолчанию 3).
--tofu-default-policy {auto|good|unknown|bad|ask} Политика TOFU по умолчанию (по умолчанию auto).
--max-cert-depth n Максимальная глубина цепочки сертификации (по умолчанию 5).
--no-sig-cache Не кэшировать статус проверки подписей ключей.
--auto-check-trustdb Автоматически запускать --check-trustdb при необходимости.
--no-auto-check-trustdb Отключить автоматическую проверку trustdb.
--use-agent Фиктивная опция. gpg всегда требует агент.
--no-use-agent Фиктивная опция.
--gpg-agent-info Фиктивная опция. Не имеет эффекта.
--agent-program file Указать программу-агент для операций с секретными ключами.
--dirmngr-program file Указать программу dirmngr для доступа к keyserver’ам.
--disable-dirmngr Полностью отключить использование Dirmngr.
--no-autostart Не запускать gpg-agent или dirmngr автоматически, если они еще не запущены.
--lock-once Заблокировать базы данных один раз и не снимать блокировку до завершения процесса.
--lock-multiple Снимать блокировки, когда они больше не нужны.
--lock-never Полностью отключить блокировку.
--exit-on-status-write-error Немедленно завершать процесс при ошибках записи в status FD.
--limit-card-insert-tries n Ограничить количество запросов на вставку смарт-карты числом n-1.
--no-random-seed-file Не использовать файл для хранения пула случайных чисел между вызовами.
--no-greeting Не показывать начальное сообщение об авторских правах.
--no-secmem-warning Не показывать предупреждение о “использовании незащищенной памяти”.
--no-permission-warning Не показывать предупреждение о небезопасных разрешениях файлов и каталогов.
--require-secmem Отказаться работать, если невозможно получить защищенную память.
--no-require-secmem Работать, даже если нет защищенной памяти (по умолчанию, с предупреждением).
--require-cross-certification Требовать наличия действительной перекрестной сертификации для субключей при проверке подписи.
--no-require-cross-certification Не требовать перекрестной сертификации.
--expert Разрешить пользователю выполнять определенные нестандартные или потенциально несовместимые действия.
--no-expert Запретить экспертный режим (по умолчанию).
Опция (короткая) Описание
--recipient name
-r
Зашифровать для пользователя с ID name. Если эта опция или --hidden-recipient не указана, GnuPG запросит user-id (если не задан --default-recipient).
--hidden-recipient name
-R
Зашифровать для пользователя с ID name, но скрыть key ID его ключа. Помогает скрыть получателя сообщения и является ограниченной мерой против анализа трафика.
--recipient-file file
-f
Аналогично --recipient, но шифрует для ключа, хранящегося в указанном файле file. Файл должен содержать ровно один ключ. GnuPG считает ключ в файле полностью valid.
--hidden-recipient-file file
-F
Аналогично --hidden-recipient, но шифрует для ключа, хранящегося в указанном файле file.
--encrypt-to name То же, что --recipient, но предназначена для использования в файле опций. Может использоваться с вашим собственным user-id как “encrypt-to-self” (зашифровать для себя). Рекомендуется использовать отпечаток или длинный keyID. Эти ключи используются только при наличии других получателей. Проверка доверия для этих user id не выполняется, можно использовать даже отключенные ключи.
--hidden-encrypt-to name То же, что --hidden-recipient, но предназначена для использования в файле опций. Может использоваться как скрытый “encrypt-to-self”.
--no-encrypt-to Отключить использование всех ключей, заданных через --encrypt-to и --hidden-encrypt-to.
--group {name=value} Создает именованную группу, подобную псевдонимам в почтовых программах. Когда имя группы указывается как получатель, оно раскрывается в указанные значения. Значениями могут быть key IDs или отпечатки. Пространства в значениях обрабатываются как разделители.
--ungroup name Удалить заданную запись из списка групп.
--no-groups Удалить все записи из списка групп.
--local-user name
-u
Использовать name как ключ для подписи. Переопределяет --default-key.
--sender mbox При создании подписи: указывает user ID ключа для подписи и встраивает его в создаваемую подпись (используя subpacket “Signer’s User ID” OpenPGP).
При проверке подписи: mbox используется для ограничения информации, выводимой кодом TOFU, соответствующими user IDs. GnuPG учитывает только почтовую часть User ID.
--try-secret-key name Для скрытых получателей GPG нужно знать ключи для пробной расшифровки. Эта опция позволяет задать дополнительные ключи для использования. Рекомендуется использовать long keyid во избежание неоднозначностей.
--try-all-secrets Не смотреть на key ID, хранящийся в сообщении, а пробовать все секретные ключи по очереди, чтобы найти правильный ключ для расшифровки. Принудительно включает поведение, используемое для анонимных получателей.
--skip-hidden-recipients При расшифровке пропускать всех анонимных получателей. Помогает избежать перебора всех секретных ключей, когда функция скрытых получателей используется для сокрытия ключа encrypt-to.
--no-skip-hidden-recipients Не пропускать анонимных получателей при расшифровке (поведение по умолчанию).

4.3 - Ввод и вывод

Описание настроек для ввода и вывода

Ввод и Вывод

--armor -a Создавать вывод в формате ASCII-armor (защищенный ASCII). По умолчанию создается бинарный формат OpenPGP.

--no-armor Предполагать, что входные данные не в формате ASCII-armor.

--output file -o file Записывать вывод в файл file. Для записи в стандартный поток вывода (stdout) используйте - в качестве имени файла.

--max-output n Эта опция устанавливает лимит на количество байт, которые будут сгенерированы при обработке файла. Поскольку OpenPGP поддерживает различные уровни сжатия, возможно, что открытый текст данного сообщения может быть значительно больше исходного сообщения OpenPGP. Хотя GnuPG корректно работает с такими сообщениями, часто возникает желание установить максимальный размер файла, который будет сгенерирован, прежде чем обработка будет принудительно остановлена из-за ограничений ОС. По умолчанию 0, что означает «без ограничений».

--chunk-size n Режим шифрования AEAD шифрует данные блоками (chunks), чтобы принимающая сторона могла проверять ошибки передачи или подделку в конце каждого блока, а не откладывать это до получения всех данных. Используемый размер блока составляет 2^n байт. Наименьшее разрешенное значение для n — 6 (64 байта), а наибольшее — значение по умолчанию 22, что создает блоки размером не более 4 МиБ.

--input-size-hint n Эта опция может быть использована, чтобы сообщить GPG размер входных данных в байтах. n должно быть положительным числом в десятичной системе счисления. Эта опция полезна только если ввод осуществляется не из файла. GPG может использовать эту подсказку для оптимизации стратегии выделения буферов. Она также используется в строке --status-fd «PROGRESS» для предоставления значения «total», если оно недоступно другими способами.

--key-origin string[,url] gpg может отслеживать происхождение ключа. Некоторые источники известны неявно (например, keyserver, web key directory) и устанавливаются автоматически. Для стандартного импорта происхождение импортируемых ключей можно задать с помощью этой опции. Чтобы узнать возможные значения, используйте "help" в качестве string. Некоторые источники могут хранить необязательный аргумент url; такой URL можно добавить к string через запятую.

--import-options parameters Это строка, разделенная пробелами или запятыми, которая задает параметры для импорта ключей. К параметрам можно добавлять префикс ‘no-’, чтобы придать противоположное значение. Параметры:

import-local-sigs Разрешить импорт подписей ключей, помеченных как “local” (локальные). Обычно это не полезно, если не используется схема с общим ключевым кольцом. По умолчанию no.

keep-ownertrust Обычно возможные, но все еще существующие значения доверия (ownertrust) ключа очищаются, если ключ импортируется. Это в целом желательно, чтобы ранее удаленный ключ не получал автоматически значения доверия仅仅 из-за импорта. С другой стороны, иногда необходимо повторно импортировать набор доверенных ключей, сохраняя уже назначенные значения доверия. Этого можно достичь, используя эту опцию.

repair-pks-subkey-bug При импорте пытаться исправить повреждения, вызванные ошибкой keyserver PKS (версии до 0.9.6), которая искажает ключи с несколькими подключами. Обратите внимание, что это не может полностью восстановить поврежденный ключ, так как некоторые crucial данные удаляются keyserver’ом, но это, по крайней мере, возвращает вам один подключ. По умолчанию no для обычного --import и yes для keyserver --receive-keys.

import-show show-only Показывать список ключа непосредственно перед его сохранением. Это можно комбинировать с опцией --dry-run, чтобы только просмотреть ключи; опция show-only является ярлыком для этой комбинации. Команда --show-keys — это еще один ярлык для этого. Обратите внимание, что суффиксы, такие как ’#’ для строк “sec” и “sbb”, могут выводиться, а могут и нет.

import-export Запустить весь код импорта, но вместо сохранения ключа в локальное ключевое кольцо записать его в вывод. Опция экспорта export-dane влияет на вывод. Эта опция может быть использована, например, для удаления всех недействительных частей из ключа без необходимости его сохранять.

merge-only Во время импорта разрешать обновления существующих ключей, но не разрешать импорт любых новых ключей. По умолчанию no.

import-clean После импорта compact (удалить все подписи, кроме самоподписи) любые user ID из нового ключа, которые не пригодны для использования. Затем удалить любые подписи из нового ключа, которые не пригодны для использования. Это включает подписи, выпущенные ключами, которых нет в ключевом кольце. Эта опция эквивалентна выполнению команды --edit-key “clean” после импорта. По умолчанию no.

self-sigs-only Принимать только самоподписи при импорте ключа. Все другие подписи ключей пропускаются на раннем этапе импорта. Эту опцию можно использовать с keyserver-options для смягчения попыток flooding ключа поддельными подписями с keyserver’а. Недостаток заключается в том, что все другие действительные подписи ключей, требуемые Web of Trust, также не импортируются. Обратите внимание, что при использовании этой опции вместе с import-clean она подавляет финальный шаг очистки после объединения импортированного ключа с существующим ключом.

ignore-attributes Игнорировать все attribute user ID (photo ID) и их подписи при импорте ключа.

repair-keys После импорта исправлять различные проблемы с ключами. Например, это переупорядочивает подписи и удаляет дубликаты подписей. По умолчанию yes.

bulk-import При использовании keyboxd (опция use-keyboxd в common.conf) выполняет импорт в рамках одной транзакции.

import-minimal Импортировать минимально возможный ключ. Это удаляет все подписи, кроме самой последней самоподписи на каждом user ID. Эта опция эквивалентна выполнению команды --edit-key “minimize” после импорта. По умолчанию no.

restore import-restore Импортировать в режиме восстановления ключа. Это импортирует все данные, которые обычно пропускаются во время импорта; включая все специфичные для GnuPG данные. Все другие противоречащие опции переопределяются.

--import-filter {name=expr} --export-filter {name=expr} Эти опции определяют фильтр импорта/экспорта, который применяется к импортируемому/экспортируемому ключевому блоку непосредственно перед его сохранением/записью. name определяет тип используемого фильтра, expr — выражение для вычисления. Опцию можно использовать несколько раз, что добавляет больше выражений к тому же имени name.

Доступные типы фильтров:

keep-uid Этот фильтр будет сохранять пакет user id и зависящие от него пакеты в ключевом блоке, если выражение оценивается как истина.

drop-subkey Этот фильтр удаляет выбранные подключи. В настоящее время реализовано только для --export-filter.

drop-sig Этот фильтр удаляет выбранные подписи ключей на user ids. Самоподписи не рассматриваются. В настоящее время реализовано только для --import-filter.

select Этот фильтр реализован только для --list-filter. Можно использовать все имена свойств.

Синтаксис выражения см. в главе «ВЫРАЖЕНИЯ ФИЛЬТРА». Имена свойств для выражений зависят от фактического типа фильтра и указаны в следующей таблице. Обратите внимание, что все имена свойств также могут использоваться --list-filter.

Имена свойств могут иметь префикс с областью видимости, разделенной косой чертой. Допустимые области видимости: "pub" для открытых и секретных первичных ключей, "sub" для открытых и секретных подключей, "uid" для пакетов user-ID и "sig" для пакетов подписей. Неверные области видимости в настоящее время игнорируются.

Доступные свойства:

uid Строка с user id. (keep-uid)

mbox Часть addr-spec user id с почтовым ящиком или пустая строка. (keep-uid)

algostr Строка с описанием алгоритма ключа. Например, “rsa3072” или “ed25519”.

key_algo Число с алгоритмом открытого ключа пакета ключа или подключа. (drop-subkey)

key_size Число с эффективным размером ключа пакета ключа или подключа. (drop-subkey)

key_created key_created_d Первое — это метка времени создания пакета открытого ключа или подключа. Второе — то же самое, но представленное в виде строки ISO, например, “2016-08-17”. (drop-subkey)

key_expires key_expires_d Время истечения срока действия открытого ключа или подключа или 0, если срок действия не истекает. Второе — то же самое, но представленное в виде строки с датой ISO или пустой строки, например, “2038-01-19”.

fpr Шестнадцатеричный отпечаток (fingerprint) текущего подключа или первичного ключа. (drop-subkey)

primary Логическое значение, указывающее, является ли user id первичным. (keep-uid)

expired Логическое значение, указывающее, истек ли срок действия user id (keep-uid), ключа (drop-subkey) или подписи (drop-sig).

revoked Логическое значение, указывающее, был ли отозван user id (keep-uid) или ключ (drop-subkey).

disabled Логическое значение, указывающее, отключен ли первичный ключ.

secret Логическое значение, указывающее, является ли ключ или подключ секретным. (drop-subkey)

usage Строка, указывающая флаги использования для подключа, из последовательности «ecsa?». Например, подключ, способный только подписывать и аутентифицировать, будет точным совпадением для “sa”. (drop-subkey)

sig_created sig_created_d Первое — это метка времени создания пакета подписи. Второе — то же самое, но представленное в виде строки с датой ISO, например, “2016-08-17”. (drop-sig)

sig_expires sig_expires_d Время истечения срока действия пакета подписи или 0, если срок действия не истекает. Второе — то же самое, но представленное в виде строки с датой ISO или пустой строки, например, “2038-01-19”.

sig_algo Число с алгоритмом открытого ключа пакета подписи. (drop-sig)

sig_digest_algo Число с алгоритмом хеширования пакета подписи. (drop-sig)

origin Строка с происхождением ключа или вопросительный знак. Например, строка “wkd” используется, если ключ получен из Web Key Directory.

lastupd Метка времени последнего обновления ключа с keyserver’а или из Web Key Directory.

url Строка с URL, связанным с последним поиском ключа.

--export-options parameters Это строка, разделенная пробелами или запятыми, которая задает параметры для экспорта ключей. К параметрам можно добавлять префикс ‘no-’, чтобы придать противоположное значение. Параметры:

export-local-sigs Разрешить экспорт подписей ключей, помеченных как “local” (локальные). Обычно это не полезно, если не используется схема с общим ключевым кольцом. По умолчанию no.

export-attributes Включать attribute user IDs (photo IDs) при экспорте. Не включение attribute user IDs полезно для экспорта ключей, которые будут использоваться программой OpenPGP, не принимающей attribute user IDs. По умолчанию yes.

export-sensitive-revkeys Включать информацию о назначенном отзывающем (designated revoker), которая была помечена как “sensitive” (чувствительная). По умолчанию no.

backup export-backup Экспортировать для использования в качестве резервной копии. Экспортируемые данные включают все данные, необходимые для последующего восстановления ключа или ключей с помощью GnuPG. Формат基本上是 OpenPGP формат, но расширенный специфичными для GnuPG данными. Все другие противоречащие опции переопределяются.

export-clean Compact (удалить все подписи) user IDs экспортируемого ключа, если user IDs не пригодны для использования. Также не экспортировать любые подписи, которые не пригодны для использования. Это включает подписи, выпущенные ключами, которых нет в ключевом кольце. Эта опция эквивалентна выполнению команды --edit-key “clean” перед экспортом, за исключением того, что локальная копия ключа не изменяется. По умолчанию no.

export-minimal Экспортировать минимально возможный ключ. Это удаляет все подписи, кроме самой последней самоподписи на каждом user ID. Эта опция эквивалентна выполнению команды --edit-key “minimize” перед экспортом, за исключением того, что локальная копия ключа не изменяется. По умолчанию no.

export-revocs Экспортировать только отдельные (standalone) сертификаты отзыва ключа. Эта опция не экспортирует отзывы сторонних сертификатов отзыва.

export-dane Вместо вывода material ключа выводить записи OpenPGP DANE, пригодные для размещения в файлах зон DNS. Перед каждой записью выводится строка ORIGIN, чтобы позволить направлять записи в соответствующую зону.

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

--with-colons Выводить списки ключей, разделенные двоеточиями. Обратите внимание, что вывод будет закодирован в UTF-8 независимо от каких-либо настроек --display-charset. Этот формат полезен, когда GnuPG вызывается из скриптов и других программ, так как он легко анализируется машиной. Подробности этого формата документированы в файле doc/DETAILS, который включен в дистрибутив исходного кода GnuPG.

--fixed-list-mode Не объединять primary user ID и primary key в режиме листинга --with-colon и выводить все метки времени в виде секунд с 1970-01-01. Начиная с GnuPG 2.0.10, этот режим всегда используется, и поэтому эта опция устарела; однако использовать ее не вредно.

--legacy-list-mode Вернуться к режиму списка открытых ключей до версии 2.1. Это влияет только на удобочитаемый вывод, а не на машинный интерфейс (т.е. --with-colons). Обратите внимание, что устаревший формат не передает подходящую информацию для эллиптических кривых.

--with-fingerprint То же, что и команда --fingerprint, но изменяет только формат вывода и может использоваться вместе с другой командой.

--with-subkey-fingerprint --without-subkey-fingerprint Если для первичного ключа выводится отпечаток, эта опция принудительно выводит отпечаток для всех подключей. Этого также можно было бы достичь, используя --with-fingerprint дважды, но используя эту опцию вместе с форматом keyid по умолчанию “none”, выводится compact отпечаток. Начиная с версии 2.6.0 эта опция активна по умолчанию; используйте вариант «without», чтобы отключить ее.

--with-v5-fingerprint В режиме листинга с двоеточиями выводить строки “fp2” для ключей OpenPGP версии 4, имеющих отпечаток ключа в стиле v5.

--with-icao-spelling Печатать spelling отпечатка по стандарту ICAO в дополнение к шестнадцатеричным цифрам.

--with-keygrip Включать keygrip в списки ключей. В режиме --with-colons это неявно включено для секретных ключей.

--with-key-origin Включать локально хранящуюся информацию о происхождении и последнем обновлении ключа в список ключей. В режиме --with-colons это выводится всегда. Эти данные в настоящее время являются экспериментальными и не должны рассматриваться как часть стабильного API.

--with-wkd-hash Выводить идентификатор Web Key Directory вместе с каждым user ID в списках ключей. Это экспериментальная функция, и семантика может измениться.

--with-secret Включать информацию о наличии секретного ключа в списках открытых ключей, выполненных с помощью --with-colons.


Таблица опций GnuPG

Опция (короткая) Опция (полная) Описание
-a --armor Создавать вывод в формате ASCII-armor (защищенный ASCII).
--no-armor Предполагать, что входные данные не в формате ASCII-armor.
-o --output file Записывать вывод в указанный файл. Используйте - для stdout.
--max-output n Установить лимит (в байтах) на размер генерируемых данных. 0 = без лимита.
--chunk-size n Установить размер блока (chunk) для AEAD шифрования (2^n байт, n=6..22).
--input-size-hint n Сообщить GPG предполагаемый размер входных данных (в байтах) для оптимизации.
--key-origin string[,url] Установить происхождение импортируемых ключей.
--import-options parameters Задать параметры импорта (см. список значений ниже).
--import-filter {name=expr} Применить фильтр к импортируемому ключевому блоку.
--export-filter {name=expr} Применить фильтр к экспортируемому ключевому блоку.
--export-options parameters Задать параметры экспорта (см. список значений ниже).
--with-colons Выводить списки ключей в машиночитаемом формате (разделены двоеточиями).
--fixed-list-mode (Устарело) Не объединять primary user ID и key, выводить время в секундах.
--legacy-list-mode Использовать устаревший (до 2.1) формат человекочитаемого вывода.
--with-fingerprint Выводить отпечатки пальцев ключей (изменяет только формат вывода).
--with-subkey-fingerprint Принудительно выводить отпечатки для всех подключей (по умолчанию вкл. с 2.6.0).
--without-subkey-fingerprint Отключить вывод отпечатков для подключей.
--with-v5-fingerprint В colon-режиме выводить строки “fp2” для v4 ключей с v5-отпечатком.
--with-icao-spelling Выводить spelling отпечатка по стандарту ICAO.
--with-keygrip Включать keygrip в списки ключей.
--with-key-origin Включать информацию о происхождении и времени обновления ключа.
--with-wkd-hash Выводить Web Key Directory хеш для каждого user ID.
--with-secret Включать информацию о наличии секретного ключа в списках открытых ключей (для --with-colons).

Параметры для --import-options:

Параметр Описание
import-local-sigs Разрешить импорт подписей, помеченных как “local”.
keep-ownertrust Сохранять существующие значения доверия (ownertrust) при импорте.
repair-pks-subkey-bug Пытаться исправить ключи, поврежденные из-за ошибки keyserver PKS.
import-show, show-only Показывать ключ перед сохранением. show-only + --dry-run = только просмотр.
import-export Запустить импорт, но записать результат в вывод, а не в keyring.
merge-only Разрешить только обновление существующих ключей, запретить импорт новых.
import-clean Очистить ключ от невалидных user ID и подписей после импорта.
self-sigs-only Импортировать только самоподписи, игнорируя все другие подписи ключей.
ignore-attributes Игнорировать attribute user IDs (photo IDs) и их подписи.
repair-keys Исправлять проблемы с ключами (упорядочить подписи, убрать дубли) после импорта.
bulk-import Выполнять импорт в keyboxd в рамках одной транзакции.
import-minimal Импортировать минимальный ключ (только последние самоподписи на каждом user ID).
restore, import-restore Импорт в режиме восстановления (включает все данные, обычно пропускаемые).

Параметры для --export-options:

Параметр Описание
export-local-sigs Разрешить экспорт подписей, помеченных как “local”.
export-attributes Включать attribute user IDs (photo IDs) в экспорт.
export-sensitive-revkeys Включать информацию о “sensitive” назначенных отзывающих (designated revokers).
backup, export-backup Экспорт в формате резервной копии (включает все данные для восстановления).
export-clean Очистить ключ от невалидных user ID и подписей перед экспортом (не изменяет локальный ключ).
export-minimal Экспортировать минимальный ключ (только последние самоподписи на каждом user ID).
export-revocs Экспортировать только standalone сертификаты отзыва.
export-dane Выводить записи OpenPGP DANE для DNS вместо material ключа.
mode1003 Использовать новый, более безопасный формат экспорта секретных ключей (GnuPG >= 2.4.0).

Типы фильтров для --import-filter / --export-filter:

Тип фильтра Описание
keep-uid Сохранять user ID пакет, если выражение истинно.
drop-subkey Удалять выбранные подключи (только для --export-filter).
drop-sig Удалять выбранные подписи ключей (не самоподписи) (только для --import-filter).
select Фильтр для выбора (только для --list-filter).

4.4 - OpenGPG опции

Опции для настройки работы Open GPG

Специфичные опции для протокола OpenPGP

--force-ocb --force-aead Принудительно использовать AEAD шифрование вместо MDC шифрования. AEAD — это современный и более быстрый способ аутентифицированного шифрования, чем старый метод MDC. --force-aead является псевдонимом и устарел. См. также опцию --chunk-size.

--force-mdc --disable-mdc Эти опции устарели и не имеют эффекта начиная с GnuPG 2.2.8. MDC всегда используется, если только ключи не указывают, что можно использовать алгоритм AEAD, и в этом случае используется AEAD. Но обратите внимание: если исключительно требуется создание устаревшего сообщения без MDC, опция --rfc2440 позволяет это сделать.

--disable-signer-uid По умолчанию идентификатор пользователя (user ID) ключа подписи встраивается в подпись данных. На данный момент это делается только в том случае, если ключ подписи был указан с помощью local-user с использованием почтового адреса или с помощью sender. Эта информация может быть полезна проверяющему для поиска ключа; см. опцию --auto-key-retrieve.

--include-key-block --no-include-key-block Эта опция используется для встраивания фактического ключа подписи в подпись данных. Встраиваемый ключ сокращается до одного идентификатора пользователя и включает только подключ подписи, использованный для создания подписи, а также действительные подключи шифрования. Вся остальная информация удаляется из ключа, чтобы сохранить его, и, следовательно, подпись небольшой. Эта опция является аналогом опции gpgsm --include-certs в OpenPGP и позволяет получателю подписанного сообщения отвечать зашифрованно отправителю без использования каких-либо онлайн-каталогов для поиска ключа. По умолчанию установлено --no-include-key-block. См. также опцию --auto-key-import.

--personal-cipher-preferences string Установить список личных предпочтений шифров на строку string. Используйте gpg --version, чтобы получить список доступных алгоритмов, и используйте none, чтобы вообще не устанавливать предпочтений. Это позволяет пользователю безопасно переопределить алгоритм, выбранный предпочтениями ключа получателя, поскольку GPG будет выбирать только алгоритм, пригодный для использования всеми получателями. Самый высокорейтинговый шифр в этом списке также используется для команды шифрования --symmetric.

--personal-digest-preferences string Установить список личных предпочтений хеширования на строку string. Используйте gpg --version, чтобы получить список доступных алгоритмов, и используйте none, чтобы вообще не устанавливать предпочтений. Это позволяет пользователю безопасно переопределить алгоритм, выбранный предпочтениями ключа получателя, поскольку GPG будет выбирать только алгоритм, пригодный для использования всеми получателями. Самый высокорейтинговый алгоритм хеширования в этом списке также используется при подписании без шифрования (например, --clear-sign или --sign).

--personal-compress-preferences string Установить список личных предпочтений сжатия на строку string. Используйте gpg --version, чтобы получить список доступных алгоритмов, и используйте none, чтобы вообще не устанавливать предпочтений. Это позволяет пользователю безопасно переопределить алгоритм, выбранный предпочтениями ключа получателя, поскольку GPG будет выбирать только алгоритм, пригодный для использования всеми получателями. Самый высокорейтинговый алгоритм сжатия в этом списке также используется, когда нет ключей получателей для рассмотрения (например, --symmetric).

--s2k-cipher-algo name Использовать name в качестве алгоритма шифрования для симметричного шифрования с парольной фразой, если не заданы --personal-cipher-preferences и --cipher-algo. По умолчанию используется AES-128.

--s2k-digest-algo name Использовать name в качестве алгоритма хеширования, используемого для преобразования (mangling) парольных фраз для симметричного шифрования. По умолчанию используется SHA-1.

--s2k-mode n Выбирает способ преобразования парольных фраз для симметричного шифрования. Если n равно 0, будет использоваться обычная парольная фраза (что в целом не рекомендуется), 1 добавляет соль (salt) (которую не следует использовать) к парольной фразе, а 3 (по умолчанию) повторяет весь процесс несколько раз (см. --s2k-count).

--s2k-count n Указать, сколько раз повторяется процесс преобразования парольных фраз для симметричного шифрования. Это значение может находиться в диапазоне от 1024 до 65011712 включительно. Значение по умолчанию запрашивается у gpg-agent. Обратите внимание, что не все значения в диапазоне 1024–65011712 являются допустимыми, и если выбрано недопустимое значение, GnuPG округлит его до ближайшего допустимого значения. Эта опция имеет смысл только если --s2k-mode установлен в значение по умолчанию 3.


Таблица опций GnuPG (OpenPGP protocol specific)

Опция (полная) Описание
--force-ocb, --force-aead Принудительно использовать современное AEAD шифрование вместо устаревшего MDC. --force-aead — устаревший псевдоним.
--force-mdc, --disable-mdc Устарели (не действуют с GnuPG 2.2.8). MDC используется всегда, если только ключи не предписывают использовать AEAD.
--disable-signer-uid Не внедрять идентификатор пользователя (User ID) ключа подписи в подпись данных.
--include-key-block Встроить фактический ключ подписи (сокращенный) в подпись данных для облегчения ответного шифрования.
--no-include-key-block По умолчанию. Не встраивать ключ подписи в подпись данных.
--personal-cipher-preferences string Задать личный порядок предпочтения алгоритмов шифрования. none — сбросить предпочтения.
--personal-digest-preferences string Задать личный порядок предпочтения алгоритмов хеширования. none — сбросить предпочтения.
--personal-compress-preferences string Задать личный порядок предпочтения алгоритмов сжатия. none — сбросить предпочтения.
--s2k-cipher-algo name Задать алгоритм шифрования по умолчанию для симметричного шифрования (паролем). По умолчанию: AES-128.
--s2k-digest-algo name Задать алгоритм хеширования по умолчанию для преобразования парольных фраз. По умолчанию: SHA-1.
--s2k-mode n Выбрать метод преобразования парольной фразы. 0 - плохо, 1 - с солью (плохо), 3 - итерации (хорошо, по умолчанию).
--s2k-count n Задать количество итераций для преобразования парольной фразы (если --s2k-mode=3). Диапазон: 1024–65011712. Значение по умолчанию запрашивается у gpg-agent.

4.5 - Опции соответствия

Эти опции контролируют, каким стандартам соответствует GnuPG. Одновременно может быть активна только одна из этих опций.

Опции соответствия (Compliance options)

Эти опции контролируют, каким стандартам соответствует GnuPG. Одновременно может быть активна только одна из этих опций. Если указано несколько опций, последняя из них отменяет все предыдущие. Обратите внимание, что настройка по умолчанию почти всегда является правильной. Перед использованием любой из этих опций ознакомьтесь с разделом «ВЗАИМОДЕЙСТВИЕ С ДРУГИМИ ПРОГРАММАМИ OPENPGP» ниже.

--gnupg Использовать стандартное поведение GnuPG. Это, по сути, поведение OpenPGP (см. --openpgp), но с расширениями из предлагаемого обновления OpenPGP и с некоторыми дополнительными обходными путями для распространенных проблем совместимости в разных версиях PGP. Это опция по умолчанию, поэтому обычно в ней нет необходимости, но она может быть полезна для переопределения другой опции соответствия в файле gpg.conf.

--openpgp Сбросить все параметры пакетов, шифрования и хеширования до строгого поведения OpenPGP. Эта опция подразумевает --allow-old-cipher-algos. Используйте эту опцию, чтобы сбросить все предыдущие настройки, такие как --s2k-*, --cipher-algo, --digest-algo и --compress-algo, к значениям, соответствующим OpenPGP. Все обходные пути для PGP отключены.

--rfc4880 Сбросить все параметры пакетов, шифрования и хеширования до строгого поведения RFC-4880. Эта опция подразумевает --allow-old-cipher-algos. Обратите внимание, что в настоящее время это то же самое, что и --openpgp.

--rfc4880bis Сбросить все параметры пакетов, шифрования и хеширования в строгое соответствие предлагаемым обновлениям RFC-4880.

--rfc2440 Сбросить все параметры пакетов, шифрования и хеширования до строгого поведения RFC-2440. Обратите внимание, что при использовании этой опции пакеты шифрования создаются в устаревшем режиме без защиты MDC. Это опасно, и поэтому должно использоваться только для экспериментов. Эта опция подразумевает --allow-old-cipher-algos. См. также опцию --ignore-mdc-error.

--pgp6 Эта опция устарела; она обрабатывается как псевдоним для --pgp7.

--pgp7 Настроить все параметры для максимального соответствия PGP 7. Это разрешало шифры IDEA, 3DES, CAST5, AES128, AES192, AES256 и TWOFISH, хеши MD5, SHA1 и RIPEMD160, а также алгоритмы сжатия “none” и ZIP. Эта опция подразумевает --escape-from-lines и отключает --throw-keyids.

--pgp8 Настроить все параметры для максимального соответствия PGP 8. PGP 8 гораздо ближе к стандарту OpenPGP, чем предыдущие версии PGP, поэтому все, что она делает, это отключает --throw-keyids и устанавливает --escape-from-lines. Разрешены все алгоритмы, кроме хешей SHA224, SHA384 и SHA512.

--compliance string Эта опция может быть использована вместо одной из опций выше. Допустимые значения для string — это названия опций выше (без двойного дефиса) и, возможно, другие, как показано при использовании "help" для string.

--min-rsa-length n Эта опция настраивает режим соответствия "de-vs" для более строгих требований к размеру ключа. Например, значение 3000 превращает ключи rsa2048 и dsa2048 в ключи, не соответствующие стандарту VS-NfD.

--require-pqc-encryption Эта опция принудительно требует использование квантово-устойчивых (quantum-resistant) алгоритмов шифрования. Если не все открытые ключи являются квантово-устойчивыми, шифрование завершится ошибкой. Использование алгоритма симметричного шифрования AES-256 также обеспечивается этой опцией. При расшифровке выводится предупреждение для всех неквантово-устойчивых ключей. На данный момент алгоритмы Kyber (ML-KEM768 и ML-KEM1024) и AES-256 считаются квантово-устойчивыми; Kyber всегда используется в композитной схеме вместе с классическим ECC-алгоритмом.

--disable-pqc-encryption Эта опция отключает использование квантово-устойчивых подключей и использует подключ с неквантово-устойчивым алгоритмом, если он доступен, или выдает ошибку в противном случае. Опция игнорируется, если активна --require-pqc-encryption.

--require-compliance Чтобы проверить, что данные были зашифрованы в соответствии с правилами текущего режима соответствия, пользователю gpg необходимо анализировать строки статуса (status lines). Это позволяет интерфейсам (frontends) обрабатывать проверку соответствия более гибким способом. Однако для использования в скриптах необходимый анализ строк статуса требует значительных усилий; вместо этого можно использовать эту опцию, чтобы убедиться, что процесс gpg завершится с ошибкой, если правила соответствия не выполнены. Обратите внимание, что в настоящее время эта опция имеет эффект только в режиме "de-vs".


Таблица опций соответствия GnuPG

Опция Описание
--gnupg По умолчанию. Поведение GnuPG (OpenPGP + расширения + обходные пути для совместимости с PGP).
--openpgp Строгое соответствие OpenPGP. Сбрасывает алгоритмы к стандартным значениям. Разрешает старые алгоритмы шифрования.
--rfc4880 Строгое соответствие RFC-4880 (в настоящее время эквивалентно --openpgp). Разрешает старые алгоритмы шифрования.
--rfc4880bis Строгое соответствие предлагаемым обновлениям RFC-4880.
--rfc2440 Опасно. Строгое соответствие устаревшему RFC-2440. Создает шифрование без защиты MDC. Разрешает старые алгоритмы.
--pgp7 Максимальная совместимость с PGP 7. Разрешает старые алгоритмы (IDEA, 3DES, CAST5, MD5 и др.), включает --escape-from-lines, отключает --throw-keyids.
--pgp8 Совместимость с PGP 8. Близко к OpenPGP. Отключает --throw-keyids, включает --escape-from-lines. Запрещает только хеши SHA224/384/512.
--compliance string Универсальная опция. В качестве string используйте значения выше без -- (например, openpgp, rfc4880).
--min-rsa-length n Ужесточает требования к размеру ключа в режиме "de-vs" (например, n=3000 сделает ключи RSA2048 несоответствующими).
--require-pqc-encryption Требует использования квантово-устойчивых алгоритмов шифрования (Kyber) и AES-256. Шифрование завершится ошибкой, если не все ключи соответствуют.
--disable-pqc-encryption Отключает использование квантово-устойчивых подключей. Предпочитает классические алгоритмы. Игнорируется, если активен --require-pqc-encryption.
--require-compliance Заставляет gpg завершаться с ошибкой, если правила текущего режима соответствия (например, de-vs) не выполнены. Упрощает проверку в скриптах.

4.6 - Дополнительные опции

Дополнительные опции для настройки и управления pgp

Таблица опций GnuPG (PGP)

Опция (Оригинал) Короткая опция Перевод на русский язык и пояснение
–dry-run -n Пробный запуск. Не вносить никаких изменений (реализовано не полностью).
–list-only Только список. Изменяет поведение некоторых команд. Похоже на --dry-run, но в некоторых случаях работает иначе.
–interactive -i Интерактивный режим. Запрашивать подтверждение перед перезаписью любых файлов.
–compatibility-flags flags Флаги совместимости. Установить флаги для обхода проблем, вызванных несоответствующими стандарту ключами или данными.
–debug-level level Уровень отладки. Выбрать уровень детализации отладочных сообщений для исследования проблем.
–debug flags Флаги отладки. Установить конкретные флаги отладки. Полезно только для разработчиков.
–debug-all Отладка всё. Установить все полезные флаги отладки.
–debug-iolbf Буферизация вывода. Установить буферизацию stdout построчной.
–debug-set-iobuf-size n Размер буфера I/O. Изменить размер буфера IOBUFs до n килобайт. Только для сопровождающих.
–debug-allow-large-chunks Большие чанки. Для тестов позволяет указать размер блока до 4 ЭиБ.
–debug-ignore-expiration Игнорировать истечение срока. Пытается переопределить даты истечения срока действия ключа. Для тестов.
–faked-system-time epoch Поддельное системное время. Устанавливает системное время назад или вперед. Только для тестирования.
–full-timestrings Полные строки времени. Изменяет формат вывода времени создания и истечения с даты на дату и время.
–enable-progress-filter Фильтр прогресса. Включает вывод статуса PROGRESS для индикации прогресса обработки больших файлов.
–status-fd n Дескриптор статуса. Записывает специальные статусные строки в файловый дескриптор n.
–status-file file Файл статуса. То же, что и --status-fd, но записывает данные в файл.
–logger-fd n Дескриптор лога. Записывает вывод лога в файловый дескриптор n, а не в STDERR.
–log-file, –logger-file file Файл лога. То же, что и --logger-fd, но записывает данные в файл.
–log-time Время в логе. Добавляет ко всему лог-выводу временную метку, даже если файл лога не используется.
–attribute-fd n Дескриптор атрибутов. Записывает подпакеты атрибутов в файловый дескриптор n.
–attribute-file file Файл атрибутов. То же, что и --attribute-fd, но записывает данные в файл.
–comment string Комментарий. Использовать string как строку комментария в чистых подписях и ASCII-зашифрованных сообщениях.
–no-comments Без комментариев. Удалить все комментарии.
–emit-version Выводить версию. Принудительно добавлять строку версии в ASCII-вывод.
–no-emit-version Не выводить версию. Не добавлять строку версии (по умолчанию).
–sig-notation, –cert-notation, –set-notation {name=value} -N Нотация подписи/сертификата. Поместить пару “имя=значение” в подпись в качестве данных нотации.
–known-notation name Известная нотация. Добавить name в список известных критических нотаций подписи.
–sig-policy-url, –cert-policy-url, –set-policy-url string URL политики. Использовать string как URL политики для подписей.
–sig-keyserver-url string URL keyserver’а. Использовать string как предпочтительный URL keyserver’а для подписей данных.
–set-filename string Установить имя файла. Использовать string как имя файла, хранящееся внутри сообщений.
–for-your-eyes-only Только для ваших глаз. Установить флаг ‘только для ваших глаз’ в сообщении.
–no-for-your-eyes-only Не только для ваших глаз. Отключить опцию выше.
–use-embedded-filename Исп. встроенное имя файла. Попытаться создать файл с именем, встроенным в данные. Опасно.
–no-use-embedded-filename Не исп. встроенное имя. Не использовать встроенное имя файла (по умолчанию).
–cipher-algo name Алгоритм шифрования. Использовать name как алгоритм шифрования. Нарушает стандарт.
–digest-algo name Алгоритм хеширования. Использовать name как алгоритм хеш-суммы. Нарушает стандарт.
–compress-algo name Алгоритм сжатия. Использовать алгоритм сжатия name. Нарушает стандарт.
–cert-digest-algo name Алгоритм хеша для сертификатов. Использовать name как алгоритм хеш-суммы при подписи ключа.
–disable-cipher-algo name Запретить алгоритм шифр. Никогда не разрешать использование алгоритма name.
–disable-pubkey-algo name Запретить алгоритм подписи. Никогда не разрешать использование алгоритма name.
–throw-keyids Скрыть ID ключей. Не помещать ID ключей получателей в зашифрованные сообщения.
–no-throw-keyids Не скрывать ID ключей. Отключает опцию выше.
–not-dash-escaped Без экранирования дефисом. Меняет поведение чистых подписей для использования с файлами патчей.
–escape-from-lines Экранировать строки “From”. Обрабатывать строки, начинающиеся с “From “, особым образом.
–no-escape-from-lines Не экранировать “From”. Отключает опцию выше.
–passphrase-repeat n Повтор пароля. Указать, сколько раз запрашивать повторение новой парольной фразы.
–passphrase-fd n Дескриптор пароля. Читать парольную фразу из файлового дескриптора n.
–passphrase-file file Файл пароля. Читать парольную фразу из файла file.
–passphrase string Парольная фраза. Использовать string как парольную фразу. Опасно.
–pinentry-mode mode Режим pinentry. Установить режим ввода пароля (ask, cancel, error, loopback).
–no-symkey-cache Отключить кеш пароля. Отключает кеш парольных фраз, используемый для симметричного шифрования.
–request-origin origin Источник запроса. Сообщить GnuPG, откуда пришел запрос (local, remote, browser).
–command-fd n Дескриптор команд. Читать пользовательский ввод для вопросов из файлового дескриптора n.
–command-file file Файл команд. То же, что и --command-fd, но читает команды из файла.
–allow-non-selfsigned-uid Разрешить не самоподписанные UID. Разрешить импорт ключей с пользовательскими ID, которые не самоподписаны. Не рекомендуется.
–no-allow-non-selfsigned-uid Запретить не самоподписанные UID. Запрещает опцию выше.
–allow-freeform-uid Свободная форма UID. Отключить все проверки формы пользовательского ID при генерации нового.
–ignore-time-conflict Игнорировать конфликт времени. Превратить проверки временных меток в предупреждения.
–ignore-valid-from Игнорировать “действует с”. Разрешить использование подобранных ключей, созданных в будущем.
–ignore-crc-error Игнорировать ошибку CRC. Позволить GnuPG игнорировать ошибки контрольной суммы CRC в ASCII-armor.
–ignore-mdc-error Игнорировать ошибку MDC. Превратить сбой защиты целостности MDC в предупреждение. Используйте с осторожностью.
–allow-old-cipher-algos Разрешить старые шифры. Разрешить использование старых алгоритмов с размером блока 64 бита (3DES, IDEA).
–allow-weak-digest-algos Разрешить слабые хеши. Разрешить проверку подписей, сделанных со слабыми алгоритмами хеширования (напр., MD5).
–weak-digest name Слабый хеш. Считать указанный алгоритм хеширования слабым.
–allow-weak-key-signatures Разрешить слабые подписи ключей. Разрешить подписи ключей третьих сторон, сделанные с использованием SHA-1.
–override-compliance-check Переопределить проверку соответствия. Устаревшая опция, больше не имеет эффекта.
–no-default-keyring Без ключевого кольца по умолчанию. Не добавлять ключевое кольцо по умолчанию в список keyring’ов.
–no-keyring Без ключевых колец. Не использовать никакие ключевые кольца вообще.
–skip-verify Пропустить проверку. Пропустить шаг проверки подписи для ускорения расшифровки.
–with-key-data С данными ключа. Печатать данные открытого ключа в выводе списка.
–list-signatures, –list-sigs Список подписей. То же, что --list-keys, но также列出 подписи (без их проверки).
–fast-list-mode Быстрый режим списка. Изменить вывод команд списка для более быстрой работы (опуская часть информации).
–no-literal Без literal. Не для нормального использования.
–set-filesize Установить размер файла. Не для нормального использования.
–show-session-key Показать сеансовый ключ. Показать сеансовый ключ, использованный для сообщения.
–show-only-session-key Только показать сеансовый ключ. Только показать сеансовый ключ, но не обрабатывать сообщение дальше.
–override-session-key string Переопределить сеансовый ключ. Не использовать открытый ключ, а использовать указанный сеансовый ключ.
–override-session-key-fd fd Переопределить сеансовый ключ (fd). То же, что и выше, но ключ читается из файлового дескриптора.
–ask-sig-expire Спрашивать срок подписи. При создании подписи данных запрашивать срок ее действия.
–no-ask-sig-expire Не спрашивать срок подписи. Отключает опцию выше.
–default-sig-expire value Срок подписи по умолчанию. Срок действия по умолчанию для подписей данных (напр., “2m”, “5y”).
–ask-cert-expire Спрашивать срок сертификата. При подписи ключа запрашивать срок действия подписи.
–no-ask-cert-expire Не спрашивать срок сертификата. Отключает опцию выше.
–default-cert-expire value Срок сертификата по умолчанию. Срок действия по умолчанию для подписей ключей.
–default-new-key-algo string Алгоритм ключа по умолчанию. Изменить алгоритмы по умолчанию для генерации ключей (напр., “ed25519/cert,sign+cv25519/encr”).
–no-auto-trust-new-key Не доверять новому ключу автоматически. Не устанавливать доверие новому ключу в “ultimate” при создании.
–force-sign-key Принудительная подпись ключа. Принудительно создавать подпись ключа, даже если она уже существует.
–forbid-gen-key Запретить генерацию ключа. Запретить использование команд генерации ключей.
–allow-secret-key-import Разрешить импорт секретных ключей. Устаревшая опция, не используется.
–allow-multiple-messages Разрешить множественные сообщения. Устаревшая опция, не имеет эффекта.
–no-allow-multiple-messages Запретить множественные сообщения. Устаревшая опция, не имеет эффекта.
–enable-special-filenames Специальные имена файлов. Включить режим, где имена вида -&n ссылаются на файловый дескриптор n.
–disable-fd-translation Отключить трансляцию дескрипторов. Только для Windows.
–no-expensive-trust-checks Без дорогих проверок доверия. Только для экспериментального использования.
–preserve-permissions Сохранить права доступа. Не менять права доступа к файлу секретного ключа. Только для экспертов.
–default-preference-list string Список предпочтений по умолчанию. Установить список предпочтений по умолчанию для новых ключей.
–default-keyserver-url name URL keyserver’а по умолчанию. Установить URL keyserver’а по умолчанию для записи в самоподписи.
–list-config Список конфигурации. Показать различные внутренние параметры конфигурации GnuPG.
–list-gcrypt-config Конфигурация Libgcrypt. Показать параметры конфигурации Libgcrypt.
–gpgconf-list Список для gpgconf. Аналогично --list-config, но для использования утилитой gpgconf.
–gpgconf-test Тест gpgconf. Провести синтаксическую проверку файла конфигурации.
–chuid uid Сменить пользователя. Сменить текущего пользователя на uid (число или имя). Только из-под root.

4.7 - Config

Создание и редактирование конфигурационного файла.

Файлы конфигурации

Существует несколько файлов конфигурации для управления определенными аспектами работы gpg. Если не указано иное, они ожидаются в текущем домашнем каталоге (см. опцию --homedir).

gpg.conf Это стандартный файл конфигурации, читаемый gpg при запуске. Он может содержать любые допустимые длинные опции; начальные два дефиса указывать не нужно, и опцию нельзя сокращать. Это имя по умолчанию можно изменить в командной строке (см. опцию gpg --options). Вам следует создавать резервные копии этого файла.

common.conf Это необязательный файл конфигурации, читаемый gpg при запуске. Он может содержать опции, относящиеся ко всем компонентам GnuPG. В настоящее время его основное использование — для опции "use-keyboxd". Если домашний каталог по умолчанию ~/.gnupg не существует, GnuPG создает этот каталог и файл common.conf с "use-keyboxd".

Примечание: В крупных системах полезно размещать предопределенные файлы в каталоге /usr/local/etc/skel/.gnupg, чтобы новые пользователи начинали работу с готовой конфигурацией. Для существующих пользователей предоставляется небольшой вспомогательный скрипт для создания этих файлов (см. addgnupghome).

Для внутренних целей gpg создает и поддерживает несколько других файлов; все они находятся в текущем домашнем каталоге (см. опцию --homedir). Только программа gpg может изменять эти файлы.

~/.gnupg Это домашний каталог по умолчанию, который используется, если не задана ни переменная окружения GNUPGHOME, ни опция --homedir.

~/.gnupg/pubring.gpg Публичный ключевой контейнер (keyring) в устаревшем формате. Вам следует создавать резервные копии этого файла.

Если этот файл недоступен, gpg по умолчанию использует новый формат keybox и создает файл pubring.kbx, если только этот файл уже не существует, в этом случае он также будет использоваться для ключей OpenPGP.

Примечание: Если существуют оба файла, pubring.gpg и pubring.kbx, но в последнем нет ключей OpenPGP, будет использоваться устаревший файл pubring.gpg. Будьте осторожны: версии GnuPG до 2.1 всегда будут использовать файл pubring.gpg, потому что они не знают о новом формате keybox. Если вам придется использовать GnuPG 1.4 для расшифровки архивных данных, вам следует сохранить этот файл.

~/.gnupg/pubring.gpg.lock Файл блокировки (lock file) для публичного ключевого контейнера.

~/.gnupg/pubring.kbx Публичный ключевой контейнер в новом формате keybox. Этот файл используется совместно с gpgsm. Вам следует создавать резервные копии этого файла. См. выше связь между этим файлом и его предшественником.

Чтобы преобразовать существующий файл pubring.gpg в формат keybox, вы сначала создаете резервную копию значений доверия (ownertrust), затем переименовываете pubring.gpg в publickeys.backup (чтобы он не распознавался любой версией GnuPG), запускаете импорт и, наконец, восстанавливаете значения доверия:

$ cd ~/.gnupg
$ gpg --export-ownertrust >otrust.lst
$ mv pubring.gpg publickeys.backup
$ gpg --import-options restore --import publickeys.backup
$ gpg --import-ownertrust otrust.lst

~/.gnupg/pubring.kbx.lock Файл блокировки для pubring.kbx.

~/.gnupg/secring.gpg Устаревший контейнер секретных ключей, используемый версиями GnuPG до 2.1. Он не используется GnuPG 2.1 и позднее. Вы можете захотеть сохранить его на случай, если вам придется использовать GnuPG 1.4 для расшифровки архивных данных.

~/.gnupg/secring.gpg.lock Файл блокировки для устаревшего контейнера секретных ключей.

~/.gnupg/.gpg-v21-migrated Файл, указывающий, что миграция на GnuPG 2.1 была выполнена.

~/.gnupg/trustdb.gpg База данных доверия (trust database). Нет необходимости создавать резервные копии этого файла; лучше создать резервную копию значений доверия владельца (см. опцию --export-ownertrust).

~/.gnupg/trustdb.gpg.lock Файл блокировки для базы данных доверия.

~/.gnupg/random_seed Файл, используемый для сохранения состояния внутреннего пула случайных чисел.

~/.gnupg/openpgp-revocs.d/ Это каталог, в котором gpg хранит предварительно сгенерированные отзывные сертификаты. Имя файла соответствует отпечатку OpenPGP соответствующего ключа. Рекомендуется создавать резервные копии этих сертификатов и, если основной закрытый ключ не хранится на диске, перемещать их на внешнее запоминающее устройство. Любой, кто имеет доступ к этим файлам, может отозвать соответствующий ключ. Вы можете распечатать их. Вам следует создавать резервные копии всех файлов в этом каталоге и позаботиться о том, чтобы эта резервная копия хранилась в надежном месте.

Работа дополнительно контролируется несколькими переменными окружения:

HOME Используется для определения местоположения домашнего каталога по умолчанию.

GNUPGHOME Если установлена, указывает каталог, используемый вместо "~/.gnupg".

GPG_AGENT_INFO Эта переменная устарела; она использовалась версиями GnuPG до 2.1.

PINENTRY_USER_DATA Это значение передается через gpg-agent в pinentry. Это полезно для передачи дополнительной информации пользовательскому pinentry.

COLUMNS LINES Используются для масштабирования некоторых дисплеев под полный размер экрана.

LANGUAGE Помимо своего использования в GNU, она используется в версии для W32 (Windows) для переопределения выбора языка, сделанного через реестр. Если она используется и установлена в допустимое и доступное имя языка (langid), файл с переводом загружается из gpgdir/gnupg.nls/langid.mo. Здесь gpgdir — это каталог, из которого был загружен бинарный файл gpg. Если его не удается загрузить, предпринимается попытка использовать реестр, и в крайнем случае используется родная система локалей Windows.

GNUPG_BUILD_ROOT Эта переменная используется только набором регрессионных тестов в качестве вспомогательного средства в операционных системах без надлежащей поддержки для определения имени текстового файла процесса.

GNUPG_EXEC_DEBUG_FLAGS Эта переменная позволяет включить диагностику для управления процессами. Ожидается десятичное числовое значение. Бит 0 включает общую диагностику, бит 1 включает определенные предупреждения в Windows.

GNUPG_ASSUME_COMPLIANCE Вспомогательная переменная для отладки, чтобы перевести систему в состояние предположения о соответствии. Например, в режиме de-vs это вернет 2023 в качестве идентификатора вместо 23.

При вызове компонента gpg-agent программа gpg отправляет набор переменных окружения в gpg-agent. Имена этих переменных можно перечислить с помощью команды:

gpg-connect-agent 'getinfo std_env_names' /bye | awk '$1=="D" {print $2}'

5 - gpgsm

gpgsm — это инструмент, аналогичный gpg, который предоставляет услуги цифрового шифрования и подписи для сертификатов X.509 и протокола CMS. Он в основном используется в качестве бэкенда для обработки электронной почты S/MIME. gpgsm включает в себя полноценное управление сертификатами и соответствует всем правилам, установленным для немецкого проекта Sphinx.

6 - scdaemon

scdaemon — это демон для управления смарт-картами. Обычно он вызывается gpg-agent и, как правило, не используется напрямую.

7 - user id

Существует несколько способов указать идентификатор пользователя для GnuPG. Некоторые из них действительны только для gpg, другие — только для gpgsm. Вот полный список способов указания ключа:
  • По идентификатору ключа. Этот формат определяется по длине строки и её содержимому или префиксу 0x. Идентификатор ключа X.509 сертификата — это младшие 64 бита его SHA-1 отпечатка. Использование идентификаторов ключей — это просто сокращение; для всей автоматизированной обработки следует использовать отпечаток.

    При использовании gpg можно добавить восклицательный знак (!), чтобы принудительно использовать указанный основной или вторичный ключ, а не пытаться вычислить, какой основной или вторичный ключ использовать.

    Последние четыре строки примера дают идентификатор ключа в длинной форме, как это используется в протоколе OpenPGP. Вы можете увидеть длинный идентификатор ключа, используя опцию --with-colons.

    234567C4
    0F34E556E
    01347A56A
    0xAB123456
    
    234AABBCC34567C4
    0F323456784E56EAB
    01AB3FED1347A5612
    0x234AABBCC34567C4
    
  • По отпечатку. Этот формат определяется по длине строки и её содержимому или префиксу 0x. Обратите внимание, что только 20-байтовая версия отпечатка доступна с gpgsm (т.е. SHA-1 хэш сертификата).

    При использовании gpg можно добавить восклицательный знак (!), чтобы принудительно использовать указанный основной или вторичный ключ, а не пытаться вычислить, какой основной или вторичный ключ использовать.

    Лучший способ указать идентификатор ключа — использовать отпечаток. Это избегает любых неоднозначностей в случае дублирования идентификаторов ключей.

    1234343434343434C434343434343434
    123434343434343C3434343434343734349A3434
    0E12343434343434343434EAB3484343434343434
    0xE12343434343434343434EAB3484343434343434
    

    gpgsm также принимает двоеточия между каждой парой шестнадцатеричных цифр, поскольку это де-факто стандарт представления отпечатков X.509. gpg также позволяет использовать SHA-1 отпечаток, разделенный пробелами, как это выводится командами для отображения ключей.

  • По точному совпадению с идентификатором пользователя OpenPGP. Это обозначается ведущим знаком равенства. Это не имеет смысла для сертификатов X.509.

    =Heinrich Heine <heinrichh@uni-duesseldorf.de>
    
  • По точному совпадению с адресом электронной почты. Это указывается заключением адреса электронной почты в угловые скобки.

    <heinrichh@uni-duesseldorf.de>
    
  • По частичному совпадению с адресом электронной почты. Это указывается префиксом строки поиска символом @. Это использует поиск подстроки, но учитывает только адрес электронной почты (т.е. внутри угловых скобок).

    @heinrichh
    
  • По точному совпадению с DN субъекта. Это указывается ведущим слэшем, за которым непосредственно следует закодированный в RFC-2253 DN субъекта. Обратите внимание, что вы не можете использовать строку, напечатанную командой gpgsm --list-keys, потому что она была переупорядочена и изменена для лучшей читаемости; используйте --with-colons, чтобы напечатать необработанную (но стандартно экранированную) строку RFC-2253.

    /CN=Heinrich Heine,O=Poets,L=Paris,C=FR
    
  • По точному совпадению с DN издателя. Это указывается ведущим символом решетки, за которым непосредственно следует слэш, а затем закодированный в RFC-2253 DN издателя. Это должно вернуть корневой сертификат издателя. См. примечание выше.

    #/CN=Root Cert,O=Poets,L=Paris,C=FR
    

8 - сравнение SSH и PGP

Наглядное сравнение SSH и PGP систем и их использование

SSH и PGP ключи — это два столпа современной кибербезопасности, но они решают совершенно разные задачи. Их часто путают, потому что оба используют асимметричную криптографию (пары из открытого и закрытого ключей).

Проще всего запомнить так:

  • SSH-ключи — это пропуск. Их основная задача — аутентификация (доказательство того, что вы имеете право доступа к чему-либо).
  • PGP-ключи — это универсальный инструмент. Их задачи — шифрование (чтобы не могли прочитать), подпись (чтобы могли проверить авторство и целостность) и иногда аутентификация.

Сравнительная таблица: SSH vs PGP ключи

Критерий SSH-ключи (Secure Shell) PGP-ключи (Pretty Good Privacy)
Основное назначение Аутентификация и установка безопасного канала. Предоставление доступа к чему-либо (серверу, Git-репозиторию, etc.) без пароля. Шифрование, подпись, аутентификация. Защита конфиденциальности и целостности данных (почты, файлов, ПО).
Главная задача Доказать серверу, что вы — это вы. 1. Зашифровать данные для конкретного получателя.
2. Подписать данные, чтобы подтвердить авторство.
3. Зашифровать данные (например, файлы).
Типичное применение Вход на удаленные серверы (Linux), безопасная передача файлов (SCP, SFTP), работа с Git (GitHub, GitLab). Шифрование электронной почты, подписание коммитов в Git, проверка целостности скачанного ПО (например, дистрибутивов Linux), шифрование файлов.
Формат и структура Относительно простой. Чаще всего это пары файлов: id_rsa (закрытый) и id_rsa.pub (открытый). Используют алгоритмы вроде RSA, Ed25519. Сложная и богатая структура. Ключ содержит много метаданных: имя, email, даты создания/истечения, возможности ключа (может ли он шифровать, подписывать), отпечаток (fingerprint), а также может состоять из подключей.
Доверие (Trust Model) Простое и централизованное. Вы вручную копируете свой открытый ключ на нужный сервер (в файл ~/.ssh/authorized_keys). Сервер доверяет тому, у кого есть соответствующий закрытый ключ. Децентрализованное (Веб доверия - Web of Trust). Вы можете подписывать ключи других людей, подтверждая, что доверяете их подлинности. Цепочка таких подписей создает сеть доверия.
Идентификация Понимается сервером. Обычно привязана к пользователю на конкретном сервере. Привязана к человеку (через имя и email в ключе).
Отзыв ключа Удаление открытого ключа из файла authorized_keys на сервере. Создание и широкое распространение сертификата отзыва (Revocation Certificate), который объявляет ключ недействительным.

Наглядные схемы работы

1. Схема работы SSH-ключа для доступа к серверу

flowchart TD
    subgraph User [Пользователь на своем компьютере]
        A[Запрос подключения к серверу] --> B[SSH-клиент предъявляет<br>свой Открытый ключ]
        A --> C[Сервер отправляет<br>«Вызов» случайными данными]
        C --> D[SSH-клиент подписывает «Вызов»<br>своим Закрытым ключом]
        D --> E[Отправляет подпись серверу]
    end

    subgraph Server [Удаленный сервер]
        B --> F[Сервер проверяет<br>есть ли присланный Открытый ключ<br>в файле authorized_keys]
        E --> G[Сервер проверяет подпись<br>«Вызова» с помощью<br>найденного Открытого ключа]
        G -- Подпись верна --> H[✅ Аутентификация успешна<br>Доступ разрешен]
        G -- Подпись неверна --> I[❌ Доступ запрещен]
    end

2. Схема работы PGP-ключа для подписи данных

flowchart TD
    subgraph Sender [Отправитель Подписывает данные]
        A[Исходные данные] --> B[Создает их хэш отпечаток]
        B --> C[Подписывает хэш<br>своим Закрытым PGP-ключом]
        C --> D[Цифровая подпись]
        A --> E[Объединяет исходные данные<br>и подпись для отправки]
        D --> E
    end

    subgraph Receiver [Получатель Проверяет подпись]
        E --> F[Разделяет полученное<br>на данные и подпись]
        F --> G[Вычисляет хэш<br>от полученных данных]
        F --> H[Расшифровывает подпись<br>Открытым PGP-ключом отправителя<br>и получает оригинальный хэш]
        G --> I{Сравнивает хэши}
        H --> I
        I -- Совпали --> J[✅ Подпись верна<br>Данные подлинны и не изменены]
        I -- Не совпали --> K[❌ Подпись неверна!<br>Данные отклонены]
    end

Ключевые выводы и аналогия

Представьте себе большую охраняемую территорию:

  • SSH-ключ — это пропускная карта, которую вы прикладываете к турникету. Турникет (сервер) проверяет, есть ли номер вашей карты в базе разрешенных номеров. Если есть — вас пускают. Задача решена.
  • PGP-ключ — это ваша печать и набор секретных кодов.
    • Шифрование: Вы можете положить документ в шкатулку и запереть ее на кодовый замок, который откроется только кодом конкретного получателя.
    • Подпись: Вы можете запечатать документ сургучной печатью. Любой, у кого есть оттиск вашей печати (ваш открытый ключ), может убедиться, что документ распечатали вы и его не вскрывали.

Можно ли использовать PGP-ключ для SSH? Технически да, это возможно через дополнительные надстройки (например, gpg-agent может работать как ssh-agent). Это позволяет использовать один главный PGP-ключ для множества задач (почта, подпись кода, доступ к серверам). Но «из коробки» эти системы не совместимы.