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
Inhaltsverzeichnis
- Tipps & Tricks
- Mini-Howto
- Links
-
Kurzanleitung
- Was kann man damit machen?
- Public Key und Private Key
- Wie funktioniert Verschlüsselung?
- Wie funktioniert Signatur?
- Web of Trust
-
Die wichtigsten Befehle zur Hand
- Key-Paar erzeugen
- Revocation Certificates erzeugen.
- Public Key auf Keyserver hochladen
- Key vernichten
- Einen Text signieren
- Eine Signatur prüfen
- Einen Text verschlüsseln
- Einen Text entschlüsseln
- Signieren und Verschlüsseln eines Textes
- Einen verschüsselten und signierten Text entschlüsseln und die Signatur prüfen
- Eine Datei symmetrisch verschlüsseln
Tipps & Tricks
- Keys aus einem File von einer Website schnell importieren:
lynx -source <url> | gpg --import -- oder
wget -q <url> -O - | gpg --import --
Nützliche Einträge für die ~/.gnupg/options:
keyserver x-hkp://wwwkeys.pgp.net keyserver-options auto-key-retrieve honor-http-proxy
Public Keys wenn nötig automatisch vom Keyserver (wwwkeys.pgp.net) holen und einen evtl. eingestellten Proxy (Umgebungsvariable $http_proxy) benutzen.
Nach dem Erstellen eines eigenen Schlüssels sollte immer eine Sicherungskopie (z.B. CD) gemacht werden. Außerdem unbedingt ein Widerruf-Zertifikat erstellen, mit auf der CD speichern und ausdrucken! Wenn alle Stricke reißen, kann man das Zertifikat immer noch abtippen. Die gesicherten Schlüsseldateien sollten symmetrisch verschlüsselt werden (d.h. mit Passwort) mit gpg -c <Schlüsseldatei>, damit sie nicht missbraucht werden können.
/Agent - Ein Agent vergleichbar mit ssh-agent
Mini-Howto
/KurzVortrag - nur das Wichtigste, Grundlagen bitte anderweitig lesen.
Frage: Was sind MD5-Prüfsummen und wie geht man damit um?
siehe md5sum
Links
Frontends
Plugins, Bibliotheken
Mozilla/EnigMail - Plugin für Mozilla
Keyserver
http://keyserver.kjsl.com:11371/ - netter Keyserver mit netten Statistiken
Tools
CABot is a set of scripts that help managing some parts of a PGP keysigning process. It sends encrypted challenges to UIDs of an OpenPGP key, analyses the replies and assists the key owner in signing them.
sig2dot can be used to generate a graph of all of the signature relationships in a GPG/PGP keyring. Man sollte $ LANGUAGE=C gpg --list-sigs | ./sig2dot.pl > signs.dot benutzen, damit gpg die Meldungen auf jeden Fall in Englisch ausgibt.
Biglumber key signing coordination
Linksammlungen
Kurzanleitung
Von http://lug-owl.de/LugWiki/GnuPG
Was kann man damit machen?
Mit GnuPG kann man zwei Dinge tun:
Daten signieren, sodaß ein Leser feststellen kann, ob sie verändert worden sind
Daten verschlüsseln, sodaß nur ausgewählte Personen diese Daten lesen können
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.