Wie behandelt gpg mehrere Tasten in einem Schlüsselpaar?

3495
jrdioko

Soweit ich es verstehe, haben für gpg verwendete Schlüsselpaare im Allgemeinen mehrere zugeordnete Schlüssel: einen zum Signieren und einen für die Verschlüsselung. Wie werden diese mehreren Schlüssel verwaltet, wenn Sie gpg verwenden (um auf einen Keyserver zu gelangen, den Schlüssel einer anderen Person abzurufen, zu verschlüsseln oder zu signieren)? Verwendet es automatisch den richtigen Schlüssel für die richtige Aktion, oder muss der Benutzer dies angeben? Wie wird der Zweck jeder Taste innerhalb eines Schlüsselpaares ermittelt?

2

1 Antwort auf die Frage

5
grawity

Was oft als "GPG-Schlüssel" bezeichnet wird, ist eher ein Zertifikat . Genau wie in X.509 enthält das Zertifikat viel mehr Informationen als nur die Schlüssel: ein 'primäres' Schlüsselpaar und mehrere 'Unterschlüssel'-Schlüsselpaare sowie deren Verwendungskennzeichen und Verfallsdatum sowie mehrere Benutzer-IDs 'und' Foto-IDs 'zusammen mit ihren Unterschriften.

Wenn Sie Ihr "Schlüsselpaar" auf einen Keyserver hochladen, senden Sie alles, was öffentlich ist - Schlüssel, Unterschlüssel, Benutzer-IDs und Signaturen - als ein einziges Zertifikat. Der 'Primärschlüssel' identifiziert das gesamte Zertifikat. Sein öffentlicher Schlüssel-Hash ist der "Fingerabdruck", den Sie sehen, und die Schlüssel-ID basiert darauf. Normalerweise verfügt der Primärschlüssel über Verwendungsflags "Signieren" und "Zertifizieren", um Daten und andere Schlüssel zu signieren.

Standardmäßig ist mindestens ein Unterschlüssel "Encrypt" zum Verschlüsseln von Daten erstellt. Sie können mehrere solcher Unterschlüssel haben, beispielsweise mit unterschiedlichen Ablaufdaten. Ich konnte keine gute Quelle finden, aber es scheint, dass der neueste gültige (nach dem Startdatum und nicht abgelaufenem / widerrufenem) Unterschlüssel für die Verschlüsselung ausgewählt wird. Beim Entschlüsseln von Daten werden alle Unterschlüssel versucht.

(Möglicherweise haben Sie festgestellt, dass gpg -kSchlüssel-IDs für beide Schlüssel und Unterschlüssel aufgelistet werden . Wenn Sie die Verwendung eines bestimmten Schlüssels oder Unterschlüssels erzwingen möchten, können Sie - die (Unter-) Schlüssel-ID gefolgt von einem Ausrufezeichen) angeben, um alle Berechnungen zu umgehen Welcher Unterschlüssel ist am besten.)keyid!

Optional können Sie Unterschlüssel hinzufügen, die als "Authenticate" markiert sind. Diese können dann in Protokollen wie SSH (über gpg-agent, durch Extrahieren des RSA-Schlüsselpaars) oder SSL (implementiert von GnuTLS als Alternative zu X.509) verwendet werden. Welche Unterschlüssel verwendet werden, hängt von der jeweiligen Implementierung ab.

Sie können die vollständige Struktur eines PGP-Zertifikats anzeigen, indem Sie Folgendes verwenden:

  • gpg --export mykey | gpg -vvv
  • gpg --export mykey | pgpdump
  • gpg --export mykey | certtool --pgp-certificate-info
Dies bietet ein gutes Verständnis der praktischen Gründe für eine Gruppierungsstruktur für einen Master-Unterschlüssel. Die folgenden Einschränkungen sind mir jedoch immer noch ein Rätsel: Alle einzelnen Schlüssel in einem einzigen Master- oder Unterschlüsselschlüsselzertifikat sind verpflichtet, ein einzelnes Kennwort zu verwenden. Es ist äußerst unpraktisch, da die Verwendung der einzelnen Schlüssel unterschiedlich ist und es für alle ein Sicherheitsrisiko darstellt, wenn sie dasselbe Kennwort verwenden. Bei einigen Schlüsseln ist es vorzuziehen, kein Passwort zu verwenden. Wie wäre es mit diesem Fall? Craig Hicks vor 6 Jahren 0
Nein, das war technisch nie der Fall und wird in GnuPG 2.1 nicht mehr erzwungen (aufgrund der Migration von secring zu gpg-agent, was nicht einmal ein Wissen über Schlüssel- / Unterschlüsselbeziehungen ist). Mit dem Agentenbefehl "PASSWD" können Sie jedes dort gespeicherte Schlüsselpaar mit einem beliebigen Kennwort verschlüsseln. grawity vor 6 Jahren 0
Außerdem hat GnuPG (sogar 1.x) immer das "Abbrechen" bestimmter Unterschlüssel, normalerweise des Masters (Zertifizierungsschlüssel), unterstützt und entweder auf einer Smartcard (Gnuk) oder gar nirgends gespeichert. So können Sie sehr leicht Geräte haben, die entschlüsseln, aber nicht zertifizieren können. grawity vor 6 Jahren 0
Danke für den Zeiger auf den gpg-connect-agent 'PASSWD '/ tschüss, ich wusste es nicht und es könnte nützlich sein. Mir ist bewusst, dass es "technisch" sogar in gpg1.x möglich ist, ein Kennwort für einen Unterschlüssel individuell festzulegen :lists.gnupg.org/pipermail/gnupg-users/2013-July/047174.html. Bei der Verwendung von "technischen" Problemumgehungsfunktionen mit Backend-Methoden ist das Testen jedoch möglicherweise knapp und die zukünftige Kompatibilität ist gefährdet. Ohne Dokumentation können sich auch Entwickler von gnupg.org verwirren, wenn es sich bei einem Verhalten um eine Funktion oder einen Fehler handelt: https://dev.gnupg.org/T1848. Craig Hicks vor 6 Jahren 0
Soweit ich das feststellen kann, versuchen Sie in gpg2.1.11, jedes Passwort mit --edit-key zu bearbeiten ! / passwd bewirkt, dass alle cert-Passwörter in die neuen Passwörter geändert werden. Es scheint also nicht ganz richtig zu sagen, dass einheitliche Passwörter nicht mehr erzwungen werden. Es sollte mindestens eine Dokumentation und eine Laufzeitwarnung vorhanden sein. Wieder schätze ich den Wert Ihrer Antwort. Craig Hicks vor 6 Jahren 0
'alle cert-Passwörter' -> 'die Passwörter aller (Teil-) Schlüssel des jeweiligen cert' Craig Hicks vor 6 Jahren 0