GnuPG-Dieb

diebstahlresistente PGP-Schlüssel erstellen

E-Mails sind bekanntlich wie Postkarten zu sehen, wenn sie über das Internet versandt werden. Sie sind für alle am Transport Beteiligten lesbar. Damit das nicht so bleibt, hat vor inzwischen fast 40 Jahren ein schlauer Softwareentwickler namens Philip Zimmermann das Programm Pretty Good Privacy (engl. ziemlich gute Privatsphäre) kurz PGP, entwickelt. Die freie Alternative zu PGP ist GNU Privacy Guard oder kurz GnuPG oder ganz kurz GPG.

Die Sache mit den Schlüsseln

PGP und auch GPG verwendet die sogenannte asymetrische Verschlüsselung. Dabei wird für jeden Nutzer ein Schlüsselpaar erstellt, das aus einem öffentlichen und einem privaten Schlüssel besteht. Mit dem öffentlichen Schlüssel, den man in die weite Welt verteilt, können andere Personen Nachrichten verschlüsseln, die nur der Besitzer des zugehörigen privaten Schlüssels wieder entschlüsseln kann. Und mit dem privaten Schlüssel kann man, wie eben erwähnt, empfangene Nachrichten entschlüsseln und Nachrichten, die man an jemand anderen versendet digital signieren, damit der Empfänger prüfen kann, dass die Nachricht auf dem Weg zu ihm auch nicht verändert wurde. Der private Schlüssel ist zusätzlich mit einer Passphrase geschützt, damit ein Unbefugter, der in den Besitz des privaten Schlüssels gekommen ist, nicht einfach Nachrichten in fremdem Namen verfassen oder persönliche Nachrichten, die gar nicht für ihn bestimmt sind, lesen kann. Diese Passphrase ist also die letzte Hürde, die bei Verlust eines privaten Schlüssels noch vor Missbrauch schützt. Erlangt der Unbefugte auch darüber Kenntnis, dann ist die digitale Identität in unbefugten Händen und mit krimineller Energie können dann in fremdem Namen allerhand schlimme Dinge angestellt werden. Dann hilft es nur noch, den Schlüssel zu widerrufen, was nach langer Nutzung viele Unannehmlichkeiten und Aufwand nach sich ziehen kann.

Nun möchte man aber auch unterwegs am Smartphone oder am Laptop Nachrichten lesen und schreiben können. Man muss also seinen privaten Schlüssel dabei haben. Und dort kann er verloren gehen. Was also tun?

Eine Lösung für das Problem

Es gibt die Möglichkeit, sogenannte Unterschlüssel (engl. subkeys) zu erstellen. Das hilft, das Problem zumindest zu lindern.

  1. Man erstellt ein GPG-Schlüsselpaar, das nur einen Zertifizierungs-Schlüssel beinhaltet. Damit können weitere Unterschlüssel zertifiziert werden.
  2. Es werden drei Unterschlüssel erzeugt, die alle mit dem Zertifizierungs-Schlüssel verbunden sind:
    1. Signatur-Unterschlüssel
    2. Verschlüsselungs-Unterschlüssel
    3. Authentifizierungs-Unterschlüssel
  3. Diese vier Schlüssel sind das Master-Schlüsselpaar. Es sollte an einem sicheren Ort abgelegt werden.
  4. Man legt eine Kopie dieses Schlüsselpaares auf seinem Laptop ab und entfernt in dieser Kopie den Zertifizierungs-Schlüssel. Nennen wir es transportables-Schlüsselpaar.

Mit diesem transportablen Schlüsselpaar können nun Nachrichten signiert, verschlüsselt und entschlüsselt werden.

Was ist der Vorteil dieser Konfiguration? Sollte der Laptop und damit das transportable Schlüsselpaar abhanden kommen, dann muss nicht der komplette Schlüssel widerrufen werden, sondern nur die Unterschlüssel. Und die Kommunikationspartner, die den Fingerabdruck unseres öffentlichen Schlüssels geprüft haben und dann den Schlüssel als vertrauenswürdig markiert haben, müssen im Krisenfall den dann neu erstellten öffentlichen Schlüssel nicht noch einmal prüfen, denn der stammt dann vom selben, immer noch vorhandenen, weil nur an einem sicheren Ort gelagerten, Zertifizierungsschlüssel ab, wie der, der im Krisenfall widerrufen wurde.

Kommandozeile – leider keine grafische Oberfläche

Für das, was jetzt folgt, gibt es leider keine grafische Oberfläche. Man muss es „per Hand“ in der Kommandozeile erledigen. Aber das ist gar nicht so schwer.

Mit dem Kommando

kann ein neues Schlüsselpaar erzeugt werden. Der zusätzliche Paramter –expert sorgt dafür, dass weitere Auswahlpunkte zur Verfügung gestellt werden, die im Folgenden benötigt werden.

Durch Wahl des Parameters

kann anschließend selbst bestimmt werden, welche Funktionen der Schlüssel erhalten soll.

Als Standard wird hier Signieren, Zertifizieren und Verschlüsseln vorgeschlagen.

Zertifizierungsschlüssel erzeugen

Da aber erst mal nur ein Schlüssel erzeugt werden soll, mit dem nur zertifiziert werden kann, muss bei der Auswahl erst das Signieren abgeschaltet werden, indem die Auswahl S

und anschließend das Verschlüsseln durch Auswahl von V

abgewählt wird. Anschließend sollte nur noch Zertifizieren

als Funktion für den Schlüssel angezeigt werden. Mit Auswahl von Q

erscheint als nächstes die Abfrage nach der Schlüssellänge. Von der Software wird derzeit 3072 Bit vorgeschlagen. Ich empfehle hier die maximale Länge von 4096 Bit zu verwenden, da Computer immer leistunsfähiger werden und ein heute als genügend lang betrachteter Schlüssel in ein paar Jahren vielleicht nicht mehr lang genug ist und von Gangstern, Drei-Buchstaben-Diensten und anderen unliebsamen Personen und Institutionen mit genügend Geld und Rechenpower geknackt werden kann.

Als nächstes wird definiert, wie lange dieser Schlüssel gültig sein soll. Wenn man den Schlüssel wirklich sicher hinterlegt und sich sicher ist, dass niemals ein Fremder an diesen Schlüssel kommt und der Datenträger niemals versagen wird, dann kann man hier auch die vorgeschlagene Auswahl (0) treffen, was bedeutet, dass der Schlüssel ewig gültig ist. Man kann die Gültigkeit jederzeit nachträglich ändern, so dass auch eine kürzere Gültigkeit gewählt werden kann.

Im nächsten Schritt wird der neue Schlüssel mit einer User-ID versehen, welche die e-mail-Adresse ist, zu der dieser Schlüssel erzeugt werden soll.

Durch die Auswahl (F)ertig wird mit dem Generieren des Schlüsselpaares begonnen.

Das dauert je nach System ein Weilchen. Außerdem wird man aufgefordert, eine Passphrase zur Absicherung des privaten Schlüssels einzugeben und zur Verifikation zu wiederholen.

Unterschlüssel hinzufügen

Jetzt, wo das Zertifizierungs-Schlüsselpaar existiert, können die Unterschlüssel hinzugefügt werden.

Dazu muss dem Programm GPG beigebracht werden, für welchen der vorhandenen Schlüssel jetzt Unterschlüssel erzeugt werden sollen (es könnten ja mehrere existieren). Dazu ruft man folgendes auf:

Hinweis: Falls auf dem System mehrere Schlüssel existieren, die die gleiche User-ID besitzen, dann sollte man statt der User-ID die Key-ID verwenden.

Mit dem Kommando addkey wird ein neuer Unterschlüssel hinzugefügt

Da mit dem zusätzlichen Parameter –expert weitere Optionen angeboten werden, kann hier jetzt wieder mit Auswahl von 8 die Nutzungsart selbst eingestellt werden.

Vorgeschlagen wird Signieren und Verschlüsseln. Da es für jede Nutzungsart einen separaten Schlüssel geben soll, entfernt man im ersten Schritt durch Auswahl von V die Nutzungsart Verschlüsseln, so dass nur noch Signieren übrig bleibt.

Signierungs-Unterschlüssel erzeugen

Mit der Auswahl Q wird die Auswahl der Nutzbarkeiten des Unterschlüssels beendet und es geht ans Generieren des Unterschlüssels. Vorher ist aber wieder die Schlüssellänge festzulegen. Wieder gilt hier, je länger je besser, also das Maximum von 4096 Bit. Im nächsten und letzten Schritt steht wieder die Frage nach der Gültigkeitsdauer des Unterschlüssels. Hier sollte man jetzt nicht die Vorauswahl 0 ( entspräche unendlich lange) wählen. Da dieser Schlüssel später auf dem Laptop/Smartphone diebstahlgefährdet ist, sollte hier eine relativ kurze Zeitspanne gewählt werden. Bei Verlust wird der Schlüssel spätestens mit dem Ablaufdatum ungültig und kann nicht mehr verwendet werden. Es sei denn, das Ablaufdatum wird nachträglich verlängert oder durch ein Widerrufs-Zertifikat sofort ungültig gemacht. Das Ablaufdatum ist damit so etwas wie eine lange Selbstzerstörungssequenz, die aber jederzeit verlängert oder auch sofort ausgelöst werden kann. Ich persönlich habe als Gültigkeitszeitraum hier ein Jahr gewählt. Sollte der Krisenfall nicht eintreten, muss ich in knapp einem Jahr das Ablaufdatum verlängern und den Schlüssel auf einen Schlüsselserver (dazu später mehr) hochladen bzw. dort aktualisieren, damit meine Kommunikationspartner den Schlüssel aktualisieren können. Ich kann diese natürlich auch per e-mail oder einem anderen Weg an diese schicken.

Durch Auswahl von 1y wird der Unterschlüssel erzeugt. Dazu wird nach der Passphrase des Zertifizierungsschlüssels gefragt.

Damit existiert jetzt neben dem Zertifizierungs-Schlüssel ein weiterer Signierungs-Unterschlüssel.

Dieser Prozess muss jetzt noch zwei mal wiederholt werden, um auch noch einen Verschlüsselungs-Unterschlüssel und einen Authentisierungs-Unterschlüssel zu erzeugen.

Verschlüsselungs-Unterschlüssel erzeugen

Mit dem Kommando addkey wird ein neuer Unterschlüssel hinzugefügt

Vorgeschlagen wird Signieren und Verschlüsseln. Da es für jede Nutzungsart einen separaten Schlüssel geben soll, entfernt man in diesem Schritt durch Auswahl von S die Nutzungsart Signieren, so dass nur noch Verschlüsseln übrig bleibt.

Mit der Auswahl Q wird die Auswahl der Nutzbarkeiten des Unterschlüssels beendet und es geht ans Generieren des Unterschlüssels. Ich spare hier die Erläuterungen zu Schlüssellängen und Gültigkeitsdauern, da es identisch zum erläuterten Signierungs-Unterschlüssel ist.

Damit existiert jetzt neben dem Zertifizierungs-Schlüssel und dem Signierungs-Unterschlüssel ein weiterer Verschlüsselungs-Unterschlüssel.

Damit muss dieser Prozess muss jetzt noch einmal wiederholt werden, um auch noch einen Authentifizierungs-Unterschlüssel zu erzeugen.

Verschlüsselungs-Unterschlüssel erzeugen

Mit dem Kommando addkey wird ein neuer Unterschlüssel hinzugefügt

Da nur Signieren und Verschlüsseln vorgeschlagen wird, der Schlüssel aber nur zur Authentisierung nutzbar sein soll, muss Authentisierung dazu gewählt und Signieren und Verschlüsseln abgewählt werden.

Vorgeschlagen wird Signieren und Verschlüsseln. Da es für jede Nutzungsart einen separaten Schlüssel geben soll, fügt man in diesem Schritt die Nutzungsart Authentisierung durch Auswahl von A hinzu und entfernt durch Auswahl von S die Nutzungsart Signieren, und durch Auswahl von V die Nutzungsart Verschlüsseln, so dass nur noch Authentisierung übrig bleibt.

Mit der Auswahl Q wird die Auswahl der Nutzbarkeiten des Unterschlüssels beendet und es geht ans Generieren des Unterschlüssels. Ich spare hier die Erläuterungen zu Schlüssellängen und Gültigkeitsdauern, da es identisch zum erläuterten Signierungs-Unterschlüssel ist.

Neben dem Zertifizierungs-Schlüssel (C) (engl. certify) mit unbegrenzter Gültigkeit gibt es noch die für ein Jahr gültigen Unterschlüssel zum Signieren (S), Verschlüsseln (E) (engl.encrypt) und zum Authentisieren (A).

Hash-Präferenzen stärken

Damit der Schlüssel starke Algorithmen bevorzugt, verwenden wir den Befehl setpref SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed

und anschließend sollte der Schlüsselbund mit

gespeichert werden.

Widerrufs-Zertifikat erstellen

Im nächsten Schritt wird ein Widerrufs-Zertifikat erstellt. Sollte der Zertifizierungs-Schlüssel verloren gehen, ist dieses Widerrufs-Zertifikat der einzige Weg, den Kommunikationspartner mitzuteilen, dass dieser Schlüssel nicht mehr verwendet werden soll. Dieser Schritt sollte nicht ausgelassen werden. Es ist sozusagen der Not-Aus-Schalter.

Damit ist der Master-Schlüsselbund fertig. Falls man noch fremde öffentliche Schlüssel mit diesem neuen Schlüssel signieren möchte, wäre jetzt ein günstiger Zeitpunkt, denn nachdem im nächsten Schritt der Zertifizierungs-Schlüssel entfernt wurde, ist das (erst mal) nicht mehr möglich.

Der master-Schlüsselbund sollte jetzt in Dateien exportiert und an einem sicheren Ort gespeichert werden.

Schlüsselbund sichern

Mit dem Kommando

werden die privaten Schlüssel in eine Datei gesichert.

Mit dem Kommando

werden die öffentlichen Schlüssel in eine Datei gesichert.

Diese drei Dateien

  • Privater-Schlüssel
  • Öffentlicher Schlüssel
  • Widerrufs-Zertifikat

sollten an einem sicheren Ort gespeichert werden. Sie sind das Master-Schlüsselpaar.

Transportables Schlüsselpaar erstellen

Da nun das Master-Schlüsselpaar als Dateien an einem sicheren Ort gespeichert wurde, kann nun das transportable Schlüsselpaar erstellt werden, indem der Zertifizierungs-Schlüssel vom Schlüsselpaar entfernt wird.

Mit dem Befehl

werden die Unterschlüssel in die Datei subkeys exportiert.

Anschließend wird der Zertifizierungsschlüssel mit dem Kommando

vom Schlüsselbund entfernt.

Nun müssen die zuvor entfernten Unterschlüssel wieder importiert werden. Das geschieht mit dem Kommando gpg –import subkeys

Anschließend sollte die temporäre Datei subkeys gelöscht werden. Je nach verwendetem Betriebssystem ist das verschieden.

Mit dem Kommando gpg –list-secret-keys oder kurz gpg -K (großes K!) können alle privaten Schlüssel aufgelistet werden.

Das Zeichen # zeigt an, dass der Schlüssel nicht im Schlüsselbund enthalten ist.

Nutzung des transportablen Schlüsselpaares

Dieses transportable Schlüsselpaar kann jetzt genutzt werden zum

  • verschlüsseln
  • entschlüsseln
  • signieren

von Nachrichten und Dateien genutzt werden.

Um fremde öffentliche Schlüssel zu signieren, benötigt man allerdings das Master-Schlüsselpaar!

öffentlichen Schlüssel auf PGP-Server hochladen

Der öffentlichen Schlüssel sollte jetzt zu einem PGP-Key-Server hochgeladen werden. Aber Obacht. Man sollte nicht einen x-beliebigen Key-Server nehmen. Viele Key-Server verifizieren die hochgeladenen Schlüssel nicht, so dass im Prinzip jeder böse Bube Schlüssel für alle möglichen e-mail-Adressen erstellen kann, obwohl derjenige gar nicht Eigentümer dieser Adresse ist. Das führt dann dazu, das potentielle Kommunikationspartner den vorgeblichen Schlüssel vom Server laden, die Nachricht damit verschlüsseln und der wirkliche Empfänger diese Nachricht gar nicht entschlüsseln kann. Deshalb sollte man seinen öffentlichen Schlüssel nur auf solche Key-Server laden, die die im Schlüssel angegebene e-mail-Adresse verifizieren. Das macht zum Beispiel

https://keys.openpgp.org/

Hier ist sichergestellt, dass immer nur genau ein Schlüssel für eine Adresse vorgehalten wird und nach dem Hochladen der Schlüssel erst einmal verifiziert wird, indem ein Aktivierungslink an die im Schlüssel angegebene Adresse geschickt wird.

Im Krisenfall

Sollte es dazu gekommen sein, dass der transportable Schlüssel abhanden gekommen ist sollten die Unterschlüssel widerrufen werden. Dazu muss das zuvor in Dateien gesicherte Master-Schlüsselpaar importiert werden.

Mit dem Kommando

gpg –edit-key manfred.mustermann@domain.de

kann der Schlüssel zum Editieren geöffnet werden.

Um die Unterschlüssel zu selektieren wird der Befehl key, gefolgt von der laufenden Nummer innerhalb der Liste benutzt. Um den ersten Schlüssel (Nutzung S) zu selektieren, wird also key 1 verwendet.

Das der Schlüssel selektiert wurde, ist an dem * erkennbar.

mit key 2 und key 3 sind alle Unterschlüssel ausgewählt

und können nun mit dem Kommando revkey gelöscht/entfernt werden. Die Änderungen werden mit dem Kommando

gespeichert.

Anschließend können wie beschrieben neue Unterschlüssel zum Signieren, Verschlüsseln und Authentisieren erzeugt werden und diese neuen öffentlichen Schlüssel auf dem Key-Server veröffentlicht werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.