GnuPG ist der GNU Privacy Guard, ein Programm zur Verschlüsselung und Signierung von z.B. E-Mail und Dateien.

Homepage: http://www.gnupg.org/

Lizenz: GPL

Das GNU-Handbuch zum Schutze der Privatsphäre

Tipps & Tricks

Mini-Howto

Frage: Was sind MD5-Prüfsummen und wie geht man damit um?

Links

Frontends

Plugins, Bibliotheken

Keyserver

Tools

Linksammlungen

Kurzanleitung

Von http://lug-owl.de/LugWiki/GnuPG

Was kann man damit machen?

Mit GnuPG kann man zwei Dinge tun:

GnuPG kann symmetrische Verschlüsselung benutzen. Das ist der einfachste Fall von Verschlüsselung. Hier wird einfach ein Password abgefragt und damit werden die Daten verschlüsselt.

Public Key und Private Key

Die Hauptaufgabe von GnuPG ist es aber, asymmetrische Verschlüsselung zu betreiben. Dieses Verfahren basiert darauf, daß sich jede Person ein Schlüssel-Paar erzeugt. Die eine Hälfte des Schlüssels wird symmetrisch verschlüsselt lokal gespeichert und muß geheimgehalten werden. (Wegen dieser symmetrischen Verschlüsselung braucht man übrigens das Password, wenn man etwas mit sog. private key machen will!). Die andere Schlüsselhälfte, public key genannt, veröffentlicht man auf Keyservern. Ihre einzige Aufgabe ist es, für jeden abrufbar alle public keys zu speichern.

Wie funktioniert Verschlüsselung?

Wenn eine Datei verschlüsselt werden soll, so gibt man die public keys aller Empfänger (also der Personen, die später die Datei lesen können sollen) an. Mit diesen Schlüsselhälften wird anschließend die Datei verschlüsselt (TODO: session key). Alle Empfänger können die Datei später mit ihrem private key, also dem Gegenstück des zur Verschlüsselung benutzten public keys) entschlüsseln.

Wie funktioniert Signatur?

Zuerst wird über die Datei eine Prüfsumme ermittelt. Diese hat die Eigenschaft, sich komplett zu ändern, wenn man nur ein einziges Bit der Datei ändert. Die Prüfsumme wird nun mit dem private key des Signierenden verschlüsselt, das Ergebnis an die zu signierende Datei gehängt.

Alle, die nun die Signatur (und damit die Unverändertheit) des Dokuments prüfen wollen, können die angehängte Signatur mit dem public key des Signierenden entschlüsseln. Die nun wieder lesbare Prüfsumme wird zum Schluß mit einer neuerrechneten Prüfsumme verglichen. Sind beide gleich, ist das Dokument unverändert; weichen sie voneinander ab, so wurde das Dokument verändert.

Web of Trust

Mit diesem (GnuPG) und ähnlichen Programmen (PGP...) ist ein Weg eröffnet, eine nicht staatlich kontrollierte, aber trotzdem eindeutige digitale Signatur zu einem leicht nutzbaren Teil der EDV-Welt zu machen. Nach dem Erzeugen eines eigenen Schlüssels fehlt nur noch ein letzter Schritt: die eindeutige Zuordnung der Person/des Schlüssel-Inhabers zu dem Schlüssel.
Diesen Schritt bietet der Heise-Verlag: Unter http://www.heise.de/security/dienste/pgp/ erreicht man die Krypto-Kampagne, bei der ein Abgleich zwischen Person, Personalausweis und Schlüssel erfolgt. Nach Abschluss der Prozedur ist der Schlüsselinhaber eindeutig seiner digitalen Signatur zugeordnet.

Die wichtigsten Befehle zur Hand

Wenn GnuPG nicht zur Email-Verschlüsselung eingesetzt wird, dann kann man es natürlich auch per Hand aufrufen

Key-Paar erzeugen

Bevor man GnuPG wirklich einsetzen kann, muß man sich ein Schlüssel-Paar erzeugen:

$ gpg --gen-key

Nachdem der Key (mit Standard-Einstellungen, vielleicht eine etwas größere Bit-Länge des Keys...) erzeugt ist, werden einige Infos angezeigt:

pub  1024D/93F81F4F 2003-02-27 sdkjfh asdfk (sdfsdf) <ssdf@sdf.dd>
     Key fingerprint = CB83 38EE 2390 90DD ABA9  46B7 428F 1E20 93F8 1F4F
sub  1024g/C596B600 2003-02-27

Die sogenannte "KeyID" ist die hexadezimale Zahlenfolge, die in der "pub"-Zeile zu finden ist, also in unserem Beispiel "93F81F4F". Wenn man mit GnuPG arbeitet und eine KeyID angeben soll, so sollte man immer "0x" davorschreiben, damit GnuPG die KeyID von anderen, eventuell zulässigen Eingaben unterschieden kann: "0x93F81F4F"

Revocation Certificates erzeugen.

Damit kann man einen Key für ungültig erklären, z.B., wenn man ihn nicht mehr nutzen will, oder das Password vergessen hat, oder ein Dritter an den geheimen Teil und das Password gekommen ist, oder...

Erstmal sollte man sich einen kurzen Überblick darüber schaffen, welche Certificates es gibt

$ gpg --gen-revoke 0x93F81F4F

Danach sollte man für die gängigen Fälle ("Ich will nicht mehr", "Private key abhandengekommen", "Password vergessen", "Password ist an Dritte gelangt") revocation certificates erzeugen:

$ gpg --gen-revoke 0x93F81F4F > gpg-rev-Will_no_longer_use_it
$ gpg --gen-revoke 0x93F81F4F > gpg-rev-Lost_private_key
$ gpg --gen-revoke 0x93F81F4F > gpg-rev-Forgot_password
$ gpg --gen-revoke 0x93F81F4F > gpg-rev-Key_compromised

Die entstehenden Dateien sollte man sorgfältig aufbewahren. Ich empfehle Ausdruck als Hexcode:

$ cat gpg-rev-Will_no_longer_use_it | od -t x1 | lp
$ cat gpg-rev-Lost_private_key | od -t x1 | lp
$ cat gpg-rev-Forgot_password | od -t x1 | lp
$ cat gpg-rev-Key_compromised | od -t x1 | lp

Die Zettel kann man sicher in einen Tresor packen und die Daten können so nicht an Dritte gelangen, die damit (ohne weitere Passwords) den Key vernichten können! Nach dem Ausdruck sollten die Dateien auf dem Rechner in jedem Fall gelöscht werden; eine Kopie auf Diskette, zu den Zetteln gelegt, kann jedoch nicht schaden.

Public Key auf Keyserver hochladen

Damit man verschlüsselte Texte von anderen bekommen kann, müssen diese an den öffentlichen Teil des Keys kommen. Dazu sollte man diesen zweckmäßigerweise auf die Keyserver hochladen; diese tauschen sich untereinander aus, sodaß es reichen sollte, den Key auf einen Keyserver zu laden:

$ gpg --keyserver wwwkeys.de.pgp.net --send-keys 0xKeyID

Möchte man immer einen Keyserver benutzen können, z.B., um automatisch fehlende public keys aus dem Internet herunterladen zu können, so kann man das in der Datei ~/.gnupg/options konfigurieren:

echo "keyserver wwwkeys.de.pgp.net" >> ~/.gnupg/options

Key vernichten

Sollte ein Grund aufkommen, den Key zu vernichten (man will ihn nicht länger nutzen, Password vergessen, ...), so muß man das (passende) Revocation Certificate laden. Dieses kann auf jedem beliebigen Rechner geschehen, der private key wird dazu nicht gebraucht:

$ gpg --recv-keys 0xKeyID
$ gpg --import gpg-rev-Lost_private_key
$ gpg --send-keys 0xKeyID

Damit ist der Key unbrauchbar für weitere produktive Benutzung. Er kann (unter Ausgabe einer Warnung) aber immernoch benutzt werden, um alte Texte zu entschlüsseln.

Einen Text signieren

$ gpg --armor --detach-sign SignMe

Die Datei "SignMe" bleibt erhalten und es entsteht zusätzlich eine Datei namens "SignMe.asc", in der die Signatur enthalten ist.

Eine Signatur prüfen

$ cat SignedFile | gpg --verify SignedFile.asc

oder

$ gpg --verify SignedFile.asc < SignedFile

Einen Text verschlüsseln

$ gpg --armor --encrypt --recipient Identifer EncryptMe

Die Datei "EncryptMe" wird verschlüsselt, es entsteht eine verschlüsselte Datei "EncryptMe.asc". Die Original-Datei bleibt erhalten und kann nun ggf. gelöscht werden. Die Option "--recipient" kann mehrfach benutzt werden, dadurch können mehrere Personen diese verschlüsselte Datei lesen. Achtung - wenn man sich selbst nicht auf die Liste der Empgänger setzt, so kann man den Text selbst nicht mehr wiederherstellen!

Damit man automatisch immer in der Liste der Empfänger steht, sollte man sich entsprechend eintragen:

$ echo "encrypt-to 0xKeyID" >> ~/.gnupg/options

Einen Text entschlüsseln

$ gpg --decrypt EncryptedText.asc > ReadableText

Signieren und Verschlüsseln eines Textes

$ gpg --armor --sign --encrypt --recipient Identifer SignAndEncryptMe

Es entsteht wieder eine Datei namens "SignAndEncryptMe.asc", die das Produkt enthält.

Einen verschüsselten und signierten Text entschlüsseln und die Signatur prüfen

$ gpg SignedAndEncrypted.asc

Das Ergebnis wird in die Datei "SignedAndEncrypted" geschrieben.

Eine Datei symmetrisch verschlüsseln

GPG kann auch Dateien einfach nur mit einem Passwort zu sichern, ohne geheimen und öffentlichen Schlüssel.

Um z.B. die SSH-Konfiguration zwecks Sicherung zu verschlüsseln, kann folgendes eingegeben werden:

tar cvzf ssh.tgz .ssh/
gpg -c ssh.tgz

Zur Entschlüsselung muss z.B. folgendes eingeben werden:

gpg -d ssh.tgz.gpg > ssh.tgz

Nach dem Passwort wird dann jeweils gefragt.


KategorieSicherheit

GnuPG (zuletzt geändert am 2012-02-09 21:05:57 durch ip-95-222-126-130)