GNU Privacy Guard: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 13: Zeile 13:
* Werner started GnuPG in 1997 and still puts most of his working time into the development and maintenance of GnuPG.}}</ref> Ende 2014 rief Koch zum [[Crowdfunding]] auf, im Januar 2015 wurde das Thema von überörtlicher Presse aufgegriffen und innerhalb weniger Tage war die Finanzierung durch Spenden für zwei bis drei Jahre gesichert.<ref>{{Internetquelle |url=https://gnupg.org/blog/20150310-gnupg-in-february.html |titel=GnuPG News for February 2015 |autor=Werner Koch |werk=GnuPG Blog |datum=2015-03-10 |zugriff=2015-06-24}}</ref>
* Werner started GnuPG in 1997 and still puts most of his working time into the development and maintenance of GnuPG.}}</ref> Ende 2014 rief Koch zum [[Crowdfunding]] auf, im Januar 2015 wurde das Thema von überörtlicher Presse aufgegriffen und innerhalb weniger Tage war die Finanzierung durch Spenden für zwei bis drei Jahre gesichert.<ref>{{Internetquelle |url=https://gnupg.org/blog/20150310-gnupg-in-february.html |titel=GnuPG News for February 2015 |autor=Werner Koch |werk=GnuPG Blog |datum=2015-03-10 |zugriff=2015-06-24}}</ref>


=== Übersicht ===
  Logo = [[Datei:GnuPG.svg|300px|Logo von GnuPG]]
  Logo = [[Datei:GnuPG.svg|300px|Logo von GnuPG]]
  Hersteller = The GNU Privacy Guard Team
  Hersteller = The GNU Privacy Guard Team

Version vom 18. November 2022, 08:32 Uhr

GPG (GNU Privacy Guard) ist ein System zur Verschlüsselung und Signatur

Beschreibung

GNU Privacy Guard (englisch für GNU-Privatsphärenschutz), abgekürzt GnuPG oder GPG, ist ein freies Kryptographiesystem.

  • Es dient zum Ver- und Entschlüsseln von Daten sowie zum Erzeugen und Prüfen elektronischer Signaturen.
  • Das Programm implementiert den OpenPGP-Standard nach RFC 4880 und wurde als Ersatz für PGP entwickelt.
  • Versionen ab 2.0 implementieren auch den S/MIME- und den PGP/MIME-Standard.

GnuPG benutzt standardmäßig nur patentfreie Algorithmen und wird unter der GNU-GPL vertrieben.

Entwicklung

Das Projekt wurde 1997 von Werner Koch begonnen, der immer noch der Hauptentwickler ist.[1] Ende 2014 rief Koch zum Crowdfunding auf, im Januar 2015 wurde das Thema von überörtlicher Presse aufgegriffen und innerhalb weniger Tage war die Finanzierung durch Spenden für zwei bis drei Jahre gesichert.[2]

Übersicht

Logo = Logo von GnuPG
Hersteller = The GNU Privacy Guard Team
Erscheinungsjahr = 1997[3]
Betriebssystem = GNU/Linux, macOS (und andere unixoide Systeme), Windows
Kategorie = Verschlüsselungssoftware
Lizenz = GNU GPLv3+
Deutsch = ja
Website = gnupg.org
Sonstiges = etwa für Systeme ohne gpg-agent wird Version 1 weiter gepflegt, aktuell ist 1.4.22 (19. Juli 2017)[4]

Installation

Anwendungen

Fehlerbehebung

Syntax

Optionen

Parameter

Umgebungsvariablen

Exit-Status

Konfiguration

Dateien

Sicherheit

Dokumentation

RFC

Man-Pages

Info-Pages

Siehe auch

Links

Projekt-Homepage

Weblinks

  1. Wikibooks|GnuPG|Der GNU Privacy Guard
  2. offizielle Webpräsenz
  3. Krypto-Kampagne von Heise Security
  4. Quis custodiet custodes? Anleitung zur Nutzung von PGP und S/MIME unter Microsoft Windows in Mozilla Thunderbird und Microsoft Outlook 2013
  5. Wie ein Mann das E-Mail-Geheimnis verteidigt

Einzelnachweise

Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5

TMP

Beschreibung

Freie Alternative zu PGP

Public-Key-Verschlüsselung

  • Schlüsselpaar: Private Key und Public Key
  • Der private Schlüssel darf nur der Eigentümer haben, mit dem können Daten entschlüsselt und signiert werden.
  • Der öffentliche Schlüssel dient zur Verschlüsselung und zur Überprüfung der Signaturen, dieser hat der Kommunikationspartner.
  • Um die Daten zu verschlüsseln stehen unterschiedlich starke Schlüssel zur Verfügung. Standard ist momentan eine Länge von 3072 Bits.
  • Für die Verschlüsselung nutzt GPG verschiedene Algortihmen wie RSA oder Elgamal.
  • GPG speichert alle Schlüssel, die man sammelt, in einem "Schlüsselbund"-Verzeichnis ~/.gnupg/.

Anwendung

Schlüssel auflisten

Private Keys

$ gpg -K

Public Keys

$ gpg -k

Schlüssel erstellen

$ gpg --full-gen-key

Please select what kind of key you want:
  (1) RSA and RSA (default)
  (2) DSA and Elgamal
  (3) DSA (sign only)
  (4) RSA (sign only)
Your selection?
  1. Es folgt ein Menü, welche Art von Schlüssel man erstellen möchte. Voreingestellt ist RSA und RSA.
    • Enter tippen!
  2. Nun wird gefragt, welche Schlüssellänge man haben möchte. Mit Enter wird die Voreinstellung von 3072 Bits genommen, es wird empfohlen mindestens 3072 Bits zu nehmen.
    • Man kann auch längere Schlüssellängen eintippen, um die Sicherheit zu erhöhen, jedoch dauert die Arbeit der Verschlüsselung länger.
      • RSA keys may be between 1024 and 4096 bits long
      • What keysize do you want? (3072)
  3. Danach folgt die Frage, wie lange das Schlüsselpaar gültig ist
    • Voreingestellt ist 0, also für ewig
    • Es wird allerdings empfohlen, sich auf eine bestimmte Zeitdauer festzulegen und keinen "ewigen" Schlüssel anzulegen.
Please specify how long the key should be valid.
        0 = key does not expire
     <n>  = key expires in n days
     <n>w = key expires in n weeks
     <n>m = key expires in n months
     <n>y = key expires in n years
Key is valid for? (0)
  1. Nun noch der echte Name, die E-Mail-Addresse und einen kurzen Kommentar eingeben. Falls alles in Ordnung ist, O eingeben und Enter drücken.
GnuPG needs to construct a user ID to identify your key.

Real name:Null Acht-Fünfzehn
Email address:
Comment:
You selected this USER-ID:

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?
  1. Es öffnet sich nun ein Menü, um ein Passwort einzugeben für den privaten Schlüssel, um später zu signieren und zu entschlüsseln.
  2. Vom System werden nun eine Menge Zufallszahlen benötigt, sodass ihr nun freundlich gebeten werdet, ein wenig mit der Maus oder der Tastatur zu spielen. Es dauert eine ganze Weile, aber dann kommt von der Konsole, dass das Schlüsselpaar erstellt wurde.
  3. Der erstellte Schlüssel liegt nun in ~/.gnupg/.

Verschlüsseln einer Datei

gpg -easr "Name oder Key_Id" <Datei>
Option  Beschreibung
-a Datei in ASCII-Armor-Format gespeichert. Ansonsten wird es in Binärcode geschrieben und man erhält stattdessen einen Datei mit der Endung .gpg, bei Signaturen .sig
-r die Datei explizit für den bestimmten User verschlüsselt.
-s wird die Datei signiert. Funktioniert nur, wenn man einen eigenen Private-Key besitzt

Am Ende erhält man eine Datei namens Datei.asc

Entschlüsseln einer Datei

gpg -do <Entschlüsselt.txt> <Datei.asc>
  • mit -d wird eine Datei entschlüsselt. Sollte die Datei eine Signatur haben, liest man von der bash die Signatur.
  • mit -o <Entschlüsselt.txt> wird eine entschlüsselte Textdatei erstellt. Lässt man es weg, gibt GPG den entschlüsselten Text auf der Bash aus.

Exportiert einen öffentlichen Schlüssel der Schlüssel-ID in die selbsterstellte <Dateiname.asc>

gpg -a --output <Dateiname.asc>
--export "Schlüssel-ID oder Name"
  • Der Schlüssel ist nun in der Dateiname.asc und kann nun als E-Mail-Anhang verschickt
  • Der private Schlüssel wird nicht exportiert.

Importiert einen Schlüssel

gpg --import <Dateiname.asc>
  • Dieser Befehl fügt den Schlüssel zum Schlüsselbund

Signiert eine Datei in eine separate Datei

gpg --detach-sign -a <Datei>
  • Nachdem man sein Passwort eingegeben hat, erhält man eine Datei Datei.asc. Diese enthält die Signatur der Originaldatei

Überprüft eine signierte Datei

gpg --verify <Datei.asc>
  • Es folgt eine Nachricht: gpg: Good signature from <ID oder Name>

GPG-Signaturen prüfen

  • GPG-Signaturen sind ein Beweis dafür, dass verteilte Dateien signiert wurden durch den Besitzer des Signaturschlüssels.
  • Zum Beispiel, wenn diese Website war kompromittiert und die ursprünglichen Electrum-Dateien wurden ersetzt, Signaturüberprüfung würde fehlschlagen, da der Angreifer dies nicht tun würde gültige Signaturen erstellen können.
    • Beachten Sie, dass ein Angreifer das wäre gültige Hashes erstellen können, deshalb veröffentlichen wir keine Hashes unserer Binaries hier bringt es keine Sicherheit
  • Um GPG-Signaturen verifizieren zu können, müssen Sie importieren der öffentliche Schlüssel des Unterzeichners.
    • Electrum-Binärdateien sind mit signiert von ThomasV Öffentlichkeit Schlüssel .
    • Unter Linux können Sie diesen Schlüssel folgendermaßen importieren Befehl:
gpg --import ThomasV.asc.
  • Hier sind Anleitungen für Fenster und MacOS .
  • Wenn Sie einen Schlüssel importieren, sollten Sie seinen Fingerabdruck mit überprüfen unabhängige Quellen, wie z wie hier , oder verwenden das Web von Vertrauen .

Löscht alle Schlüssel einer ID

gpg --delete-secret-and-public-key "ID oder Name"
  • Wenn private Schlüssel vorhanden sind, werden diese zuerst gelöscht.
  • Es folgen eine Menge Bestätigungsanfragen, ob man das wirklich will

Hinweise

  • Man kann für seinen Namen ein Leerzeichen verwenden, jedoch muss man bei allen Operationen mit GPG den Namen in Hochkommatas setzen. Bsp:
 gpg -ear 'Null Acht-Fünfzehn' <Datei>
  • Das Verschlüsseln im ASCII-Format ist vor allem vorzuziehen bei der Übertragung übers Internet.
  • Wenn man es lediglich auf der Festplatte verschlüsselt speichern will, ist das Binärformat, gerade bei großen Dateien, vorzuziehen.

Fehlerbehebung

Unpassender IOCTL

[GNUPG:] PINENTRY_LAUNCHED 23758 curses 1.1.0 - linux -
gpg: Beglaubigung fehlgeschlagen: Unpassender IOCTL (I/O-Control) für das Gerät
[GNUPG:] BEGIN_ENCRYPTION 2 9
[GNUPG:] FAILURE sign-encrypt 83918950
gpg: /usr/bin/duply: sign+encrypt failed: Unpassender IOCTL (I/O-Control) für das Gerät

Lösung

echo use-agent >> ~/.gnupg/gpg.conf
echo "pinentry-mode loopback" >> ~/.gnupg/gpg.conf
echo allow-loopback-pinentry >> ~/.gnupg/gpg-agent.conf

Hintergrund

  • Es kommt zu dieser Fehlermeldung, weil gpg die Passphrase nicht automatisch abfragen konnte.
  • Die erledigt der gpg-agent, der wiederum pinentry-curses zur sicheren Übertragung der Passphrase verwendet.
  • In der gpg.conf muss angegeben werden, dass der gpg-agent verwendet werden soll (use-agent).
  • Und in welchem Modus dieser verwendet werden soll (pinentry-mode loopback).
  • In der gpg-agent.conf muss dem gpg-agent erlaubt werden den loop-back-pinentry durchzuführen.

Links

Interne Links

Weblinks

  1. https://wiki.ubuntuusers.de/GnuPG/

Wikipedia

Ziele

GnuPG hat sich zum Ziel gesetzt, einer möglichst großen Benutzergruppe die Verwendung von kryptographischen Methoden zur vertraulichen Übermittlung von elektronischen Daten zu ermöglichen.

GnuPG unterstützt dazu folgende Funktionen:

  • Verschlüsselung von Daten (etwa E-Mails), um vertrauliche Informationen an einen oder mehrere Empfänger zu übermitteln, die nur von den Empfängern wieder entschlüsselt werden können.
  • Erzeugung einer Signatur über die versendeten Daten, um deren Authentizität und Integrität zu gewährleisten.

Beide Funktionen können kombiniert werden.

  • In der Regel wird dabei zuerst die Signatur gebildet und an die Daten angehängt.
  • Dieses Paket wiederum wird dann verschlüsselt an die Empfänger versandt.
  • Die Kombination beider Aktionen in einem Aufruf unterstützt GnuPG nur in dieser Reihenfolge.
  • Beim Versand von E-Mails (als PGP/MIME nach RFC 3156) sind zwar beide Varianten möglich, aber durch Beschränkungen der Mailclients ist das in der Praxis die einzige mögliche Reihenfolge.
  • Die Möglichkeit, eine E-Mail zuerst zu verschlüsseln und dann mit einer Klartextsignatur zu versehen (die dann etwa ein Virenscanner oder Spamfilter auswerten könnte, der die eigentliche Nachricht nicht entschlüsseln kann), ist nicht vorgesehen.
  • Man kann allerdings Dateien unabhängig vom E-Mail-Versand verschlüsseln, an eine E-Mail anhängen und die E-Mail dann als PGP/MIME signieren lassen.

Etablierte Verwendung von GnuPG

GnuPG wird von zumindest den meisten Linux-Distributionen und verwandten Systemen im Rahmen ihres Paketmanagers zur Sicherung der Integrität der verteilten Softwarepakete verwendet und ist deshalb in den meisten Installationen bereits enthalten.

  • Deshalb stellt das Booten von einem authentischen Installationsmedium eines solchen Systems eine Möglichkeit dar, GnuPG in einer sicheren Umgebung[1] (d. h. frei von Schadsoftware) zu starten, etwa für die Erzeugung oder Verwendung von Schlüsseln mit hohen Sicherheitsanforderungen.

Funktionsweise

GPG ist ein Public-Key-Verschlüsselungsverfahren, das heißt, dass zum Verschlüsseln von Nachrichten keine geheimen Informationen nötig sind.

  • Jeder GPG-Nutzer erstellt ein Schlüsselpaar, das aus zwei Teilen besteht: dem privaten Schlüssel und dem öffentlichen Schlüssel.
  • Auf den privaten Schlüssel darf nur der Eigentümer Zugriff haben.
  • Daher wird dieser in der Regel auch mit einem Passwort geschützt.
  • Mit diesem können Daten entschlüsselt und signiert werden.
  • Der öffentliche Schlüssel dient dazu, Daten zu verschlüsseln und signierte Daten zu überprüfen.
  • Er muss jedem Kommunikationspartner zur Verfügung stehen, der diese beiden Aktionen durchführen will.
  • Die Daten können mit dem öffentlichen Schlüssel weder signiert noch entschlüsselt werden, daher ist seine Verbreitung auch mit keinem Sicherheitsrisiko behaftet.
  • Die öffentlichen Schlüssel können mit anderen Nutzern über eine Vielzahl von Kanälen ausgetauscht werden, etwa Internet-Schlüsselserver.
  • Sie (bzw. die Kombination aus öffentlichem Schlüssel und User-ID) sollten vor der Verwendung unbedingt verlässlich geprüft werden, um Identitätsmanipulationen vorzubeugen, da die in öffentliche Schlüssel eingetragenen Identitätsinformationen (meist Name und E-Mail, ggf. auch ein Kommentar) trivial gefälscht werden können.
  • GPG kann nur feststellen, ob die Daten mit einem bestimmten Schlüssel signiert bzw. verschlüsselt wurden.
  • Ob der Schlüssel selbst vertrauenswürdig ist, muss der Anwender entscheiden, schließlich kann jeder einen Schlüssel mit den Angaben fremder Anwender erstellen und ihn auf einen Keyserver laden.
  • Einem aus einer unsicheren Quelle (etwa dem Internet) geladenen Schlüssel sollte man also zunächst nicht vertrauen.
  • Zur Überprüfung besorgt man sich den Fingerabdruck (Hash-Wert) des Schlüssels über einen sicheren Kanal (etwa Telefon) und vergleicht ihn mit dem lokal erzeugten des heruntergeladenen Schlüssels.
  • Dies ist sicher, weil es nicht möglich ist, einen passenden Schlüssel für einen gegebenen Fingerabdruck zu erzeugen.
  • Diese Sicherheit hängt an der Stärke der Hashfunktion (und der Menge möglicher Schlüssel).
  • In der Version 4 des OpenPGP-Schlüsselformats ist dafür die Verwendung der Hashfunktion SHA-1 festgeschrieben, für die derzeit (2012) zwar Kollisionsangriffe, nicht aber die für die Imitation von Schlüsseln entscheidenden Second-Preimage-Angriffe möglich sind.
  • Durch die kürzlich erfolgte Festlegung der SHA-3-Hashfunktion ist mit dem baldigen Beginn der Entwicklung des nächsten OpenPGP-Schlüsselformats zu rechnen.

Um die Daten zu verschlüsseln oder zu signieren, stehen unterschiedlich starke Schlüssel zur Verfügung. Üblich sind momentan (2014) 2048- bis 4096-Bit starke Schlüssel, mit 2048 Bit empfohlener Länge.

  • GPG verwendet derzeit nur nicht-patentierte Algorithmen, um mit diesen Schlüsseln Daten zu verschlüsseln, wie etwa RSA, Elgamal, CAST5, Triple-DES (3DES), AES (Rijndael) und Blowfish.

Offline-Hauptschlüssel

GnuPG unterstützt mit Hauptschlüsseln ein Sicherheitsfeature, das über den OpenPGP-Standard hinausgeht, und daher nicht verlässlich funktioniert, wenn solche geheimen Schlüssel in eine andere OpenPGP-Applikation importiert werden sollen.

  • Der Hauptschlüssel wird nicht für das alltägliche Signieren und Entschlüsseln verwendet, sondern für die Verwaltung der eigenen Schlüsselkomponenten (User-IDs und Unterschlüssel) und die Zertifizierung anderer Schlüssel.
  • Diese Aktionen fallen vergleichsweise selten an, sodass man den Hauptschlüssel besonders sichern kann.
  • Die Vorteile dieser Vorgehensweise sind:
  1. Die Verifizierung des Schlüssels braucht durch die Kommunikationspartner nicht wiederholt zu werden.
  • Der Hauptschlüssel bleibt gültig.
  1. Unterschlüssel können leicht ausgetauscht werden.
  • Auslaufende und neue Unterschlüssel sind für OpenPGP nichts Besonderes, werden bei Schlüsselupdates automatisch eingebunden und für den Benutzer transparent verwendet.
  1. Wenn der Hauptschlüssel auch signieren darf, kann man sein deutlich höheres Sicherheitsniveau nutzen, um Informationen von großer Bedeutung damit zu signieren, etwa die eigene Schlüsselrichtlinie.

Der technische Ansatz ist, die geheimen Schlüssel ohne den Hauptschlüssel zu exportieren (nach einem Backup des Hauptschlüssels), dann alle geheimen Schlüssel zu löschen und anschließend nur die Unterschlüssel zu importieren.

  • Leider wird diese GnuPG-Funktion bisher von der GUI nicht unterstützt, sodass man die nötigen Schritte selbst in der Konsole durchführen muss.

Web of Trust

Mittels eines Web of Trust (Netz des Vertrauens) versucht PGP/GnuPG dem Problem zu begegnen, dass man sich persönlich meist nicht der Echtheit der Schlüssel aller Kommunikationspartner versichern kann.

  • Benutzer können andere Schlüssel mit ihrem eigenen Schlüssel signieren und bestätigen Dritten damit, dass sie sich von der Echtheit des Schlüssels überzeugt haben.
  • Zudem kann man festlegen, wie sehr man den Signierungen der Person vertraut.
  • Dadurch entsteht das beschriebene Vertrauensnetzwerk.
  • Wenn Alice beispielsweise mit ihrer Signatur die Echtheit des Schlüssels von Bob bestätigt hat, kann Cloey der Echtheit des Schlüssels von Bob auch dann trauen, wenn sie selbst sich davon nicht direkt überzeugen konnte, weil sie ihn beispielsweise aus dem Internet bezogen hat.
  • Voraussetzung dafür ist natürlich, dass sie den Schlüssel von Alice kennt und ihr vertraut.
  • Es gibt einige Zertifizierungsstellen (engl. certification authority, CA), die die Echtheit von Schlüsseln beispielsweise durch persönlichen Kontakt mit Überprüfung des Personalausweises feststellen.
  • Kostenlos wird dies zum Beispiel von der Zeitschrift c’t und von CAcert angeboten.
  • Bei diesen Organisationen können Interessenten sich beispielsweise auf Computer-Messen wie der CeBIT persönlich ausweisen und ihre öffentlichen Schlüssel bestätigen lassen.[2]

Das Web of Trust von PGP wurde eingehend von Wissenschaftlern untersucht und detailliert visualisiert.

  • Dabei wurde herausgefunden, dass ein großer Teil der Nutzer einer Teilmenge angehört, die durch gegenseitige Bestätigungen vollständig miteinander verbunden ist, dem sogenannten Strong Set des Web of Trust.[3] Untersuchungen haben außerdem ergeben, dass die Krypto-Kampagne der c’t einen deutlichen Beitrag dazu geleistet hat, die Verbindungen zwischen den Teilnehmern zu stärken.[4]

Einen weiteren wichtigen Beitrag zum Web of Trust leistet das Debian-Projekt, das für die Aufnahme von Beiträgen digitale Signaturen erfordert.

gpg-agent

Vorlage:Überarbeiten 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 GPG_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[5] 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

Test der E-Mail-Anwendung

Um zu überprüfen, ob die Anwendung korrekt funktioniert, kann man den Mailbot Adele (adele@gnupp.de) des GNU Privacy Projekt nutzen.

  • Hierzu sendet man eine E-Mail mit dem eigenen öffentlichen Schlüssel als Anhang an Adele und erhält eine mit diesem Schlüssel verschlüsselte Mail zurück, die den öffentlichen Schlüssel von Adele als Textblock in der Mail enthält.
  • Nun kann man diesen Schlüssel in die Schlüsselverwaltung importieren und damit selbst eine verschlüsselte Mail an Adele schreiben.
  • Adeles Antwort enthält den Inhalt der gerade verschlüsselten Nachricht, und dass die Nachricht entschlüsselt werden konnte.

Unterstützung durch deutsche Behörden

Die Portierung von GnuPG auf Windows wurde zwischen 2001 und 2002 vom Bundesministerium für Wirtschaft und Arbeit (BMWA) und Bundesministerium des Innern (BMI) im Rahmen der Aktion „Sicherheit im Internet“ unterstützt (siehe GNU Privacy Projekt), um eine frei verfügbare Verschlüsselungssoftware für jedermann zur Verfügung zu stellen.

Benutzeroberflächen

Um GnuPG in verschiedenen Anwendungskontexten zu benutzen, sind zahlreiche Frontends erstellt worden.

  • Hier können die folgenden Frontend-Typen unterschieden werden:
  • Frontends, die die Funktionen des kommandozeilenorientierten Programmes über eine grafische Oberfläche zur Verfügung stellen, wie etwa der Gnu Privacy Assistant (GPA), der von der Free Software Foundation als Standard-Frontend vorgesehen ist, Seahorse und KGpg für die Integration in die Desktop-Umgebungen Gnome bzw. KDE, WinPT oder Gpg4win für die Arbeit unter Windows, sowie GPGTools für Apple OS X.
  • Mailprogramme, die GnuPG entweder direkt (wie etwa Evolution, KMail, Mutt oder Claws Mail) oder über ein Plug-In (Enigmail für Mozillas E-Mail-Programme, EudoraGPG für Eudora, gpg4o[7] und GPGol (Teil von Gpg4win) für Microsoft Outlook oder GPGMail für Apple Mail) einbinden können.
  • Chatprogramme wie Gabber, Miranda IM, licq, Kopete, Psi oder Gajim, die so teilweise auch plattformübergreifende verschlüsselte Chats über Netzwerke wie ICQ ermöglichen.
  • Serverbasierende Frontends wie GNU Anubis, freenigma oder GPGrelay[8], die als SMTP-Relay-Server oder als MTA eine zentralisierte und transparente E-Mail-Verschlüsselung erlauben.
  • Für den Webbrowser Mozilla Firefox gab es ein Add-on namens FireGPG[9], das auf jeder Internetseite GPG-Blöcke erkennt und verarbeitet, es wird jedoch seit Juni 2010 bzw.
  • der Version 0.8 nicht mehr weiterentwickelt.
  • Mit WebPG[10] gibt es ein ähnliches Add-on für Mozilla Firefox und Google Chrome.
  • gpg4usb ist ein portable Version, die auf einem USB-Stick installiert wird. Über den Stick ist GnuPG dann für viele Plattformen ohne Installation nutzbar.[11][12][13]

Daneben gibt es noch weitere Schnittstellen für die Nutzung von GnuPG aus verschiedenen Skriptsprachen wie Perl, PHP oder Python.

Problemfälle

Aufgrund eines Fehlers bei der Optimierung des Verfahrens der digitalen Signatur in GPG tat sich 2003 eine Sicherheitslücke auf.[14] Diese betraf lediglich das Verfahren zum digitalen Signieren von Nachrichten in den GPG-Versionen 1.02 bis 1.2.3. Angeblich sollen weniger als 1000 solcher Schlüssel auf den Schlüsselservern gelistet worden sein.[15] Von der Verwendung dieses Verfahrens wurde abgeraten und nur wenige Benutzer setzten es ein. Über Schäden wurde nicht öffentlich berichtet.

  • Dieses Verfahren wird ab der Version 1.2.4 nicht mehr angeboten.

Zwei weitere Sicherheitslücken wurden Anfang 2006 entdeckt – bei der ersten hätten GPG-Skripte beim Überprüfen von Signaturen [[Fehler 2.

  • Art|Fehler der 2. Art (false negative)]] ergeben können,[16] bei der zweiten waren Nicht-MIME-Nachrichten gegenüber der Einspeisung von Daten anfällig, die als von der digitalen Signatur gedeckt aufschienen, dies tatsächlich aber nicht waren.[17] Beide Schwachstellen wurden zum Zeitpunkt ihrer Ankündigung bereits durch neue GPG-Versionen behoben.

Kritik

Von IT-Sicherheitsexperten werden immer wieder die schlechte Codebasis von GnuPG, das Fehlen eines Systems für kontinuierliche Integration und daraus entstehende Sicherheitslücken kritisiert.[18]

SSH-Unterstützung

In Version 2 von GPG wurde die Verwaltung der privaten Schlüssel in einen Daemon-Prozess (gpg-agent[19]) ausgelagert.

  • Eine ähnliche Struktur (ssh-agent) gibt es bei OpenSSH, dort allerdings optional.
  • Da der Signaturalgorithmus RSA sowohl von OpenPGP als auch von SSH verwendet wird, sind die jeweiligen Schlüssel prinzipiell austauschbar.
  • Deshalb kann gpg-agent dafür verwendet werden, mittels eines OpenPGP-Schlüssels (der die normalerweise nicht verwendete Fähigkeit Authentisierung besitzen muss) eine SSH-Verbindung aufzubauen.
  • Dieser Umstand eröffnet zwei nützliche Möglichkeiten:
  1. Ein bereits verifizierter OpenPGP-Schlüssel kann auch für SSH verwendet werden.
  • Die (eventuell schwierige) Verifizierung eines zweiten Schlüssels kann entfallen.
  1. Da GPG Smartcards unterstützt, kann ein SSH-Zugang an die Verwendung einer Smartcard gebunden werden (was über PKCS#11-Unterstützung in OpenSSH auch ohne GPG möglich ist).

Einzelnachweise