GNU Privacy Guard

Aus Foxwiki

GPG (GNU Privacy Guard) ist ein System zur Kryptografie und Signatur

Beschreibung

GNU Privacy Guard (GnuPG/GPG) ist ein freies Kryptografiesystem
  • Ver- und Entschlüsseln von Daten
  • Erzeugen und Prüfen elektronischer Signaturen
Das Programm implementiert den OpenPGP-Standard nach RFC 4880
  • Ersatz für PGP
  • 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.

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.


Übersicht

Logo = Logo von GnuPG
Hersteller = The GNU Privacy Guard Team
Erscheinungsjahr = 1997
Betriebssystem = GNU/Linux, macOS (und andere unixoide Systeme), Windows
Kategorie = Kryptografiessoftware
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)


Ziele

GnuPG hat sich zum Ziel gesetzt

Einer möglichst großen Benutzergruppe ermöglichen

  • Verwendung von kryptographischen Methoden
  • Vertrauliche Übermittlung von elektronischen Daten
GnuPG unterstützt dazu folgende Funktionen
  • Kryptografie 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

(d. h. frei von Schadsoftware) zu starten, etwa für die Erzeugung oder Verwendung von Schlüsseln mit hohen Sicherheitsanforderungen.

Beschreibung

Freie Alternative zu PGP

Public-Key-Kryptografie

  • 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 Kryptografie 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 Bit.
  • Für die Kryptografie nutzt GPG verschiedene Algortihmen wie RSA oder Elgamal.
  • GPG speichert alle Schlüssel, die man sammelt, in einem "Schlüsselbund"-Verzeichnis ~/.gnupg/.



Anhang

Siehe auch

Dokumentation

Links

Projekt
  1. https://www.gnupg.org/
Weblinks
  1. https://de.wikibooks.org/wiki/GnuPG
  2. Krypto-Kampagne von Heise Security
  3. Quis custodiet custodes? Anleitung zur Nutzung von PGP und S/MIME unter Microsoft Windows in Mozilla Thunderbird und Microsoft Outlook 2013
  4. Wie ein Mann das E-Mail-Geheimnis verteidigt
  5. https://wiki.ubuntuusers.de/GnuPG/

TMP

Anwendung

Schlüssel auflisten

Option Beschreibung
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 Bit genommen, es wird empfohlen mindestens 3072 Bit zu nehmen.
    • Man kann auch längere Schlüssellängen eintippen, um die Sicherheit zu erhöhen, jedoch dauert die Arbeit der Kryptografie 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

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.

Siehe auch

  1. GPG-Agent

TMP

Hinweise

Man kann für seinen Namen ein Leerzeichen verwenden, jedoch muss man bei allen Operationen mit GPG den Namen in Hochkommatas setzen.

$ 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.