Bagaimana cara memaksa gpg2 menggunakan kunci kadaluarsa?

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

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

Bagaimana cara mengenkripsi? Tidak ada pembaruan untuk kunci yang tersedia dari server kunci. Pesan harus dilihat jika pengguna masih memiliki kunci kedaluwarsa atau tidak terlihat sama sekali.

Apakah ada beberapa --just-do-that-I-wantopsi yang akan memungkinkan untuk melakukan ini tanpa mengubah kode sumber GPG?

Vi.
sumber
mengapa kamu ingin melakukan ini? Ini pada dasarnya memecah seluruh keamanan Hal GPG adalah tentang Anda benar-benar hanya dapat mengirimnya Cleartext jika Anda melakukan ini. Saya sarankan Anda untuk hanya meminta Penerima untuk memperbarui Kunci Publik
konqui
Menggunakan kunci yang sudah kadaluwarsa memberikan keamanan yang lebih baik dibandingkan dengan tidak menggunakan kunci sama sekali. Orang juga mungkin perlu mendekripsi pesan lama dari arsip menggunakan kunci lama kadaluwarsa.
Vi.
Shure juga kemungkinan Enkripsi yang rusak lebih baik daripada tidak ada Enkripsi sama sekali. Saya hanya melebih-lebihkan karena Alasan. Untuk Pesan lama yang dienkripsi dengan Kunci Publik lama saat itu, ya dia perlu menggunakan Kunci Pribadi yang lama tapi bukan saya dia tidak bisa membuat Keypair baru untuk digunakan untuk Pesan baru. Jadi benar-benar tidak ada alasan untuk menggunakan Kunci Publik yang sudah ketinggalan zaman. Kunci Privat adalah Hal lain tetapi saya tidak pernah mengeluh gpg tentang menggunakan Kunci Privat usang untuk Decription.
konqui

Jawaban:

12

Seperti yang disarankan @rob dalam komentar, libfaketime menangani ini dengan baik:

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

Jawaban lama:

  1. Mulai UML (mode pengguna linux)
  2. Tetapkan tanggal di dalam UML ke rentang yang dapat diterima.
  3. Enkripsi pesan dalam UML
Vi.
sumber
1
Dapat juga memalsukan tanggal menggunakan libfaketime. Ide yang sama dengan jawaban, tetapi mungkin lebih mudah bagi sebagian orang.
merampok
2
tidak ada opsi - force, jadi hanya hack tanggal saja yang melakukannya? m (
mcantsin
3

Gunakan --faked-system-timeopsi:

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

Saya lebih suka opsi yang akan memaksa enkripsi ke kunci kadaluwarsa sambil juga merekam waktu yang benar (terutama ketika masuk).

Margaret
sumber
2

Setel ulang jam sistem dan perangkat:

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

Setelah itu (saya harap Anda mengaktifkan NTP) perbaiki jam perangkat keras Anda dengan:

sudo hwclock --systohc
tamu
sumber
2
Terlalu drastis. Waktu harus diganti hanya untuk gpg, bukan untuk keseluruhan sistem.
Vi.
2
faketime '2012-12-24 08:15:42' gpg ...lebih baik.
Vi.