Was bestimmt den von GnuPG verwendeten clearsign-Hash-Algorithmus?

1343
social_loser

Wenn Sie GnuPG zum Löschen des Signierens eines Textes verwenden, enthält die signierte Nachricht einen Hash-Teil. Nehmen Sie das Beispiel:

-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256  abc -----BEGIN PGP SIGNATURE-----  iQEzBAEBCAAdFiEEZZvqE5j3koIxs9Xim0+E4a5Vo2cFAlkRdvQACgkQm0+E4a5V o2ew2QgAzHuvZ7Hlb6+3qRLjc9Yhdi+6tBmNWXbWpKoAQxpzx6jKQp/FSpQeGWuj RxcYnqU3pk4ycMLtaCFcfnHEW5N0B95eXGcurgMGz7A6xhy0hy25x8WBdeKVAQ+2 PLA2ytJLUn2L1S3ueqJWcdVUBRaiczOOsYvvO ... ...  -----END PGP SIGNATURE----- 

Der Hash-Algorithmus unterscheidet sich jedoch für verschiedene Schlüssel (oder Server), manchmal SHA1, manchmal SHA256, SHA512.

Was bestimmt das, der Schlüssel oder der GnuPG-Client? Ich kann keine Informationen dazu finden. Wenn Sie das gpgErstellen neuer Schlüssel verwenden, gibt es keine Option zur Angabe des Hash-Algorithmus.

Update: Um meine Frage zu klären, habe ich unten weitere Informationen hinzugefügt. Der Befehl zum Generieren der obigen Beispielausgabe lautet:

gpg --clearsign 

(Die gpg-Version ist auf meinem System gpg2.)

Dann habe ich einen zufälligen Text eingegeben und das Ergebnis kommt oben. Ich möchte wissen, wie man Ausgaben mit bestimmten "Hash:" -Werten generiert? sag SHA1?

3
[--digest-algo] (https://www.gnupg.org/gph/de/manual/r2029.html) dave_thompson_085 vor 7 Jahren 1
@ dave_thompson_085 Das ist es, danke! social_loser vor 7 Jahren 0
und "--personal-digest-preferences" funktioniert auch. social_loser vor 7 Jahren 0
@ dave_thompson_085: Dies war die einzige Lösung, die für mich funktionierte. Peter V. Mørch vor 6 Jahren 0

3 Antworten auf die Frage

1
Seth

In diesem Fall sollten Sie einen Hash für die Nachricht generieren und ihn mit einem Schlüssel verschlüsseln. Die andere Seite verwendet den umgekehrten Schlüssel, um den Hash zu entschlüsseln, erstellt den Hash der Nachricht und vergleicht ihn mit dem Hash, den Sie angehängt haben.

Es ist wichtig, dass das Gegenstück weiß, welche Art von Hash Sie verwendet haben, es gibt jedoch keine direkte Korrelation zwischen Schlüsseln und Hash.

Es gibt keine Verschlüsselung, nur den Befehl "gpg --clearsign". Ich habe meinen Beitrag aktualisiert, um meine Frage klarer zu machen. social_loser vor 7 Jahren 0
Ja, es gibt Verschlüsselung, weil es so funktioniert. Siehe auch [this] (http://www.developer.com/java/ent/article.php/3092771/How-Digital-Signatures-Work-Digitally-Signing-Messages.htm) und insbesondere [diese Grafik] (http : //www.developer.com/img/articles/2003/10/16/DigDocSign01.gif) für einen allgemeineren Überblick. In [this] (https://lists.gnupg.org/pipermail/gnupg-users/2013-August/047264.html) finden Sie ausführlichere Informationen. Seth vor 7 Jahren 0
Die von Ihnen bereitgestellten Links sind sehr nützlich, ich verstehe jetzt. Ihre Antwort erklärt die Theorie, und Jens Erats Antwort erklärt es aus einem anderen Blickwinkel. Es ist meine Schuld. Meine Frage ist vage und mein Englisch ist schlecht. Beide von Ihnen sind gut, aber ich muss mich für eines entscheiden. Ich entscheide mich für die Antwort von Erat, vielen Dank. Entschuldigung für mein schlechtes Englisch. social_loser vor 7 Jahren 0
Das ist völlig in Ordnung. Es ist Ihre Entscheidung, welche Antwort Sie tatsächlich beantwortet. Zusätzliche Englischkenntnisse sind keine Voraussetzung, um eine Frage zu stellen oder zu beantworten. Obwohl es normalerweise hilft. ;-) Wenn Sie eine Antwort hilfreich finden, können Sie auch [upvoting] (https://superuser.com/help/someone-answers) in Betracht ziehen. Es gibt keinen Grund, jemandem zu sagen, warum Sie eine Antwort gewählt haben. Überprüfen Sie auch die Antwort auf weitere Informationen dazu, was Sie tun können, wenn jemand eine Frage beantwortet. Das Upvoting sollte eine der letzten [Privilegien] (https://superuser.com/help/privileges) sein, die Sie verdient haben. Seth vor 7 Jahren 0
0
Jens Erat

Der Hash-Algorithmus wird durch die Implementierung von OpenPGP ausgewählt, in Ihrem Fall GnuPG. Welcher wird ausgewählt?

Zum Verschlüsseln von Nachrichten werden zusätzlich die im öffentlichen Schlüssel gespeicherten Präferenzen des Empfängers berücksichtigt.

Ich habe meine Frage aktualisiert. Können Sie mir bitte sagen, wie Sie mit dem Befehl "gpg --clearsign" eine Ausgabe mit einem bestimmten "Hash" -Wert erzeugen können? social_loser vor 7 Jahren 0
Ich habe es gefunden, einfach "--personal-digest-preferences sha512" anhängen, um den Hash auf sha512 zu ändern! social_loser vor 7 Jahren 1
Bieten Sie mehrere Optionen an, da die verschiedenen Einstellungen kombiniert werden. Wenn Sie nur 'sha512' angeben und die andere Seite angibt, dass Sie es nicht unterstützen, wird das [Minimum von SHA1 oder sogar MD5] (https://tools.ietf.org/html/rfc4880#section-9.4) beibehalten ). Jens Erat vor 7 Jahren 0
0
osexp2003

kurze Antwort ist folgende Option zum Befehl gpg hinzufügen

--s2k-digest-algo SHA256 

Natürlich kann SHA256 in SHA512 geändert werden ... siehe verfügbaren Algorithmus in gpg --version

Probe:

$ gpg -a --yes --clearsign --s2k-digest-algo SHA256 --output dists/xenial/InRelease --local-user a@b.c --detach-sign dists/xenial/Release  $ grep -i hash dists/xenial/InRelease Hash: SHA256