GnuPG/Agent: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
K Textersetzung - „== Syntax ==“ durch „== Aufruf ==“
 
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''GPG-Agent'' - Hintergrundprogramm für gecachte Passwörter.
'''GnuPG-Agent''' - Hintergrundprogramm für gecachte Passwörter


== Beschreibung ==
== Beschreibung ==
Wie der ssh-agent (bei [[OpenSSH]]) dient der gpg-agent, der seit GnuPG 2.0.x integraler Bestandteil ist, unter anderem dazu, die Passphrase für einen konfigurierbaren Zeitraum im Arbeitsspeicher zu halten, sodass eine erneute Eingabe entfällt; gpg-agent speichert die Passphrase aber nicht nur, sondern übernimmt auch ihre Abfrage vom Anwender (über ein konfigurierbares Hilfsprogramm).
Wie der ssh-agent (bei [[OpenSSH]]) dient der gpg-agent, der seit GnuPG 2.0.x integraler Bestandteil ist, unter anderem dazu, die Passphrase für einen konfigurierbaren Zeitraum im Arbeitsspeicher zu halten, sodass eine erneute Eingabe entfällt; gpg-agent speichert die Passphrase aber nicht nur, sondern übernimmt auch ihre Abfrage vom Anwender (über ein konfigurierbares Hilfsprogramm)
* Anders als bei OpenSSH ist der gpg-agent allerdings ab Version 2 von GnuPG zwingender Bestandteil; in der künftigen Version 2.1 werden sogar alle Operationen, die private Schlüssel beinhalten, an gpg-agent ausgelagert, was es ermöglicht, die Schlüssel auf einem anderen Rechner zu speichern und nur noch indirekt zu verwenden.
* Anders als bei OpenSSH ist der gpg-agent allerdings ab Version 2 von GnuPG zwingender Bestandteil; in der künftigen Version 2.1 werden sogar alle Operationen, die private Schlüssel beinhalten, an gpg-agent ausgelagert, was es ermöglicht, die Schlüssel auf einem anderen Rechner zu speichern und nur noch indirekt zu verwenden
* Die zweite wichtige Aufgabe von gpg-agent bei GnuPG 2.0.x ist der Zugriff auf Smartcards.
* Die zweite wichtige Aufgabe von gpg-agent bei GnuPG 2.0.x ist der Zugriff auf Smartcards


Der Kontakt zu einer Instanz von gpg-agent, die nicht den Standardsocket verwendet (es können mehrere gleichzeitig laufen, was aber meist nicht sinnvoll ist), wird über eine Umgebungsvariable ermöglicht.
Der Kontakt zu einer Instanz von gpg-agent, die nicht den Standardsocket verwendet (es können mehrere gleichzeitig laufen, was aber meist nicht sinnvoll ist), wird über eine Umgebungsvariable ermöglicht
* Ein Beispiel: Über den Befehl <code>gpg-agent --daemon thunderbird</code> wird der Mailclient [[Mozilla Thunderbird|Thunderbird]] gestartet, und zwar mit der Umgebungsvariable <code>GPG_AGENT_INFO</code>.
* Ein Beispiel: Über den Befehl <code>gpg-agent --daemon thunderbird</code> wird der Mailclient [[Mozilla Thunderbird|Thunderbird]] gestartet, und zwar mit der Umgebungsvariable <code>GnuPG_AGENT_INFO</code>
* Diese enthält eine Zeichenkette wie <code>/tmp/gpg-xY9Q7R/S.gpg-agent:2244:1</code> (Pfad des Socket, PID von gpg-agent (wird ignoriert) und Versionsnummer des Protokolls).
* Diese enthält eine Zeichenkette wie <code>/tmp/gpg-xY9Q7R/S.gpg-agent:2244:1</code> (Pfad des Socket, PID von gpg-agent (wird ignoriert) und Versionsnummer des Protokolls)
* Hierdurch kann das Mailprogramm Kontakt mit dem jeweiligen gpg-agent aufnehmen und ihm den Umgang mit den privaten Schlüsseln (und deren Passphrase) überlassen.
* Hierdurch kann das Mailprogramm Kontakt mit dem jeweiligen gpg-agent aufnehmen und ihm den Umgang mit den privaten Schlüsseln (und deren Passphrase) überlassen


Bei den meisten unixoiden Desktopumgebungen wird der gpg-agent gleich beim Start aktiviert.
Bei den meisten unixoiden Desktopumgebungen wird der gpg-agent gleich beim Start aktiviert
* Dadurch, dass das Startscript der Desktopumgebung diese Umgebungsvariable exportiert, haben alle Programme Zugriff darauf.
* Dadurch, dass das Startscript der Desktopumgebung diese Umgebungsvariable exportiert, haben alle Programme Zugriff darauf
* Wenn gpg-agent nicht läuft (oder nicht gefunden wird), wird es von gpg, gpgsm und gpgconf automatisch gestartet.
* Wenn gpg-agent nicht läuft (oder nicht gefunden wird), wird es von gpg, gpgsm und gpgconf automatisch gestartet
* Zugriff auf einen laufenden gpg-agent kann man in der Konsole über das Programm ''gpg-connect-agent'' bekommen.
* Zugriff auf einen laufenden gpg-agent kann man in der Konsole über das Programm ''gpg-connect-agent'' bekommen
* Mit dem Server kann man dann über das textbasierte Assuan-Protokoll<ref>[http://www.gnupg.org/documentation/manuals/gnupg/Agent-Protocol.html Beschreibung des Assuan-Protokolls auf der GnuPG-Webseite]</ref> kommunizieren.
* Mit dem Server kann man dann über das textbasierte Assuan-Protokoll kommunizieren
* Man kann gpg-agent daher auch unabhängig von OpenPGP und OpenSSH zur Verwaltung von Passphrasen für eigene Programme nutzen. Über die Konfigurationsdatei gpg-agent.conf wird u.&nbsp;a.
* Man kann gpg-agent daher auch unabhängig von OpenPGP und OpenSSH zur Verwaltung von Passphrasen für eigene Programme nutzen. Über die Konfigurationsdatei gpg-agent.conf wird u.&nbsp;a
* festgelegt, über welchen Zeitraum eine Passphrase gecacht wird.
* festgelegt, über welchen Zeitraum eine Passphrase gecacht wird


Man kann nicht direkt abfragen, welche Einträge gpg-agent gerade speichert, aber man kann testen, ob ein konkreter Eintrag vorhanden ist (und sich den auch anzeigen lassen).
Man kann nicht direkt abfragen, welche Einträge gpg-agent gerade speichert, aber man kann testen, ob ein konkreter Eintrag vorhanden ist (und sich den auch anzeigen lassen)
* GnuPG legt die Passphrase eines Schlüssels unter dessen Fingerprint ab (ggf.
* GnuPG legt die Passphrase eines Schlüssels unter dessen Fingerprint ab (ggf
* dem des betroffenen Unterschlüssels):
* dem des betroffenen Unterschlüssels):


    > gpg-connect-agent "GET_PASSPHRASE --data --no-ask 4F7E9F723D197D667842AE115F048E6F0E4B4494 t1 t2 t3" /bye
> gpg-connect-agent "GET_PASSPHRASE --data --no-ask 4F7E9F723D197D667842AE115F048E6F0E4B4494 t1 t2 t3" /bye
    D fubar
D fubar
    OK
OK


Ebenso kann man eine Passphrase setzen, sodass sie nicht vom Anwender abgefragt werden muss (etwa bei automatisierten Prozessen).
Ebenso kann man eine Passphrase setzen, sodass sie nicht vom Anwender abgefragt werden muss (etwa bei automatisierten Prozessen)
* Dafür gibt es sogar eine eigene Anwendung: gpg-preset-passphrase.
* Dafür gibt es sogar eine eigene Anwendung: gpg-preset-passphrase


Mit gpg-connect-agent kann man auch auf einfache Weise testen, ob gpg-agent überhaupt läuft (bzw.&nbsp;so läuft, dass es unmittelbar verwendet werden kann):
Mit gpg-connect-agent kann man auch auf einfache Weise testen, ob gpg-agent überhaupt läuft (bzw.&nbsp;so läuft, dass es unmittelbar verwendet werden kann):


    # gpg-connect-agent /bye
# gpg-connect-agent /bye
    gpg-connect-agent: can't connect to the agent: IPC "connect" Aufruf fehlgeschlagen
gpg-connect-agent: can't connect to the agent: IPC "connect" Aufruf fehlgeschlagen
 
== Funktion ==
*Das automatisch von GnuPG für die Eingabe und das Cachen von Passwörtern verwendet wird.
*Speichert das Passwort in einem Cache und fragt nur nach festlegbaren Zeitintervallen erneut danach.


; Funktion
*Das automatisch von GnuPG für die Eingabe und das Cachen von Passwörtern verwendet wird
*Speichert das Passwort in einem Cache und fragt nur nach festlegbaren Zeitintervallen erneut danach


== Installation ==
== Installation ==
Zeile 44: Zeile 43:
  # apt install gnupg-agent pinentry-curses
  # apt install gnupg-agent pinentry-curses


== Syntax ==
== Aufruf ==
=== Optionen ===
=== Optionen ===
{|class="wikitable"
{|class="wikitable"
!Option !! Beschreibung
!Option !! Beschreibung
|-
|-
| --daemon || Normaler Aufruf, um den Dämon zu starten.
| --daemon || Normaler Aufruf, um den Dämon zu starten
|-
|-
| --ignore-cache-for-signing || Erzwingt eine erneute Passworteingabe, um andere Schlüssel zu signieren.
| --ignore-cache-for-signing || Erzwingt eine erneute Passworteingabe, um andere Schlüssel zu signieren
|-
|-
| --default-cache-ttl n || Setzt die Zeit, wie lange ein Passwort im Cache bleibt, auf n Sekunden. Standard ist 600.
| --default-cache-ttl n || Setzt die Zeit, wie lange ein Passwort im Cache bleibt, auf n Sekunden. Standard ist 600
|-
|-
| --max-cache-ttl n || Setzt die maximale Zeit, wie lange ein Passwort im Cache bleibt, auf n Sekunden. Standard ist 7200 (2 Stunden).
| --max-cache-ttl n || Setzt die maximale Zeit, wie lange ein Passwort im Cache bleibt, auf n Sekunden. Standard ist 7200 (2 Stunden)
|-
|-
| --pinentry-program filename || Setzt explizit das Passworteingabeprogramm auf filename.
| --pinentry-program filename || Setzt explizit das Passworteingabeprogramm auf filename
|}
|}


=== Parameter ===
=== Parameter ===
=== Umgebungsvariablen ===
=== Umgebung ===
=== Exit-Status ===
=== Rückgabewert ===
== Anwendung ==
== Anwendung ==
=== Fehlerbehebung ===
=== Problembehebung ===
== Konfiguration ==
== Konfiguration ==
=== Dateien ===
=== Dateien ===
<noinclude>
<noinclude>
== Anhang ==
== Anhang ==
=== Siehe auch ===
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
----
----
* [[GPG]]
* [[GnuPG]]
* [[pinentry-curses]]
* [[pinentry-curses]]


Zeile 78: Zeile 78:
==== Dokumentation ====
==== Dokumentation ====
===== RFC =====
===== RFC =====
{| class="wikitable sortable options"
===== Man-Page =====
|-
! RFC !! Titel
|-
| [https://www.rfc-editor.org/rfc/0000 0000] ||
|}


===== Man-Pages =====
===== Info-Pages =====
==== Links ====
==== Links ====
===== Projekt =====
===== Projekt =====
===== Weblinks =====
===== Weblinks =====
# https://wiki.ubuntuusers.de/GPG-Agent/  
# https://wiki.ubuntuusers.de/GnuPG-Agent/
# https://wiki.ubuntuusers.de/GnuPG/
# https://wiki.ubuntuusers.de/GnuPG/
[[Kategorie:Kryptografie/Anwendung]]
</noinclude>
</noinclude>
[[Kategorie:GnuPG]]

Aktuelle Version vom 12. November 2024, 18:41 Uhr

GnuPG-Agent - Hintergrundprogramm für gecachte Passwörter

Beschreibung

Wie der ssh-agent (bei OpenSSH) dient der gpg-agent, der seit GnuPG 2.0.x integraler Bestandteil ist, unter anderem dazu, die Passphrase für einen konfigurierbaren Zeitraum im Arbeitsspeicher zu halten, sodass eine erneute Eingabe entfällt; gpg-agent speichert die Passphrase aber nicht nur, sondern übernimmt auch ihre Abfrage vom Anwender (über ein konfigurierbares Hilfsprogramm)

  • Anders als bei OpenSSH ist der gpg-agent allerdings ab Version 2 von GnuPG zwingender Bestandteil; in der künftigen Version 2.1 werden sogar alle Operationen, die private Schlüssel beinhalten, an gpg-agent ausgelagert, was es ermöglicht, die Schlüssel auf einem anderen Rechner zu speichern und nur noch indirekt zu verwenden
  • Die zweite wichtige Aufgabe von gpg-agent bei GnuPG 2.0.x ist der Zugriff auf Smartcards

Der Kontakt zu einer Instanz von gpg-agent, die nicht den Standardsocket verwendet (es können mehrere gleichzeitig laufen, was aber meist nicht sinnvoll ist), wird über eine Umgebungsvariable ermöglicht

  • Ein Beispiel: Über den Befehl gpg-agent --daemon thunderbird wird der Mailclient Thunderbird gestartet, und zwar mit der Umgebungsvariable GnuPG_AGENT_INFO
  • Diese enthält eine Zeichenkette wie /tmp/gpg-xY9Q7R/S.gpg-agent:2244:1 (Pfad des Socket, PID von gpg-agent (wird ignoriert) und Versionsnummer des Protokolls)
  • Hierdurch kann das Mailprogramm Kontakt mit dem jeweiligen gpg-agent aufnehmen und ihm den Umgang mit den privaten Schlüsseln (und deren Passphrase) überlassen

Bei den meisten unixoiden Desktopumgebungen wird der gpg-agent gleich beim Start aktiviert

  • Dadurch, dass das Startscript der Desktopumgebung diese Umgebungsvariable exportiert, haben alle Programme Zugriff darauf
  • Wenn gpg-agent nicht läuft (oder nicht gefunden wird), wird es von gpg, gpgsm und gpgconf automatisch gestartet
  • Zugriff auf einen laufenden gpg-agent kann man in der Konsole über das Programm gpg-connect-agent bekommen
  • Mit dem Server kann man dann über das textbasierte Assuan-Protokoll kommunizieren
  • Man kann gpg-agent daher auch unabhängig von OpenPGP und OpenSSH zur Verwaltung von Passphrasen für eigene Programme nutzen. Über die Konfigurationsdatei gpg-agent.conf wird u. a
  • festgelegt, über welchen Zeitraum eine Passphrase gecacht wird

Man kann nicht direkt abfragen, welche Einträge gpg-agent gerade speichert, aber man kann testen, ob ein konkreter Eintrag vorhanden ist (und sich den auch anzeigen lassen)

  • GnuPG legt die Passphrase eines Schlüssels unter dessen Fingerprint ab (ggf
  • dem des betroffenen Unterschlüssels):
> gpg-connect-agent "GET_PASSPHRASE --data --no-ask 4F7E9F723D197D667842AE115F048E6F0E4B4494 t1 t2 t3" /bye
D fubar
OK

Ebenso kann man eine Passphrase setzen, sodass sie nicht vom Anwender abgefragt werden muss (etwa bei automatisierten Prozessen)

  • Dafür gibt es sogar eine eigene Anwendung: gpg-preset-passphrase

Mit gpg-connect-agent kann man auch auf einfache Weise testen, ob gpg-agent überhaupt läuft (bzw. so läuft, dass es unmittelbar verwendet werden kann):

# gpg-connect-agent /bye
gpg-connect-agent: can't connect to the agent: IPC "connect" Aufruf fehlgeschlagen
Funktion
  • Das automatisch von GnuPG für die Eingabe und das Cachen von Passwörtern verwendet wird
  • Speichert das Passwort in einem Cache und fragt nur nach festlegbaren Zeitintervallen erneut danach

Installation

Wichtig ist außerdem, dass man noch ein Passworteingabeprogramm,z. B. pinentry-curses für die jeweilige Desktop-Umgebung benötigt

# apt install gnupg-agent pinentry-curses

Aufruf

Optionen

Option Beschreibung
--daemon Normaler Aufruf, um den Dämon zu starten
--ignore-cache-for-signing Erzwingt eine erneute Passworteingabe, um andere Schlüssel zu signieren
--default-cache-ttl n Setzt die Zeit, wie lange ein Passwort im Cache bleibt, auf n Sekunden. Standard ist 600
--max-cache-ttl n Setzt die maximale Zeit, wie lange ein Passwort im Cache bleibt, auf n Sekunden. Standard ist 7200 (2 Stunden)
--pinentry-program filename Setzt explizit das Passworteingabeprogramm auf filename

Parameter

Umgebung

Rückgabewert

Anwendung

Problembehebung

Konfiguration

Dateien

Anhang

Siehe auch


Sicherheit

Dokumentation

RFC
Man-Page

Links

Projekt
Weblinks
  1. https://wiki.ubuntuusers.de/GnuPG-Agent/
  2. https://wiki.ubuntuusers.de/GnuPG/