Re: gpg2 password testen
On Tue, 11 Mar 2025 21:46:56 +0100
Ulf Volmer <u.volmer@u-v.de> wrote:
> > Auf eine ähnliche Zeile war ich schon
> > gekommen:
> > time gpg2 --batch --passphrase 1234567 -d
> > B.gpg
> > Sie hat scheinbar die gleiche Wirkung. Das
> > Problem ist, daß B.gpg 26GB groß ist, sodaß
> > so ein Versuch 3 Minuten und 21 Sekunden
> > dauert.
> Wie wäre es mit
>
> $ echo 1234567 | timeout 1 gpg --batch --yes
> --passphrase-fd 0 -d B.gpg > 2>&1 >/dev/null |
> grep 'Bad session key' > gpg: decryption
> failed: Bad session key
> Das bringt Dich zumindest auf 1 Sekunde pro
> Versuch.
Mein Versuch war ein C-Programm mit exec und
eine auf 4k verkürzten Datei, was etwas unter
1 Sekunde kam, dabei aber dennoch viel zu
langsam ist. Die Wirkung ist aber sehr ähnlich.
Deine Idee und meine bisherige Erfahrung
suggerieren ein besseres Verständnis der
Umstände: Scheinbar ist es nicht möglich die
passphrase einfach zu testen ohne potentiell den
gesamten Datenblock auszuprobieren. Der Fehler
kommt manchmal früher, manchmal später.
Ich habe ein Testprogramm etwa 12 Stunden lang
laufen lassen, und da kamen 3 Kombinationen vor,
welche innerhalb der ersten 4k keinen Fehler
zeigten, außer, daß die Datei zu kurz ist. Der
Versuch diese Kombinationen dann auf die
vollständige Datei anzuwenden zeigte aber, daß
diese dennoch falsch waren.
Damit gibt es offenbar nur die folgenden Punkte,
an welchen man Zeit sparen kann:
* Viel Zeit geht beim Ausführen von gpg
verloren: Da muß jedes mal ein Programm
geladen werden und dieses muß sich
initialisieren.
* Sobald "bad session key" kommt, muß ich
abbrechen. Das müßte ein longjump innerhalb
von gpg sein.
* Das Lesen der Datei muß von RAM erfolgen,
wenn geht, ohne durch ein file system zu
gehen. Also auch keine Ram-Disk oder M2. Da
ich nur 32GB Ram habe, müßte ich aufpassen
nicht in den swap zu kommen.
Sieht so aus, als ob eine modifizierte Version
von gpg die einzige Option ist. Dann wird gpg
nur einmal geladen/initialisiert und kann dann
sofort zur nächsten Kombination übergehen. Bei
der Fehlermeldung dann ein longjump zu einem
Punkt vor dem (re)init und der Versuch, die
gesamte Datei anfangs in RAM zu laden. mmap
hilft wahrscheinlich nicht wegen der vielen
rewinds.
Das ist einiges an Aufwand, wobei unklar ist,
ob ich im Schnitt unter 10ms pro Versuch kommen
kann. Dann dauert es "nur" noch um die 3 Monate.
Die andere Alternative ist zu akzeptieren, die
Daten verloren zu haben. :-(
Danke für deine Gedanken.
Reply to: