¿Cómo forzar a gpg2 a usar la clave caducada?

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

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

¿Cómo encriptar? No hay actualizaciones para la clave disponibles de los servidores de claves. Deben verse los mensajes si el usuario todavía tiene esa clave caducada o no se ve en absoluto.

¿Hay alguna --just-do-that-I-wantopción que permita hacer esto sin cambiar el código fuente de GPG?

Vi.
fuente
¿Por qué quieres hacer esto? Básicamente rompe toda la seguridad. Thing GPG se trata de que, literalmente, solo puede enviarlo en texto claro si hace esto. Le recomiendo que solo le pida a la Persona receptora que actualice su Clave pública
konqui
El uso de claves caducadas hace que la seguridad sea mejor en comparación con el uso de ninguna clave. También es posible que deba descifrar el mensaje antiguo del archivo utilizando la clave antigua de larga duración.
Vi.
Shure también posiblemente roto. El cifrado es mejor que ningún cifrado. Simplemente exagero por razones. Para los mensajes antiguos encriptados con la antigua clave pública en ese entonces, sí, necesita usar su antigua clave privada, pero eso no significa que no pueda crear un nuevo par de claves para usar para nuevos mensajes. Por lo tanto, realmente no hay razón para usar una clave pública desactualizada. La clave privada es otra cosa, pero nunca tuve gpg quejándose de usar una clave privada desactualizada para la descripción.
konqui

Respuestas:

12

Como @rob sugirió en los comentarios, libfaketime maneja esto bien:

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

Vieja respuesta:

  1. Iniciar UML (modo de usuario de Linux)
  2. Establezca la fecha dentro de UML en un rango aceptable.
  3. Cifrar mensaje en UML
Vi.
fuente
1
También puede falsificar la fecha usando libfaketime. La misma idea que la respuesta, pero podría ser más fácil para algunos.
robar el
2
en serio no hay una opción de fuerza, por lo que solo un truco de fecha solo lo hace. m (
mcantsen
3

Usa la --faked-system-timeopción:

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

Preferiría una opción que forzaría el cifrado a una clave caducada y al mismo tiempo grabaría la hora correcta (especialmente al firmar).

Margaret
fuente
2

Restablecer hardware y reloj del sistema:

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

Luego (espero que tenga NTP habilitado) arregle su reloj de hardware con:

sudo hwclock --systohc
invitado
fuente
2
Demasiado drástico El tiempo debe ser anulado solo para gpg, no para todo el sistema.
Vi.
2
faketime '2012-12-24 08:15:42' gpg ...es mejor.
Vi.