Ist es möglich, gpg (oder gpg4win) zu fragen, ob eine Datei von einer bestimmten öffentlichen Schlüsseldatei signiert wurde, ohne diesen Schlüssel importieren und signieren und ihm vertrauen zu müssen?
also sowas wie
gpg --using-key pubkey.txt --verify message.txt
im Gegensatz dazu müssen Sie Ihren eigenen privaten Schlüssel erstellen und dann tun
gpg --import pubkey.txt
gpg --lsign-key [name within pubkey.txt]
# ... something to do with choosing trust levels
gpg --verify message.txt
gpg --status-fd 1 --verify (thefile)
in seiner Ausgabe als erste Zeichenfolge den Fingerabdruck des Schlüssels angibt, der die Signatur erstellt hat.Antworten:
Sie müssen über den öffentlichen Schlüssel verfügen, um eine Signatur zu überprüfen, die mit dem entsprechenden privaten Schlüssel erstellt wurde. Sie müssen den Schlüssel jedoch nicht signieren oder lokal signieren. In diesem Fall erhalten Sie eine Warnung von GPG, dass der Schlüssel nicht vertrauenswürdig ist.
Hier ist ein Test, den ich mit einer Datei durchgeführt habe, die mit meinem eigenen Schlüssel signiert ist, aber auf einem System, auf dem der Schlüssel nicht importiert wurde:
Leider funktioniert Harrys Vorschlag nicht, er extrahiert ein bisschen mehr Informationen, aber nicht genug, um von Nutzen zu sein.
Wie Sie sehen können, sind die meisten Informationen die Schlüssel-ID des Unterschlüssels, mit dem die Signatur erstellt wurde, und der Zeitpunkt, zu dem die Signatur erstellt wurde. Dies entspricht den Daten, die pgpdump (oder --list-packages) zur Verfügung stehen:
Wie Sie sehen können, enthält es den Hash-Algorithmus, die Details des Schlüsseltyps (mein Signaturschlüssel ist ein 3072-Bit-RSA-Unterschlüssel und die Schlüssel-ID des Unterschlüssels), aber es gibt nichts, um den Hauptschlüssel zu identifizieren. Dies sind nur Informationen Wird angezeigt, wenn Sie den öffentlichen Schlüssel haben und die Signatur überprüfen.
Dann habe ich meinen öffentlichen Schlüssel auf dieses System importiert und es erneut versucht:
Jetzt kann der Schlüssel identifiziert und mit dem Primärschlüssel abgeglichen werden. Es ist jedoch möglich, die Art dieser Warnungen wie folgt zu reduzieren:
Es gibt immer noch eine Warnung, dass es sich um einen nicht vertrauenswürdigen Schlüssel handelt, aber nicht massiv, und das Entfernen der Ausführlichkeit reduziert ihn nur auf Folgendes:
Der öffentliche Schlüssel wird für die Überprüfungsphase benötigt, da er verwendet wird, um vom Unterzeichner generierte Daten mit ihrem privaten Schlüssel abzugleichen. Es kann in einfachen Worten als Ergänzung der Verschlüsselung betrachtet werden, bei der der private Schlüssel zum Entschlüsseln von mit dem öffentlichen Schlüssel verschlüsselten Daten benötigt wird.
Hinweis: Ich habe die UIDs in diesem Beispiel ein wenig angepasst, aber jeder, der diesen Schlüssel erhält, wird sehen, was er wirklich ist. Ansonsten ist die Ausgabe ein direktes Kopieren und Einfügen.
BEARBEITEN: Sie können die öffentliche Schlüsseldatei direkt wie einen Schlüsselbund aufrufen, wenn Sie sie im nicht-ASCII-gepanzerten Format haben (dh eine .gpg-Datei anstelle einer .asc-Datei). Trotzdem benötigen Sie den öffentlichen Schlüssel. Dazu sieht der Befehl folgendermaßen aus:
quelle
Wenn Sie mit dem Versand eines Schlüsselbunds anstelle einer öffentlichen Schlüsseldatei einverstanden sind, möchten Sie wahrscheinlich
gpgv
eher verwenden alsgpg
:quelle
Wenn Ihr Wort "verifizieren" in der Frage "absolut verifizieren" bedeutet, muss natürlich ein öffentlicher Schlüssel importiert werden, um ein signiertes Dokument vollständig zu verifizieren. Wenn dies jedoch "identifizieren" bedeutet, beschreibe ich im Folgenden eine Heuristik, die erkennen kann, ob eine Gruppe von Dokumenten alle mit derselben Signatur signiert wurde.
Gemäß den von @Ben durchgeführten Tests zur Überprüfung meines Kommentars besteht die Möglichkeit, dass der folgende Befehl verwendet werden kann, um den Signaturschlüssel heuristisch anzuzeigen:
Der Test von Ben ergab das folgende Ergebnis. Bemerkenswert sind die Werte von ERRSIG und NO_PUBKEY sowie der Wert von "RSA-Schlüssel-ID", der teilweise in beiden enthalten ist, wie folgt:
Beachten Sie über der Zeichenfolge
7FF2D37135C7553C
. Dieselbe Zeichenfolge befindet sich im Fingerabdruck des Schlüssels, der nach dem Import des Schlüssels gemeldet wird:Diese Zeichenfolge befindet sich im unteren Teil des Fingerabdrucks (Teilschlüssel oben) und kann daher möglicherweise zur Identifizierung des Schlüssels verwendet werden. Der "Primärschlüssel-Fingerabdruck" sollte wahrscheinlich zusätzlich zum Unterschlüssel überprüft werden.
Die Zeichenfolge "RSA-Schlüssel-ID" ist in beiden Ausgaben identisch und wird auch als letzter Teil des Fingerabdrucks gefunden, sodass es möglicherweise ausreicht, die Signatur selbst zu identifizieren. In diesem Fall ist es
gpg --verify
möglicherweise ausreichend , nur die Ausgabe von zu verwenden, um die Signatur auf einfachere Weise zu identifizieren.Meine GPG-Kenntnisse reichen nicht aus, um diese Methode vollständig zu validieren. Sie sollten sie daher an weiteren Beispieldateien ausprobieren. Wenn dies funktioniert, können Sie die Dateien nach Signaturen sortieren, müssen jedoch den Schlüssel importieren, um die Identität des Unterzeichners zu ermitteln.
Um es noch einmal deutlich zu machen: Diese Methode kann eine Signatur nicht vollständig identifizieren. Es ist nur eine Möglichkeit, signierte Dokumente heuristisch zu sortieren.
quelle