Kann man die s2k-Funktionen von gpg voll nutzen?

387
Patriot

Laut RFC 4880 ,

String-to-Key-Kennungen (S2K) werden verwendet, um Passphrasen-Zeichenfolgen in Verschlüsselungs- / Entschlüsselungsschlüssel für symmetrische Schlüssel zu konvertieren. Sie werden derzeit an zwei Stellen verwendet: zum Verschlüsseln des geheimen Teils privater Schlüssel im privaten Schlüsselring und zum Konvertieren von Passphrasen in Verschlüsselungsschlüssel für symmetrisch verschlüsselte Nachrichten.

Letzteres funktioniert:

Screenshot

Ersteres gilt nicht für den geheimen Teil der privaten Schlüssel:

gpg2 --s2k-cipher-algo AES256 --s2k-digest-algo SHA512 --s2k-mode 3 --s2k-count 65000000 --export-secret-keys | gpg2 --list-packets 

Was zeigt ein Ergebnis, das beinhaltet:

iter+salt S2K, **algo: 7**, **SHA1 protection**, **hash: 2**, **protect count: 13107200**. 

Es handelt sich also um ein diskretes Downgrade auf AES128 und GPU-freundliches SHA-1 von dem, was erwartet wurde. Dieses Problem wurde hier vor etwa 42 Monaten angesprochen und nach zwei Jahren Untätigkeit als Frage nach Dringlichkeit abgemildert.

Gpg-Agent hat einen Standard, der die Zeit begrenzt, die die KDF dauern kann.

Was kann man tun, um die s2k-Spezifizierer voll zum Laufen zu bringen?

(Oder Sie erzielen zumindest den gleichen Effekt, indem Sie die Anzahl der Iterationen deutlich erhöhen, was das Cracken von Passwörtern für den Angreifer schwer macht. )

1
Crossdupe https://security.stackexchange.com/a/149371/39571 ist wahrscheinlich ein besserer Ort dafür. (Dies ist, wie man Crypto-in-a-Programm verwendet, nicht wie Crypto.) dave_thompson_085 vor 6 Jahren 1
@ dave_thompson_085 Danke! Ich muss die anderen stackexchange-Sites durchsuchen, bevor ich eine Frage posten kann. Ich frage mich, ob jemand eine klare Antwort geben könnte. Was kann getan werden, um die s2k-Spezifizierer dazu zu bringen, für private Schlüssel zu arbeiten? Patriot vor 6 Jahren 0
(1) Ich hoffe, die Entwickler stimmen mit dem Element der Wunschliste überein und warten darauf, dass sie es tun. (2) Es ist Open Source. Machen Sie es selbst (aber wenn Sie verteilen, halten Sie sich an GPL.) (3) gehen auf 2.0 (oder weniger?) Zurück. und zur Generierungszeit (4) gesetzt, verwenden Sie etwas anderes anstelle von (oder zumindest zusätzlich zu) gpg :-( dave_thompson_085 vor 6 Jahren 0
@ dave_thompson_085 Nochmals vielen Dank! Bitte füllen Sie mich unter Punkt 4 aus. Was kann ich verwenden, das besser ist als GPG oder es zumindest ergänzen wird? Ich bin sehr neugierig zu wissen. Patriot vor 6 Jahren 0
Ich bin mir sicher, dass es noch andere Möglichkeiten gibt, aber persönlich würde ich BouncyCastles 'bcpg' http://www.bouncycastle.org/latest_releases.html verwenden, da Java am schnellsten und am einfachsten zu programmieren ist. dave_thompson_085 vor 6 Jahren 0
@ dave_thompson_085 Ich muss meine Aufmerksamkeit darauf richten und GPG2 im Staub lassen. Patriot vor 6 Jahren 0

0 Antworten auf die Frage