Subkeys benutzen

  • Um Rückfragen vorzubeugen, bitten wir um folgende Angaben:

    • Thunderbird-Version: 60.3.0
    • Betriebssystem + Version: Windows 10, 1803
    • Kontenart (POP / IMAP): IMAP
    • Postfachanbieter (z.B. GMX): diverse
    • PGP-Software / PGP-Version: GnuPG 2.2.8
    • Eingesetzte Antivirensoftware: Defender
    • Firewall (Betriebssystem-intern/Externe Software): Windows intern


    Hallo miteinander,


    beim Eröffnen dieses Beitrags wurde mir ein Thread empfohlen, der ein ähnliches Thema behandelt. Keine schlechte Idee. Das Stichwort kommt darin vor. Meine Frage beantworten die Beiträge leider nicht.

    Da ich nicht weiß, ob man sich bei euch an bestehende Themen anhängen darf oder besser ein neues eröffnet, habe ich mich entschlossen, ein neues zu eröffnen. Ich entschuldige mich, falls das nicht gewünscht ist.


    Also, meine derzeitigen Schlüssel laufen demnächst aus. Ich möchte die Gelegenheit nutzen und es diesmal komfortabler und sicherer einrichten. Der Mensch ist doch eine bequeme Socke. :whistling:

    Ich hätte gern einen Primärschlüssel, der nur zum Signieren anderer Schlüssel benutzt werden soll. Darunter Subkeys zum Signieren und Verschlüsseln von E-Mails meiner verschiedenen Adressen.

    Den Hauptschlüssel möchte ich von den Unterschlüsseln trennen und offline speichern. Das heißt, diesen lösche ich aus dem Schlüsselbund. Auf all meinen Geräten sollen nur noch der öffentliche Teil des Primär- und die Unterschlüssel gespeichert werden.


    Das Erzeugen usw. ist kein Problem. Die Frage ist, wie man diese dann später in Thunderbird benutzt. Genügt es, dazu den öffentlichen Teil des Hauptschlüssels in Thunderbird auszuwählen? Findet Enigmail dann den jeweils richtigen Unterschlüssel anhand der Mailadresse?


    Vielen Dank bereits jetzt.

  • Die Frage ist, wie man diese dann später in Thunderbird benutzt. Genügt es, dazu den öffentlichen Teil des Hauptschlüssels in Thunderbird auszuwählen? Findet Enigmail dann den jeweils richtigen Unterschlüssel anhand der Mailadresse?

    Für Deine Kommunikationspartner funktioniert alles automatisch. Es wird also immer der richtige öffentliche (Sub-)Schlüssel verwendet, um Deine Signaturen zu prüfen oder Nachrichten an Dich zu verschlüsseln.


    Wenn Du entschlüsseln oder (Nachrichten) signieren willst, brauchst Du aber natürlich die entsprechenden privaten (Sub-)Schlüssel. Der öffentliche Teil ist dafür nicht ausreichend. Wenn Du zuerst den öffentlichen Schlüssel und erst danach die privaten Subkeys importierst, sollte der Import wie gewohnt funktionieren. Wenn ich mich recht erinnere kann es mit dem "modernen" gnupg ab Version 2 aber Probleme geben, wenn vor dem Import des öffentlichen Schlüssels private Komponenten desselben Schlüssels im Schlüsselbund gespeichert wurden.


    Bei der Nutzung sollte immer automatisch der richtige Subkey gewählt werden. Aus mir unbekannten Gründen versagt die Automatik aber beim Signieren von Nachrichten, wenn mehrere Subkeys zum Signieren vorhanden sind und der private Teil des ersten S-Subkeys fehlt (siehe hier). Wenn ich mich richtig erinnere, lässt sich das entweder durch ein "Umsortieren" der Schlüssel beheben (sehr aufwändig, da gnupg das offiziell nicht kann) oder man löscht lokal einfach alle anderen S-Subkeys. Dann kann man eigene Signaturen nicht mehr zuverlässig prüfen, aber das Signieren funktioniert wieder.


    Zumindest auf der Kommandozeile kann man alternativ den Subkey auch manuell wählen (Ausrufezeichen vor die Key-Id stellen). Mit Enigmail wird das aber schwierig. Da wäre es vermutlich einfacher, direkt das eigentliche Problem in gnupg zu patchen. ;)

  • Vielen Dank, generalsync,


    man sieht, Verschlüsselung/Signierung ist ganz einfach. ;-)


    Ich möchte deshalb noch ein wenig nachfragen.


    Zitat von generalsync

    Für Deine Kommunikationspartner funktioniert alles automatisch. Es wird also immer der richtige öffentliche (Sub-)Schlüssel verwendet,


    Was schickt Enigmail denn mit, wenn ich meinen öffentlichen Schlüssel anhänge? Wäre der öffentlichen Teil meines Hauptschlüssels dabei?

    Werden sämtliche öffentlichen Subkeys mitgeschickt, also auch die der anderen E-Mailadressen?


    Zitat von generalsync

    Wenn Du entschlüsseln oder (Nachrichten) signieren willst, brauchst Du aber natürlich die entsprechenden privaten (Sub-)Schlüssel. Der öffentliche Teil ist dafür nicht ausreichend.


    Das ist klar. Das hatte ich vielleicht nicht eindeutig genug beschrieben. Abtrennen und somit nur noch extern speichern möchte ich nur den privaten Teil des Hauptschlüssel. Die Unterschlüssel bleiben komplett.


    Zitat von generalsync

    Wenn Du zuerst den öffentlichen Schlüssel und erst danach die privaten Subkeys importierst, sollte der Import wie gewohnt funktionieren.


    Ich hatte mir das so gedacht, auf der Kommandozeile:


    exportiere ich alle Schlüssel zur Aufbewahrung

    exportiere ich alle privaten Unterschlüssel

    lösche alle privaten Schlüssel inkl. Hauptschlüssel

    (exportiere ich den öffentlichen Teil des Hauptschlüssels, falls ich ihn

    separat ihn für andere Geräte benötige, siehe unten)

    importiere ich nur die privaten Unterschlüssel zurück


    Auf den anderen Geräten importiere ich die privaten Unterschlüssel. In der Annahme, dass Enigmail alles mitschickt, würde ich nun aus Bequemlichkeit eine Mail an mich selbst senden, an die die öffentlichen Subkeys sowie der öffentliche Hauptschlüssel durch Enigmail automatisch angehängt sind.

    Soweit ich dich verstanden habe, wird das so nicht klappen, weil der öffentliche Hauptschlüssel zuerst importiert werden muss? Dann mache ich das nicht per Mail an mich. Soviel mehr Aufwand wäre es nicht.


    Zitat von generalsync

    Aus mir unbekannten Gründen versagt die Automatik aber beim Signieren von Nachrichten, wenn mehrere Subkeys zum Signieren vorhanden sind

    Ich nehme an, dies bezieht sich auf den Fall mehrerer Subkeys zu einer Identität? Das könnte ich in meinem Fall ausschließen. Es wird für jede Mailadresse nur einen Subkey zum Signieren geben. Wohl aber soll es unter dem Hauptschlüssel mehrere Identitäten geben, die jeweils einen eigenen Subkey zum Signieren haben. Wenn ich dich richtig verstanden habe, sollte dieses Problem dann bei mir nicht auftreten.

    Oder betrifft es auch alte, abgelaufene Subkeys, die es irgendwann ja

    geben wird?

  • Was schickt Enigmail denn mit, wenn ich meinen öffentlichen Schlüssel anhänge?

    In PGP enthält ein "öffentlicher Schlüssel" alle öffentlichen Schlüssel (Subkeys und Primärkey), UIDs, exportierbare Signaturen, etc.

    Werden sämtliche öffentlichen Subkeys mitgeschickt, also auch die der anderen E-Mailadressen?

    Ich glaube, hier hat sich ein Verständnisproblem eingeschlichen: Subkeys beziehen sich nicht auf E-Mail-Adressen, sondern sind immer für alle UIDs des Schlüssels gültig. Die Einschränkungen der Subkeys beziehen sich auf die damit erlaubten Aktionen (z.B. kann ein S-Subkey ausschließlich zum Signieren von Nachrichten oder Daten verwendet werden, nicht aber zum Entschlüsseln oder Signieren anderer Keys). Außerdem haben Subkeys individuelle Gültigkeit, können also einzeln mit einem Ablaufdatum versehen werden oder zurückgezogen werden.

    Ich hatte mir das so gedacht, auf der Kommandozeile: [...]

    Mit Glück kann das zwar funktionieren, aber deine Schlüssel bleiben dabei nicht offline. Normalerweise wäre das Vorgehen:

    1. Erzeugung des gesamten Schlüssels (alle UIDs und Unterschlüssel) unter Airgap, d.h. auf einem isolierten Gerät ohne Netzwerkzugriff
    2. Ggf. Beglaubigung des Schlüssels mit anderen Schlüsseln unter Airgap
    3. Export von öffentlichem Schlüssel
    4. Export von privaten Teilschlüsseln (je nach Szenario einer bis viele)
    5. Übertragung des öffentlichen Schlüssels sowie der Teilschlüssel auf die Geräte, auf denen die Schlüssel eingesetzt werden sollen (2 Dateien je Gerät: eine öffentliche und eine private)
    6. Import des öffentlichen Schlüssels auf aktiv genutzten Geräten
    7. Import des jeweiligen privaten Teilschlüssels auf aktiv genutzten Geräten
    8. Ggf. Upload auf Keyserver (von einem der aktiv genutzten Geräte)

    Bis auf Schritte 1 und 4 musst Du dabei nicht wirklich auf Subkeys achten.


    Ich nehme an, dies bezieht sich auf den Fall mehrerer Subkeys zu einer Identität? Das könnte ich in meinem Fall ausschließen. Es wird für jede Mailadresse nur einen Subkey zum Signieren geben.

    Wie bereits erwähnt, gibt es keinen Bezug von Subkeys zu UIDs. Wenn Du für zwei UIDs unterschiedliches Schlüsselmaterial nutzen willst, gehören die UIDs logischerweise nicht mehr zur selben Identität (und sollten daher unabhängige Schlüssel nutzen). In diesem Fall können sich die Schlüssel höchstens wechselseitig beglaubigen.


    Zur eigentlichen Frage: Nein, das Problem tritt nicht auf, wenn ein Schlüssel nur einen S-Subkey enthält. Ich habe es nicht getestet, aber ich glaube abgelaufene S-Subkeys machen keine Probleme.

  • Zunächst einmal vielen Dank!


    Zitat von generalsync

    Ich glaube, hier hat sich ein Verständnisproblem eingeschlichen


    In der Tat. Bin ich doch bisher davon ausgegangen, dass ich jedem Subkey auch unterschiedliche Identitäten zuweisen kann, die eine Teilmenge der Identitäten des primären Keys sind.


    Zitat von generalsync

    können also einzeln ... zurückgezogen werden.


    Dies ist genau einer der Gründe, weshalb ich mir eine solche Struktur aufbauen möchte. Ich möchte für den Fall, dass mir mein Laptop oder Smartphone verloren gehen sollte, die Subkeys zurückrufen können, ohne den Hauptschlüssel zu widerrufen und dessen Signaturen zu verlieren.


    Zitat von generalsync

    Mit Glück kann das zwar funktionieren, aber deine Schlüssel bleiben dabei nicht offline.


    Das verstehe ich nun nicht. Die Schlüssel würde ich offline erzeugen (also unter Airgap) und den primären wie beschrieben nach dem Erstellen der Subkeys und dessen externer Sicherung löschen.

    Zur Benutzung auf den unterschiedlichen Geräten werden nur die Subkeys und der öffentliche Schlüssel verteilt. Somit ist der primäre Schlüssel durchgängig offline und bekommt nie Kontakt zu anderen Geräten oder gar dem Internet. Oder habe ich da einen Haken übersehen?


  • Die Schlüssel würde ich offline erzeugen (also unter Airgap) und den primären wie beschrieben nach dem Erstellen der Subkeys und dessen externer Sicherung löschen. [...] Somit ist der primäre Schlüssel durchgängig offline und bekommt nie Kontakt zu anderen Geräten oder gar dem Internet. Oder habe ich da einen Haken übersehen?

    Das zuverlässige Löschen eines Schlüssels ist je nach Szenario nur schwer bis gar nicht möglich.


    Wenn man davon ausgeht, dass Hardware prinzipiell unbemerkt Daten speichern kann, darf ein Gerät hinter der Airgap bis zur physischen Vernichtung nicht mehr mit dem Internet verbunden werden. Der Schlüssel kann also ohnehin einfach gespeichert bleiben, bis Du ihn das nächste mal brauchst.


    Wenn in Deinem Szenario die Hardware vertrauenswürdig ist, reicht das vollständige Überschreiben aller Datenträger. Den Schlüssel zusätzlich einzeln zu Löschen bringt dann keinen nennenswerten Sicherheitsgewinn. Wenn du Linux nutzen würdest, könnte man eventuell noch debattieren, ob und wie man gezielter vorgehen kann – bei Windows, insbesondere Windows 10, macht das aus meiner Sicht keinen Sinn. Es gibt einfach zu viele Komponenten, die Kopien von Dateien machen und später hochladen könnten. Als Alternative ginge vielleicht auch ein Live-Linux, dass keine Spuren auf den Platten hinterlässt, aber auch hier würdest du den Schlüssel nicht einzeln löschen.


    Daher meine Aussage zur fehlenden Airgap: es klingt, als wolltest Du den Schlüssel auf einem "normalen" Gerät erzeugen, den Primärschlüssel aus dem Schlüsselbund löschen und das Gerät dann im Internet weiternutzen. Das erfordert absolutes Vertrauen in Hard- und Software des Geräts (incl. aller installierter Programme!). Wenn du das Vertrauen hast, spricht natürlich nichts gegen diese Vorgehensweise. Ich hätte es aber nicht, auch da das Löschen von Schlüsseln seit der Einführung von gnupg-agent (ab gnupg 2.0) bei mir nicht immer zuverlässig funktioniert hat. Von anderen Komponenten mal ganz zu schweigen ;)

    Wenn Du dem "Schlüsselerzeugungs-Gerät" und seiner Software vollständig vertraust, kannst Du darauf aber natürlich den Primärschlüssel weiternutzen und für den Laptop oder andere Geräte Subkeys erstellen. Ist dann zwar keine Airgap, aber ermöglicht immer noch das einzelne Zurückziehen von Schlüsseln für die anderen Geräte. Und ist ein ganzes Stück bequemer als eine echte Airgap.

  • Danke für die erneute Antwort.


    Du hast dich mit dem "nicht offline" nur darauf bezogen, dass der primäre Schlüssel, obwohl er er nie online sein und auch vom Rechner gelöscht würde, dennoch insofern unsicher wäre, weil er von dem Medium, auf dem er gespeichert (oder hart gecachet) wurde, wiederhergestellt werden könnte?


    OK, dessen bin ich mir bewusst. Das passt für mich soweit. Streng genommen müsste ich von einer DVD booten und das Medium, dass ich zum Speichern benutze, danach in einen Tresor legen.

    Ganz, ganz streng genommen könnte ich mir selbst dann nicht sicher sein. Das Betriebssystem, das ich von DVD boote, könnte eine Backdoor haben und meine Schlüssel z.B. im BIOS ablegen. Oder die Hardware selbst könnte einen Spionagechip enthalten. In diesem Fall dürfte der Rechner, auf dem ich die Schlüssel erzeuge, nie wieder Zugang zu einem Netzwerk erhalten und müsste irgendwann zerstört werden.


    Soweit würde ich aber natürlich nicht gehen. Ein solches Sicherheitsniveau benötige ich kleiner Mokel nicht. Ich befürchte keine gezielte Attacke auf mich und auch keinen Einbruch mit dem Ziel, meine Schlüssel zu erbeuten.

    Ich habe meine mobilen Datenträger verschlüsselt. So gesehen, wäre auch ein Hauptschlüssel ziemlich sicher.

    Da ich mir aber mit relativ einfachen Mitteln - eben der Verwendung von Subkeys - das Leben im Falle des Falles leichter machen kann, möchte ich aber gern davon Gebrauch machen.


    Mein Ziel ist in diesem Zusammenhang, bei Verlust oder Diebstahl eines meiner Geräte nicht den Hauptschlüssel mit allen Beglaubigungen zu verlieren. Das erspart im Falle des Falles einiges an Hickhack.

    Außerdem möchte ich neben RSA auch ECC anbieten, was aber erst wenige der ohnehin wenigen verwenden. Das lässt sich mit Subkeys leicht erreichen.


    Um zurück zu meiner ursprünglichen Fragestellung zu kommen, fasse ich mal zusammen, sozusagen zur finalen Kontrolle:


    • Es gibt nur einen öffentlichen Schlüssel. Er enthält die öffentlichen Teile des Haupt- und aller Subkeys.
    • Die Subkeys sind für alle UIDs des primären Schlüssels gültig. Ich kann einem Subkey keine eigene UID zuweisen.
    • Im Gegensatz zu gpg (durch nachgestelltes !) kann ich im Thunderbird die Verwendung eines bestimmten Subkeys nicht erzwingen. Der jeweils richtige Key wird automatisch gefunden, solange ich nicht mehrere S-Subkeys verwende. Die Auswahl erfolgt bei mehreren verwendbaren Schlüsseln vermutlich anhand der prefs und der Installationsreihenfolge. Damit kann ich leben, weil ich nicht vorhabe, mehrere Subkeys zu einer Eigenschaft zu erstellen.

    Wenn das soweit zutrifft, dann würde ich folgendes Konstrukt planen:


    • Ein Offline-Hauptschlüssel (S/C/E). Dieser bekommt mit adduid zwei UIDs zugewiesen.
    • Darunter erstelle ich jeweils einen RSA und ECC Subkey. Die bekommen beide S/E/A. Weiter nach Funktion aufteilen würde ich nicht.
    • Das weitere Vorgehen dann wie oben beschrieben.
  • Soweit würde ich aber natürlich nicht gehen.

    Deshalb sprach ich von "Szenario". Sicherheit ist immer eine Abwägung und Bewertung von Risiken. Man muss sich der Risiken nur bewusst sein.


    Neben Caches und der Wiederherstellung von der Platte will ich auch den unbeabsichtigten Upload durch Virenscanner, andere "Sicherheitstools" oder Tracking/Analyse-Komponenten explizit erwähnt haben (solche Tools können oftmals Daten offline "einsammeln" und erst später hochladen).


    Ein Offline-Hauptschlüssel (S/C/E).

    Gibt es einen Grund, dass du vom Standard abweichen willst? Ein Hauptschlüssel wird normalerweise nicht direkt zur Verschlüsselung genutzt.

    Darunter erstelle ich jeweils einen RSA und ECC Subkey. Die bekommen beide S/E/A.

    Du musst dann zuerst den RSA-Key erzeugen, wenn Du ECC als Standard nutzen willst. Gnupg nimmt den neuesten unterstützten Subkey, wenn nichts anderes angegeben ist.


    Ich würde außerdem S/A und E trennen. Das ermöglicht Dir mehr Flexibilität, wenn Du dein Subkey-Setup nochmal ändern willst (und ist theoretisch auch einen Tick sicherer).

  • Gibt es einen Grund, dass du vom Standard abweichen willst?

    Nein, das ist nur einer mangelnden Konzentration während der Arbeitszeit geschuldet. ;-)

    Wie beschrieben möchte ich diesen Schlüssel ja als Offline-Schlüssel und nicht für die Verschlüsselung benutzen.

    Ich würde außerdem S/A und E trennen.

    Diese Option hatte ich auch schon im Sinn, ebenso wie die, nicht beide UIDs zuzuweisen. Das muss ich mir noch genau überlegen. Wenn ich die Zeit finde, werde ich am Wochende etwas intensiver mit Thunderbird/Enigmail beschäftigen und es ausprobieren.


    Ich bedanke mich für die Hinweise zu einem doch nicht ganz so einfachen Thema.

  • Abschließend meine Rückmeldung, dass alles so geklappt hat wie geplant. Die Export/Löschen/Import-Prozudur aus #3 hat funktioniert. Zumindest soweit es meine ersten Tests zeigen.


    Die Frage der Fähigkeiten der einzelnen Subkeys hat sich quasi von selbst gelöst. Gpg bietet beim Erstellen eines ECC-Subkeys unterhalb eines RSA-S-Keys verschlüsseln und signieren nur als separate Fähigkeiten an. Da wollte ich keine Verrenkungen mehr anstellen und habe es dann auch so gemacht.


    Mein Ziel habe ich erreicht. Ich habe jetzt einen geheimen primären Offine-Schlüssel, den ich nicht auf dem Laptop oder dem Smartphone installieren muss. Die Subkeys gelten für beide meiner wichtigen Adressen. Zusätzlich biete ich jetzt neben RSA auch ECC an. So soll es sein.


    Nochmals vielen Dank, generalsync. Es hat mich sehr gefreut, hier jemanden gefunden zu haben, der sich tiefergehend mit gpg und Thunderbird/Enigmail auskennt. Weizen im Spreu. :-)

  • Community-Bot

    Hat das Label Erledigt hinzugefügt