Как работает агент GPG?


31

У меня в файле gpg.conf есть строка с надписью use-agent.
Я понимаю, что это относится к gpg-agent, который является демоном. Страница man гласит: «gpg-agent - это демон для управления секретными (закрытыми) ключами независимо от любого протокола. Он используется в качестве бэкенда для gpg и gpgsm, а также для нескольких других утилит».

Кто-нибудь может объяснить, что это значит в контексте gpg? Какой смысл в gpg-agent?

У меня сейчас GPG 1.4.

  1. Как я могу узнать, работает ли агент? На самом деле мне даже не ясно, установлен ли gpg-agent с базовым пакетом GPG 1.4.
  2. Как я могу запустить его, если он не запущен?
  3. Как я могу остановить это, если он работает?

Ответы:


38

Gpg-agent - это программа, которая работает в фоновом режиме ( демон ) и хранит секретные ключи GPG в памяти. Когда процессу GPG требуется ключ, он связывается с запущенной программой gpg-agent через сокет и запрашивает ключ. Если процесс агента имеет ключ, он предоставляет его gpg. Если это не так, он пытается загрузить зашифрованный ключ из вашей связки ключей и запрашивает у вас пароль. Как только агент получил расшифрованный ключ, он передает его процессу gpg. В дополнение к ключам GPG, Gpg-agent может аналогичным образом хранить ключи SSH и предоставлять их процессам SSH, подобно ssh-agentпрограмме, которая поставляется с SSH.

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

Еще одна вещь, которую может сделать ключевой агент, - это разрешить GPG, запущенному на удаленной машине, получать ключи в локальном агенте (который может загружать их из локального файла и запрашивать вашу фразу-пароль). Gpg-agent пока не может этого сделать, это запланированная функция . У SSH очень долгое время была пересылка агентов. (Это причина не использовать gpg-agent для ключей SSH.)

GPG 1.x или 2.0.x знает, что агент работает, потому что GPG_AGENT_INFOпеременная установлена. Эта переменная содержит расположение сокета для связи с агентом, а также идентификатор процесса агента. GPG 2.1 всегда помещает сокет агента в ~/.gnupg. GPG 2.x всегда запускает процесс агента, если он не запущен.

Вы можете запустить агент просто запустив gpg-agent. Если вы хотите сохранить процесс агента как часть вашего сеанса, вы можете заменить вызов вашего менеджера сеанса на gpg-agent my-session-manager; некоторые дистрибутивы устанавливают это автоматически. GPG автоматически запустит агент, а GPG 2.1 дополнительно найдет работающий агент без необходимости использования переменной среды, поэтому вам не нужно запускать его таким образом, если вы не используете более старую версию GPG или не используете агент для хранения других типов. ключей, таких как SSH.

Вы можете отправить команды агента с помощью командыgpg-connect-agent оболочки. Отправьте killкоманду, чтобы убить процесс агента (или отправьте ему сигнал).

Gpg-агент поставляется с самой GPG. Некоторые дистрибутивы упаковывают его отдельно.


6
«Когда процессу GPG требуется ключ, он связывается с запущенной программой gpg-agent через сокет и запрашивает ключ. Если процесс агента имеет ключ, он передает его gpg». Слегка вводит в заблуждение. Агент не предоставляет ключ для клиентского процесса. Вместо этого он выполняет действия с использованием ключа от имени клиентского процесса. (Клиент предоставляет агенту что-то для подписи, шифрования или дешифрования, и агент делает это.) При использовании агента ваше клиентское программное обеспечение SSH и GPG никогда не получает доступ к фактическому ключу.
Питер Самуэльсон

3
«Gpg-agent пока не может этого сделать, это запланированная функция. SSH уже очень давно пересылает агентов. (Это причина не использовать gpg-agent для ключей SSH.)» Не совсем так. gpg-agent отлично работает с переадресацией агента SSH. Я использую это каждый день. Клиент SSH обрабатывает пересылку, gpg-agent на самом деле не участвует в этом. Что не поддерживается, так это то, что сама GPG общается с агентом удаленно.
Питер Самуэльсон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.