GNU Privacy Guard
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/.
Schlüssel erstellen
Man tippt in der bash:
gpg --full-gen-key
Es folgt ein Menü, welche Art von Schlüssel man erstellen möchte. Voreingestellt ist RSA und RSA. Enter tippen!
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?
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)
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)
Nun noch den echten Name, die Email-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?
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.
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.
Der erstellte Schlüssel liegt nun in ~/.gnupg/.
Befehle
Mit den folgenden Befehlen kann man mit GPG arbeiten.
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.