Diese Anleitung beschreibt die Generierung von PGP-Schlüsseln unter Unix. Wer eine grafische Oberfläche einsetzt, kann die Anleitung trotzdem verwenden um die zusätzlich nötigen Schritte zu erkennen.
Denn mit dem eigentlichen Erstellen eines PGP-Schlüssels ist es nicht getan. Weitere Aktionen sollten auch noch erledigt werden:
Die Version PGP 2.6.2 sollte nicht mehr verwendet werden. Sie enthält einige Bugs.
Schlüssel dürfen nicht mit der Version 5.0 erzeugt werden. Diese hat einen Fehler in der Zufallsgenerierung.
Es gibt viele Argumente für jede der Versionen...
Jeder braucht (mindestens) einen persönlichen Schlüssel. Dieser besteht (zumindest bei einem public key Verfahren (wie PGP es verwendet)) aus einem public key und einem private key. Der public key wird später (möglichst) in der ganzen Welt verteilt, wohingegen der private key nur dem Besitzer des Schlüssels selber bekannt sein darf!
Die Zugehörigkeit eines Schlüssels zu seinem Besitzer oder seiner Besizterin geschieht über die sogenannte User-ID. In der Regel wird die User-ID mit der E-Mail Adresse versehen. Es gibt eine Art Standard-Aufbau für PGP-User-IDs: "Nicky Kern <nicky@vis.inf.ethz.ch>" (zuerst also der Name als normaler String, und dann die EMail-Adresse in Dreiecksklammern). Die allermeisten User-IDs sind so aufgebaut und man sollte seine genauso bilden.
Der secret key wird verschlüsselt abgelegt, damit niemand der in Besitz der Datei mit dem secret key kommt, damit etwas anfangen kann. Zur Verschlüsselung wird der passphrase verwendet, der bei jeder Benutzung von PGP vom Benutzer erfragt wird. Wie der Name schon suggeriert sollte der Passphrase auf keinen Fall zu kurz sein, da er, je kürzer je einfacher, herauszubekommen ist.
Achtung: Passwörter (und speziell den passphrase von PGP) nie über eine unverschlüsselte Leitung eingeben! Um eine verschlüsselte Verbindung herzustellen, gibt es auf gut administrierten Rechnersystemen übrigens ssh als Ersatz von rsh und telnet.
Verschiedene Schlüssel können verschieden lang sein. Da PGP 2.6 und PGP 5.x verschiedene Algorithmen verwenden, werden Empfehlungen für Schlüssellängen erst weiter unten ausgesprochen. Prinzipiell gilt: je länger je sicherer. Vor allem muss man in die Zukunft schauen: nur weil man mit heutigen Algorithmen und Computern einen Schlüssel nicht (oder nicht so leicht) knacken kann, heisst das noch lange nicht, dass das auch in 5 oder 10 Jahren noch der Fall ist...
Da PGP Zufallszahlen benötigt und die auf einem Computer schwer zu bekommen sind, fragt PGP nach Tastendrücken. Man kann hier einfach fröhlich auf der Tastatur herumklimpern, bis PGP genug hat.
Hinweis:Die Wahl des Algorithmus für den Schlüssel ist nicht so einfach. Es gibt auch sehr viele unterschiedliche Argumente für den einen oder anderen Algorithmus. Aus Kompatibilitätsgründen ist RSA zu bevorzugen. Aber einige Versionen von PGP und GnuPGP können mit RSA (und/oder IDEA) nicht umgehen....
Die eigentliche Schlüsselgenerierung wird mit "pgp -kg" gestartet. PGP fragt dann nach Schlüssellänge, User-ID und Passphrase. Für die letzteren beiden gilt das vorhin gesagte. Die Keylänge sollte heutzutage mindestens 1024 Bit betragen. Eigentlich gibt (asser der höheren Verarbeitungszeit - die allerdings heute eigentlich kaum noch jemand belasten sollte) es keinen Grund nicht einen 2048-Bit Schlüssel zu generieren.
Nachdem PGP fertig ist, befindet sich der öffentliche Schlüssel in ~/.pgp/pubring.pgp und der private in ~/.pgp/secring.pgp.
Die Schlüsselgenerierung wird mit "pgpk -g" gestartet. PGP fragt nach Verschlüsselungsverfahren, User-ID, Passphrase, Keylänge und dem Auslaufdatum des Schlüssels. Für das Verschlüsselungsverfahren kann DSS/Diffie-Hellman oder RSA gewählt werden. Es werden vier Standardmöglichkeiten für die Keylänge angeboten. Ich empfehle eine der beiden letzteren zu nehmen. Als Auslaufzeit für den Schlüssel wird man in der Regel 0 (läuft nie aus) wählen.
Die Schlüsselgenerierung wird mit "gpg --gen-key" gestartet. GnuPG fragt nach Verschlüsselungsverfahren, Schlüssellänge, Auslaufdatum des Schlüssels, User-ID (Name Vorname/E-Mail/Kommentar), Passphrase (Mantra). Für das Verschlüsselungsverfahren ist DSA und ElGamal zu wählen. RSA wird bei der Schlüsselgenerierung nicht unterstützt. Es werden drei Standardmöglichkeiten für die Keylänge angeboten. Ich empfehle 2048 zu wählen. Als Auslaufzeit für den Schlüssel wird man in der Regel 0 (läuft nie aus) wählen.
Jetzt ist auch der Moment um ein key revocation Zeritifikat zu machen. Mit diesem kann der Schlüssel als ungültig erklärt werden. Z.B. wenn man den pass phrase vergessen hat. Dieses Zertifikat sollte an einem sicheren Platz gespeichert werden. Da dieses Zertifikat erst in den Umlauf geraten darf, wenn der Schlüssel wirklich zurückgezogen werden soll, müssen die Originalschlüssel zuerst gerettet werden (die Befehle sind in Unix-Syntax angegeben):
Mit dem Schritt 5 wird der ursprüngliche öffentliche Schlüsselbund wieder hergestellt. Das Rückrufzertifikat ist nun in der Datei revoke.asc. Wird diese Datei mit pgp eingelesen (oder auf die Keyserver gelegt), wird der Schlüssel unwiderruflich als ungültig erklärt.
Mit dem Schritt 5 wird der ursprüngliche öffentliche Schlüsselbund wieder hergestellt. Das Rückrufzertifikat ist nun in der Datei revoke.asc. Wird diese Datei mit pgp eingelesen (oder auf die Keyserver gelegt), wird der Schlüssel unwiderruflich als ungültig erklärt.
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: Weitere Infos: siehe http://www.gnupg.org Comment: A revocation certificate should follow iEkEIBECAAkFAjz9Y5cCHQIACgkQ2rgjBHv7Gs12NACcCeb2ofK6PwzYgJsHrx6M czCbmc8An0x7r8vo0l5QEKt1MqsGipbf5wAy =7AF5 -----END PGP PUBLIC KEY BLOCK-----
Das Rückrufzertifikat ist nun in der neu angelgten Datei (z.B. revoke.asc). Wird diese Datei mit gpg eingelesen (oder auf die Keyserver gelegt), wird der Schlüssel unwiderruflich als ungültig erklärt.
Hinweis: Es können auch mehrere Rückrufzertifikate erzeugt werden, je mit den verschiedenen Möglichkeiten warum der Rückruf erfolgt. So kann man im Kommentar auch angeben: Habe Passphrase vergessen.
Das Rückrufzertifikat und die Schlüssel sollten jetzt auf eine Diskette kopiert werden. Die Dateien finden sich:
Speicherort | bei PGP | bei GnuPG |
---|---|---|
Verzeichnis | ~/.pgp | ~/.gnupg |
Dateien |
pubring.pkr oder pubring.pgp secring.pkr oder secring.pgp |
pubring.pgp secring.pgp |
Die Diskette ermöglicht es später zur Kontrolle die original Schlüssel wieder zu holen. Das revoke.asc kann auf der Harddisk gelöscht werden um zu verhindern, dass es versehentlich auf einen Keyserver geschickt wird.
Damit andere Personen den Schlüssel unterzeichnen können, müssen die Schlüsseldaten überprüft werden können. Am Besten ist ein Papier-Ausdruck der eigenen Schlüsseldaten mit der eigenen handschriftlichen Unterschrift.
Die Schlüsseldaten werden mit pgp -kvc <userID> ermittelt. Das kann so aussehen:
host> pgp -kvc nicky@vis Type Bits/KeyID Date User ID pub 2048/DE3699A5 1997/10/27 Nicky KernKey fingerprint = 63 8E 7A CE 84 AF 62 81 24 1A AC 71 54 38 6A 75 1 matching key found.
Die Schlüsseldaten werden mit pgpk -ll <userID> ausgedruckt. Das kann so aussehen:
host> pgpk -ll nicky@vis Type Bits KeyID Created Expires Algorithm Use sec+ 1024 0x176E0311 1998-05-11 ---------- DSS Sign & Encrypt f20 Fingerprint20 = A66C 8CD6 7B46 E8D4 5B45 E814 A815 EC84 176E 0311 sub 2048 0xF7EE4598 1998-05-11 ---------- Diffie-Hellman f20 Fingerprint20 = 8400 46D2 167B 4F59 A186 001F 9C62 33A4 F7EE 4598 uid Nicholas John KernSIG 0x176E0311 1998-05-11 Nicholas John Kern uid Nicky Kern SIG 0x176E0311 1998-05-11 Nicholas John Kern uid Nicholas John Kern SIG 0x176E0311 1998-05-11 Nicholas John Kern
Die Schlüsseldaten werden mit gpg --fingerprint <userID> ausgedruckt. Das kann so aussehen:
pub 1024D/7BFB1ACD 2002-06-04 mein test <test@test> Key fingerprint = 395E B8B6 412D 6755 C048 4D8F DAB8 2304 7BFB 1ACD sub 1024g/C3FF4622 2002-06-04 [verfällt: 2002-06-05]
Unter Unix geht das einfach mit pgp -kxaf <userID> | Mail -s add pgp-public-keys@keys.pgp.net.
Allgemein lässt sich der Key zuerst extrahieren und dann per Mail an die Keyserver senden:
Unter Unix einfach mit pgpk -x <userID> | mail -s add pgp-public-keys@keys.pgp.net .
Allgemein lässt sich der Key zuerst extrahieren und dann per Mail an die Keyserver senden:
GnuPG kann den Schlüssel direkt an den Keyserver senden:
Natürlich ist es auch möglich den Schlüssel zu extrahieren und dann per Web-Interface an die Keyserver zu senden:
Bitte lesen Sie auch die wichtigsten Regeln für den Umgang mit PGP/GnuPGP.