Як працює агент GPG?


31

У файлі gpg.conf у мене є рядок, який говорить use-agent.
Я розумію, це стосується gpg-агента, який є демон. На головній сторінці зазначено, що "gpg-agent - це демон, який може керувати секретними (приватними) ключами незалежно від будь-якого протоколу. Він використовується як допоміжний для gpg та gpgsm, а також для пари інших утиліт".

Хтось може пояснити, що це означає в контексті gpg? У чому сенс gpg-агента?

У мене зараз GPG 1.4.

  1. Як я можу визначити, чи працює агент? Мені фактично навіть не зрозуміло, чи встановлений gpg-агент із базовим пакетом GPG 1.4.
  2. Як я можу його запустити, якщо він не працює?
  3. Як я можу його зупинити, якщо він працює?

Відповіді:


38

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

Основний сенс використання ключового агента полягає в тому, що вам не доведеться вводити свою парольну фразу щоразу, коли ви використовуєте свій ключ. Агент зберігає ключ в пам'яті від одного разу до іншого. GPG сам не може цього зробити, оскільки процес припиняється після того, як буде зроблено свою роботу.

Ще одна річ, яку може зробити ключовий агент, - це дозволити GPG, що працює на віддаленій машині, отримати ключі в локальному агенті (які можуть завантажувати їх з локального файлу та запитувати про вашу парольну фразу). Gpg-агент ще не може цього зробити, це запланована функція . SSH вже давно здійснює переадресацію агента. (Це причина не використовувати gpg-агент для 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-агента через сокет і запитує ключ. Якщо процес агента має ключ, він надає йому gpg." Трохи оманливий. Агент не надає ключ до клієнтського процесу. Натомість він виконує дії, використовуючи ключ від імені клієнтського процесу. (Клієнт надає агенту щось для підписання, шифрування чи розшифрування. Агент це робить.) Під час використання агента ваше програмне забезпечення SSH та GPG ніколи не отримує доступ до фактичного ключа.
Пітер Самуельсон

3
"Gpg-агент цього ще не може зробити, це запланована функція. SSH дуже довго проводила переадресацію агента. (Це причина не використовувати gpg-агент для SSH-ключів.)" Не зовсім правда. gpg-агент прекрасно працює з переадресацією агента SSH. Я використовую його щодня. Клієнт SSH обробляє переадресацію, gpg-агент насправді в цьому не бере участь. Те, що не підтримується, - це те, щоб GPG сам розмовляв з агентом віддалено.
Пітер Самуельсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.