Sicherheit:Verschlüsselung:GPG

Aus ITWiki
Zur Navigation springen Zur Suche springen

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 und dient als Ersatz für PGP. In Debian ist schon die neueste Version installiert.

1 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/.

2 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/.

3 Schlüssel auflisten

Mit dem Befehl

gpg -K

werden alle eigenen, geheimen Schlüssel aufgelistet

Mit

gpg -k

werden alle öffentliche Schlüssel aufgelistet

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.

4 Befehle mit GPG

Mit den folgenden Befehlen kann man mit GPG arbeiten.

Befehl Beschreibung
gpg -easr "Name oder Key_Id" <Datei>
  • Verschlüsseln einer 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
gpg -do <Entschlüsselt.txt> <Datei.asc>
  • Entschlüsseln einer Datei
  • 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.
gpg -a --output <Dateiname.asc>

--export "Schlüssel-ID oder Name"

  • Exportiert einen öffentlichen Schlüssel der Schlüssel-ID in die selbsterstellte <Dateiname.asc>
  • Der Schlüssel ist nun in der Dateiname.asc und kann nun als E-Mail-Anhang verschickt
  • Der private Schlüssel wird nicht exportiert.
gpg --import <Dateiname.asc>
  • Importiert einen Schlüssel
  • Dieser Befehl fügt den Schlüssel zum Schlüsselbund
gpg --detach-sign -a <Datei>
  • Signiert eine Datei in eine seperate Datei
  • Nachdem man sein Passwort eingegeben hat, erhält man eine Datei Datei.asc. Diese enthält die Signatur der Originaldatei
gpg --verify <Datei.asc>
  • Überprüft eine signierte Datei
  • Es folgt eine Nachricht: gpg: Good signature from <ID oder Name>
gpg --delete-secret-and-public-key "ID oder Name"
  • Löscht alle Schlüssel einer ID.
  • Wenn private Schlüssel vorhanden sind, werden diese zuerst gelöscht.
  • Es folgen eine Menge Bestätigungsanfragen, ob man das wirklich will

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


Quelle: GnuPG-ubuntuusers