Jak zmusić gpg2 do użycia wygasłego klucza?

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

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

Jak szyfrować? Brak aktualizacji klucza dostępnych z serwerów kluczy. Komunikaty powinny być widoczne, jeśli użytkownik nadal ma wygasły klucz lub w ogóle go nie widzi.

Czy jest jakaś --just-do-that-I-wantopcja, która pozwoli to zrobić bez zmiany kodu źródłowego GPG?

Vi.
źródło
dlaczego chcesz to zrobić Zasadniczo niszczy całe bezpieczeństwo. Rzecz, o której chodzi w GPG, możesz dosłownie wysłać po prostu Cleartext, jeśli to zrobisz. Polecam tylko poprosić osobę odbierającą o aktualizację klucza publicznego
konqui
Używanie klucza, który wygasł, daje większe bezpieczeństwo w porównaniu do braku klucza. Konieczne może być również odszyfrowanie starej wiadomości z archiwum przy użyciu starego klucza, który wygasł.
Vi.
Shure również prawdopodobnie uszkodzony Szyfrowanie jest lepsze niż brak Szyfrowania w ogóle. Po prostu zawyżam to z powodów. W przypadku starych wiadomości zaszyfrowanych za pomocą starego klucza publicznego, tak, musi użyć swojego starego klucza prywatnego, ale to nie ja, nie mogę utworzyć nowej pary kluczy do użycia dla nowych wiadomości. Tak naprawdę nie ma powodu, aby używać przestarzałego klucza publicznego. Klucz prywatny to kolejna rzecz, ale nigdy nie miałem narzekań na gpg na używanie przestarzałego klucza prywatnego do opisu.
konqui

Odpowiedzi:

12

Jak sugeruje @rob w komentarzach, libfaketime dobrze sobie z tym radzi:

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

Stara odpowiedź:

  1. Uruchom UML (linux w trybie użytkownika)
  2. Ustaw datę w UML na dopuszczalny zakres.
  3. Zaszyfruj wiadomość w UML
Vi.
źródło
1
Może także sfałszować datę za pomocą libfaketime. Ten sam pomysł co odpowiedź, ale dla niektórych może być łatwiejszy.
rab
2
poważnie nie ma opcji --force, więc tylko hack na randkę, prawda? m (
mcantsin
3

Użyj --faked-system-timeopcji:

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

Wolałbym opcję, która wymusiłaby szyfrowanie wygasłego klucza, jednocześnie rejestrując właściwy czas (szczególnie przy podpisywaniu).

Małgorzata
źródło
2

Zresetuj zegar sprzętowy i systemowy:

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

Następnie (mam nadzieję, że masz włączony NTP) napraw swój zegar sprzętowy za pomocą:

sudo hwclock --systohc
Gość
źródło
2
Zbyt drastyczny. Czas powinien być nadpisany tylko dla gpg, a nie dla całego systemu.
Vi.
2
faketime '2012-12-24 08:15:42' gpg ...jest lepiej.
Vi.