Como forçar o gpg2 a usar a chave expirada?


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

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

Como criptografar? Não há atualizações para a chave disponíveis nos servidores de chaves. As mensagens devem ser vistas se o usuário ainda tiver essa chave expirada ou não tiver sido vista.

Existe alguma --just-do-that-I-wantopção que permita fazer isso sem alterar o código fonte do GPG?


por que você quer fazer isso? Basicamente, ele quebra toda a segurança. O GPG é sobre você. Você pode literalmente enviá-lo em texto não criptografado se fizer isso. Eu recomendo que você pedir apenas a pessoa que recebe para atualizar sua chave pública
Konqui

O uso de chave expirada oferece melhor segurança em comparação com o uso de nenhuma chave. Também pode ser necessário descriptografar a mensagem antiga do arquivo usando a chave antiga expirada.
Vi.

A Shure também possivelmente criptografada com defeito é melhor do que nenhuma criptografia. Eu apenas exagerei por causa de razões. Para mensagens antigas criptografadas com a antiga chave pública na época, sim, ele precisa usar sua antiga chave privada, mas isso não significa que ele não pode criar um novo par de chaves para usar em novas mensagens. Portanto, não há realmente motivo para usar uma chave pública desatualizada. Chave privada é outra coisa, mas eu nunca tive gpg reclamando sobre o uso de uma chave privada desatualizada para decription.
Konqui

Respostas:


12

Como o @rob sugeriu nos comentários, o libfaketime trata bem disso:

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

Resposta antiga:

  1. Iniciar UML (modo de usuário linux)
  2. Defina a data dentro da UML para um intervalo aceitável.
  3. Criptografar mensagem na UML

1
Também pode falsificar a data usando o libfaketime. A mesma idéia que a resposta, mas pode ser mais fácil para alguns.
rob

2
seriamente não há opção --force, então apenas um hack de data só faz isso? m (
mcantsin

3

Use a --faked-system-timeopção:

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

Eu preferiria uma opção que forçaria a criptografia a uma chave expirada enquanto também registrava a hora correta (especialmente ao assinar).


2

Redefina o relógio do hardware e do sistema:

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

Posteriormente (espero que você tenha o NTP ativado), conserte seu relógio de hardware com:

sudo hwclock --systohc

2
Muito drástico. O tempo deve ser substituído apenas para gpg, não para todo o sistema.
Vi.

2
faketime '2012-12-24 08:15:42' gpg ...é melhor.
Vi.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.