Wie kann man gpg2 zwingen, den abgelaufenen Schlüssel zu verwenden?

14
$ gpg -ear XXXXXXX
gpg: XXXXXXXX: skipped: unusable public key

$ gpg --debug-ignore-expiration -ear XXXXXXXX
gpg: Invalid option "--debug-ignore-expiration"

Wie verschlüsseln? Es sind keine Updates für den Schlüssel von Keyservern verfügbar. Nachrichten sollten angezeigt werden, wenn der Benutzer diesen abgelaufenen Schlüssel noch hat oder überhaupt nicht gesehen wird.

Gibt es eine --just-do-that-I-wantOption, die dies ermöglicht, ohne den Quellcode von GPG zu ändern?

Vi.
quelle
warum willst du das machen Es bricht im Grunde die gesamte Sicherheit auf. Bei GPG geht es darum, dass Sie buchstäblich nur Klartext senden können, wenn Sie dies tun. Ich empfehle Ihnen, nur die empfangende Person zu bitten, ihren öffentlichen Schlüssel zu aktualisieren
konqui
Die Verwendung eines lang abgelaufenen Schlüssels bietet eine bessere Sicherheit als die Verwendung eines Schlüssels. Außerdem muss möglicherweise eine alte Nachricht aus dem Archiv mit einem alten, lange abgelaufenen Schlüssel entschlüsselt werden.
Vi.
Sicher ist auch möglicherweise eine kaputte Verschlüsselung besser als gar keine Verschlüsselung. Ich übertreibe es nur aus Gründen. Für alte Nachrichten, die damals mit dem alten öffentlichen Schlüssel verschlüsselt waren, muss er zwar seinen alten privaten Schlüssel verwenden, aber das bedeutet nicht, dass er kein neues Schlüsselpaar für neue Nachrichten erstellen kann. Es gibt also wirklich keinen Grund, einen veralteten öffentlichen Schlüssel zu verwenden. Privater Schlüssel ist eine andere Sache, aber ich hatte nie ein gpg, das sich über die Verwendung eines veralteten privaten Schlüssels für die Beschreibung beschwerte.
Konqui

Antworten:

12

Wie @rob in den Kommentaren vorgeschlagen hat, geht libfaketime gut damit um:

$ gpg  -v -v -v --batch --trust-model always -ear D5B9D38C <<< "qweqe"
gpg: using character set 'utf-8'
gpg: Note: signature key 077EA269D5B9D38C expired Sun 09 Nov 2014 12:57:25 PM +03
gpg: D5B9D38C: skipped: Unusable public key
gpg: [stdin]: encryption failed: Unusable public key

$ faketime  '2012-12-24 08:15:42'  gpg  -v -v -v --batch --trust-model always -ear D5B9D38C <<< "qweqe"
gpg: using character set 'utf-8'
gpg: using subkey 85231B396B9569ED instead of primary key 077EA269D5B9D38C
gpg: No trust check due to '--trust-model always' option
gpg: reading from '[stdin]'
gpg: writing to stdout
gpg: RSA/AES256 encrypted for: "..."
-----BEGIN PGP MESSAGE-----
...

Alte Antwort:

  1. Starten Sie UML (User Mode Linux)
  2. Stellen Sie das Datum in UML auf einen akzeptablen Bereich ein.
  3. Nachricht in UML verschlüsseln
Vi.
quelle
1
Kann das Datum auch mit libfaketime fälschen. Dieselbe Idee wie die Antwort, könnte aber für einige einfacher sein.
Rob
2
Es gibt im Ernst keine --force-Option, also nur ein Date-Hack? m (
mcantsin
3

Verwenden Sie die --faked-system-timeOption:

gpg2 --faked-system-time 20100101T000000 -e -r keyid

Ich würde eine Option bevorzugen, die die Verschlüsselung eines abgelaufenen Schlüssels erzwingt und gleichzeitig die korrekte Zeit aufzeichnet (insbesondere beim Signieren).

Margaret
quelle
2

Hardware- und Systemuhr zurücksetzen:

sudo hwclock --set --date "12/31/2017 23:59:59" && \
sudo hwclock --hctosys && \
gpg --sign-with $keyid --clearsign --armor < $file

Anschließend (ich hoffe, Sie haben NTP aktiviert) reparieren Sie Ihre Hardware-Uhr mit:

sudo hwclock --systohc
Gast
quelle
2
Zu drastisch. Die Zeit sollte nur für gpg überschrieben werden, nicht für das gesamte System.
Vi.
2
faketime '2012-12-24 08:15:42' gpg ...ist besser.
Vi.