«

»

Jan 31

GPG auf mehreren mobilen Geräten

Bisher war ich recht zögerlich, GPG-Schlüssel auf mobilen Geräten auszurollen. Zu groß waren mein Bedenken, mit dem Gerät auch meine digitale Identität zu verlieren. Hier eine technische Lösung, mit dem sich der Schlüsselverlust prinzipiell handhaben lässt – ohne eine neue Identität erschaffen zu müssen.

Hauptschlüssel sind Nachweis unserer Online-Identität und damit sehr kostbar. Wenn ein Fremder Zugriff auf den privaten Hauptschlüssel erlangt, kann er sich für den ursprünglichen Besitzer ausgeben: Er kann Nachrichten in seinem Namen versenden, Schlüssel beglaubigen oder andere Dinge anstellen, die sonst nur der Eigentümer könnte. Daher muss der private Hauptschlüssel generell sehr-sehr sicher aufbewahrt werden. Geht er verloren, ist man einfach gezwungen, seine Reputation im Web-of-Trust ganz von vorn aufzubauen. Langjährig gepflegte Schlüssel-Beglaubigungen werden auf einmal hinfällig. Wir müssten alle unsere Kommunikationspartner benachrichtigen und Ihnen unseren neuen öffentlichen Schlüssel aushändigen. Für mich nichts, um sie auf jedem leicht verschwindenden Gerät durch die Gegend zu tragen.

Jedoch wird es verdammt lästig, alle Schlüssel stets extrem sicher aufzubewahren: Ich müsste mir erst einen geeigneten portablen Datenträger suchen und damit runter in meinen geheimen Keller gehen, meine Wächter davon überzeugen, dass Ich auch wirklich Ich bin, durch ein Labyrinth finden, dessen Weg nur ich kenne, und meine bissigen Wachhunden füttern. Erst dann wäre der Weg frei zum Safe mit dem netzwerklosen Laptop. Mit diesem würde ich die Nachricht auf dem Datenträger unterschreiben. Und zurück an meinem Internet-Rechner abschicken.

Geht das nicht einfacher? Ja. — Unterschlüssel machen das Leben leichter: Mit einem automatisch erzeugten Unterschlüssel für den vertraulichen Nachrichtenaustausch und einem weiteren für Unterschriften. Anstatt – wie bisher – den Hauptschlüssel zu verwenden, nutzt jeder Eurer Kommunikationspartner fortan die Unterschlüssel, um Nachrichten für Euch zu verschlüsseln oder eure Unterschrift zu überprüfen. Entsprechend entschlüsselst und signiert Ihr mit eurem privaten Unterschlüsseln.

Den Hauptschlüssel werdet Ihr nur in Außnahmefällen verwenden. Und zwar dann, wenn Ihr etwas an euren eigenen oder einem fremden Schlüssel ändern möchtet. Genauer gesagt, benötigt Ihr euren privaten Hauptschlüssel:

  • um einen fremden Schlüssel zu beglaubigen oder eine getätigte Beglaubigung zurückzurufen,
  • um eine neue Benutzerkennung (UID) hinzuzufügen oder eine UID als primär zu markieren,
  • um einen neuen Unterschlüssel zu erstellen,
  • um eine Benutzerkennung (UID) oder Unterschlüssel zurückzurufen,
  • um die Eigenschaften einer UID zu verändern,
  • um das Verfallsdatum deines Hauptschlüssels oder eines Unterschlüssels zu verändern, oder
  • um den kompletten Schlüssel zurückzurufen oder ein Rückrufzertifikat zu erstellen,

weil bei jeder dieser Operationen eine Beglaubigung durch den Hauptschlüssel erforderlich ist.

Das Erzeugen und Zurückziehen von Unterschlüsseln hat keinen Einfluss auf die Reputation des Hauptschlüssels. Wenn eure Unterschlüssel geklaut werden, während dein Hauptschlüssel noch sicher ist, kannst Du die kompromittierten Unterschlüssel zurückziehen und gegen neue austauschen ohne Dir selbst eine neue Reputation aufbauen zu müssen und ohne die Reputation anderer zu schmälern, die mit deinem Hauptschlüssel signiert wurden. Die öffentlichen Unterschlüssel werden über Schlüssel-Server bekannt gemacht.

Wie geht’s?

Anlegen eines Hauptschlüssels

Fall Ihr noch keinen eigenen GPG-Schlüssel habt, müsst Ihr Euch einen anlegen. Wer bereits ein Schlüsselpaar sein eigen nennt und das Verschlüsseln von Mails mit GPG gewohnt ist, kann diesen Punkt überspringen.

$ gpg --gen-key
RSA versus DSA — Bei der Wahl der Schlüssellängen, kann Euch BSI TR-02102 Kryptographische Verfahren: Empfehlungen und Schlüssellängen helfen. Für einen Einsatzzeitraum nach 2016 ist es sinnvoll, RSA-Schlüssel von mindestens 3000 Bits Länge zu verwenden. Meine Empfehlung daher RSA mit 3072 bzw. 4096 Bit zu verwenden. Die Kennung Eures neu erzeugten Hauptschlüssels merken, z.B. D328558F. Sie wird noch benötigt – überall dort, wo im Folgenden MASTERKEYID steht.

Neuer Unterschlüssel

Der standardmäßig erzeugte GPG-Schlüssel enthält bereits einen Unterschlüssel zum Verschlüsseln. Da auf den mobilen Geräten der Hauptschlüssel nicht gespeichert sein wird, ist es notwendig, einen zusätzlichen Unterschlüssel zum Unterzeichnen anzulegen. Mit GPG geht das über den Befehl addkey.

$ gpg --edit-key MASTERKEYID addkey

Separater Signaturschlüssel:

Bitte wählen Sie, welche Art von Schlüssel Sie möchten:
   (3) DSA (nur unterschreiben/beglaubigen)
   (4) RSA (nur signieren/beglaubigen)
   (5) Elgamal (nur verschlüsseln)
   (6) RSA (nur verschlüsseln)
Ihre Auswahl? 4

Auch nach Verlust eines Schlüssels werden neuen Unterschlüssel erzeugt, die dann zukünftig alternativ zu den zurückgezogenen Unterschlüsseln verwendet werden sollen.

Unterschlüssel pro Gerät versus ein Unterschlüssel für alle Geräte

Man könnte jetzt versucht sein, einen eigenen Unterschlüssel für jedes Gerät zu verwenden. Denn bei Verlust eines Gerätes müsste dann nur noch der potenziell gefährdet Unterschlüssel des Gerätes ausgetauscht werden. Bei Einsatz des selben Unterschlüssels auf allen Geräten müssten bei Kompromittierung eines Gerätes die Schlüssel auf allen Geräten ausgetauscht werden.Doch das funktioniert nur für Signatur-Unterschlüssel. Wenn GPG mehrere Verschlüsselungsschlüssel vorfindet, verschlüsselt es leider nur mit dem letzten und nicht mit allen bekannten nicht-widerrufenen Verschlüsselungsschlüssel.

Backup!

Hier angelangt, am besten ein Backup der privaten Schlüssel anlegen. Dieses enthält den Hauptschlüssel. Sicher aufbewahren! Damit könnt ihr später kompromittierte Schlüssel zurückrufen und neue Schlüssel beglaubigen.

$ gpg -a --output secret-backup.asc --export-secret-keys MASTERKEYID

Export ohne Hauptschlüssel

Die erzeugten privaten Unterschlüssel lassen sich für den Einsatz auf mobilen Geräten ohne den Hauptschlüssel exportieren. Ich empfehle Euch, diese exportierten Unterschlüssel mit einer anderen Passphrase zu sichern als Euren sicher aufbewahrten Hauptschlüssel.

$ gpg edit-key MASTERKEYID passwd

Auf diesem Wege bleibt Euer privater Hauptschlüssel geschützt, wenn Euer täglich genutztes Passwort von jemanden kompromittiert wird, der Zugriff auf Euer Backup hat: Das Schlüsselmaterial im Backup bleibt durch die alte Passphrase geschützt.

Mit geänderter neuer Passphrase lassen sich die Unterschlüssel ohne Hauptschlüssel exportieren:

$ gpg -a --output secret-subkeys.asc --export-secret-subkeys MASTERKEYID

Alternativ könnt Ihr die Unterschlüssel-ID gefolgt von einem Ausrufezeichen angeben, um festzulegen, welche Unterschlüssel exportiert werden sollen:

gpg --output secret-subkeys --export-secret-subkeys SUBKEYID! [SUBKEYID! ...]

Die erzeugte Datei könnt Ihr auf Euren mobilen Geräten importieren, um z.B. Eure Mails auch unterwegs entschlüsseln und zu unterschreiben. Da der Hauptschlüssel nicht mehr enthalten ist, kann mit dem Schlüsselmaterial auf dem mobilen Gerät kein Schlüssel beglaubigt oder zurückgerufen werden. Das könnt nur Ihr mit dem sicher aufbewahrten Hauptschlüssel – nicht mit dem Mobilgerät.

Wenn Ihr auch den Hauptschlüssel auf dem PC entfernen wollt, löscht den kompletten privaten Schlüssel

$ gpg --delete-secret-keys MASTERKEYID

und importiert die oben exportierten Unterschlüssel:

gpg --import secret-subkeys.asc

Hinweis: gpg -K zeigt sec# statt nur sec für private Schlüssel an, die nicht wirklich da sind. Wenn ihr z.B. die oben ohne Hauptschlüssel exportierten Unterschlüssel auf einem Gerät importiert, müsste sec# erscheinen.

Im Ernstfall — Wiederrufen von Unterschlüsseln

Wenn das Unglück seinen Lauf nimmt und Ihr gezwungen seid, Schlüssel zurückzurufen, macht Ihr das Folgende: Zum Wiederrufen von Unterschlüsseln benötigt Ihr den Hauptschlüssel – ggf. aus Eurem Backup.

$ gpg --edit-key MASTERKEYID
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Geheimer Schlüssel ist vorhanden.
pub  4096R/D328558F erzeugt: 2016-01-03 verfällt: 2016-01-10 Aufruf: SC 
                    Vertrauen: uneingeschränkt Gültigkeit: uneingeschränkt
sub  4096R/484B7199 erzeugt: 2016-01-03 verfällt: 2016-01-10 Aufruf: E 
sub  2048R/C5A0BF20 erzeugt: 2016-01-03 verfällt: 2016-01-06 Aufruf: S 
[ uneing.] (1). Rolf Thomasius (Test-Key) <...>

Wählt den zurückzuziehenden Unterschlüssel (sub) mit den Befehl key. Der Befehl key toggelt die Auswahl. Dieser erwartet eine Nummer als Parameter. Die Nummer steht für den Unterschlüsseleintrag. Die Nummer 1 steht für den ersten, Nummer 2 für den zweiten usw. Ausgewählte Unterschlüsseleinträge sind mit einen * versehen. Es können mehrere Einträge durch aufeinanderfolgende Aufrufe gewählt oder abgewählt werden. Im Beispiel markieren wir den Signaturschlüssel C5A0BF20 und den für die Verschlüsselung 484B7199, um sie anschließend zurückzuziehen.

gpg> key 1
[...]
gpg> key 2
pub  4096R/D328558F erzeugt: 2016-01-03 verfällt: 2016-01-10 Aufruf: SC 
                    Vertrauen: uneingeschränkt Gültigkeit: uneingeschränkt
sub* 4096R/484B7199 erzeugt: 2016-01-03 verfällt: 2016-01-10 Aufruf: E 
sub* 2048R/C5A0BF20 erzeugt: 2016-01-03 verfällt: 2016-01-06 Aufruf: S 
[ uneing.] (1). Rolf Thomasius (Test-Key) <...>

Der ausgewählte Unterschlüssel wird mit dem Befehl revkey zurückgezogen.

gpg> revkey

Verteilen über Schlüsselserver

Über öffentliche Schlüsselserver lassen sich die öffentlichen Unterschlüssel inklusive des öffentlichen Teil Eures Hauptschlüssels verbreiten. Beim Veröffentlichen werden ggf. auch die Schlüsselrückrufe abgeglichen. Kommunikationspartner kommen so schnell und bequem an Euer aktuelles Schlüsselmaterial.

$ gpg --keyserver pool.sks-keyservers.net --send-key MASTERKEYID

Die Schlüsselserver synchronisieren sich weltweit in kurzen Zeitabständen. Es genügt daher, Schlüssel über einen Server zu publizieren. Der oben angegebene Servername führt zu einer zufälligen Wahl eines am weltweiten Netzwerk teilnehmenden Servers.

Mail-Verschlüsselung auf einem Androiden

Zur Mailverschlüsselung auf dem Androiden empfehle ich K9-Mail in Verbindung mit OpenKeychain.

Verschlüsselt Ihr Eure Mails? Hinterlasst einen Kommentar!

 

1 Kommentar

  1. Bacchus

    Hallo, vielen Dank für die tolle Anleitung. Habe leider doch Stunden gebraucht, bis alles lief aber das Ganze klappt toll!
    Ein „Fehler“ hat sich unter „Export ohne Hauptschlüssel“ – Passwortänderung eingeschlichen. Es muss natürlich „$ gpg –edit-key MASTERKEYID passwd“ heißen!
    Übrigens, die ganze Anleitung klappt auch unter dem Befehl gpg2 statt gpg!
    Gruß
    Bacchus

Schreibe einen Kommentar