Come forzare gpg2 a usare la chiave scaduta?


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

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

Come crittografare? Non ci sono aggiornamenti per la chiave disponibile dai server di chiavi. I messaggi dovrebbero essere visualizzati se l'utente ha ancora quella chiave scaduta o non è stato visto affatto.

C'è qualche --just-do-that-I-wantopzione che ti permetterà di farlo senza cambiare il codice sorgente di GPG?


perché vuoi farlo? Fondamentalmente infrange tutta la sicurezza. Cosa GPG sta per te può letteralmente inviarlo Cleartext se lo fai. Ti consiglio di chiedere alla persona ricevente di aggiornare la sua chiave pubblica
konqui, il

L'uso della chiave scaduta offre una sicurezza migliore rispetto all'utilizzo di nessuna chiave. Inoltre, potrebbe essere necessario decrittografare il vecchio messaggio dall'archivio utilizzando la vecchia chiave scaduta.
Vi.

Forse anche la crittografia interrotta è meglio di nessuna crittografia. Ho semplicemente esagerato a causa di motivi. Per i vecchi messaggi crittografati con la vecchia chiave pubblica allora, sì, ha bisogno di usare la sua vecchia chiave privata ma non è per me che non può creare una nuova tastiera da utilizzare per i nuovi messaggi. Quindi non c'è davvero alcun motivo per usare una chiave pubblica obsoleta. La chiave privata è un'altra cosa, ma non ho mai avuto gpg lamentarsi di utilizzare una chiave privata obsoleta per la descrizione.
Konqui,

Risposte:


12

Come suggerito da @rob nei commenti, libfaketime lo gestisce bene:

$ 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-----
...

Vecchia risposta:

  1. Avvia UML (modalità utente linux)
  2. Imposta la data all'interno di UML su un intervallo accettabile.
  3. Crittografa il messaggio in UML

1
Può anche falsificare la data usando libfaketime. Stessa idea della risposta, ma potrebbe essere più facile per alcuni.
ruba il

2
non c'è davvero alcuna opzione --force, quindi solo un hack di data lo fa solo? m (
mcantsin,

3

Usa l' --faked-system-timeopzione:

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

Preferirei un'opzione che forzerebbe la crittografia a una chiave scaduta e al tempo stesso registrasse l'ora corretta (specialmente durante la firma).


2

Reimposta orologio hardware e di sistema:

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

Successivamente (spero che tu abbia abilitato NTP) correggi l'orologio hardware con:

sudo hwclock --systohc

2
Troppo drastico. Il tempo dovrebbe essere sovrascritto solo per gpg, non per l'intero sistema.
Vi.

2
faketime '2012-12-24 08:15:42' gpg ...è meglio.
Vi.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.