GNU Privacy Guard
Erscheinungsbild
GNU Privacy Guard, abgekürzt GPG, ist ein freies Kryptographiesystem, zum Ver- und Entschlüsseln von Daten sowie zum Erzeugen und Prüfen von Signaturen. Es dient als Ersatz für PGP.
Funktionsweise
- GPG benutzt ein Public-Key-Verschlüsselungsverfahren. Dabei erstellt man ein Schlüsselpaar, ein öffentliches und ein privates.
- 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/.
Anwendungen
Mit den folgenden Befehlen kann man mit GPG arbeiten.
Private Keys auflisten
Alle eigenen, geheimen Schlüssel auflisten
gpg -K
Public Keys auflisten
Alle öffentlichen Schlüssel auflisten
gpg -k
Diese Befehle zeigen alle Informationen über die Schlüssel an. Wenn man keine Schlüssel angelegt hat oder welche importiert hat, ist die Ausgabe dieser Befehle leer.
Verschlüsseln einer Datei
gpg -easr "Name oder Key_Id" <Datei>
- mit -e wird eine Datei verschlüsselt
- mit -a wird die 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
- mit -r <Name oder Key_Id> wird die Datei explizit für den bestimmten User verschlüsselt.
- mit -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.ascund 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>
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.