Làm cách nào để buộc gpg2 sử dụng khóa hết hạn?


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

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

Làm thế nào để mã hóa? Không có bản cập nhật cho khóa có sẵn từ bàn phím. Tin nhắn nên được xem nếu người dùng vẫn còn khóa đó hết hạn hoặc không thấy gì cả.

Có một số --just-do-that-I-wanttùy chọn sẽ cho phép làm điều này mà không thay đổi mã nguồn của GPG?


tại sao bạn muốn làm điều này? Về cơ bản, nó phá vỡ toàn bộ bảo mật GPing nói về bạn theo nghĩa đen chỉ có thể gửi nó Cleartext nếu bạn làm điều này. Tôi khuyên bạn chỉ nên yêu cầu Người nhận cập nhật Khóa công khai của mình
konqui

Sử dụng khóa hết hạn lâu sẽ bảo mật tốt hơn so với việc không sử dụng khóa nào cả. Ngoài ra, người ta có thể cần giải mã tin nhắn cũ từ kho lưu trữ bằng khóa cũ đã hết hạn.
Vi.

Shure cũng có thể bị hỏng Mã hóa tốt hơn là không có Mã hóa nào cả. Tôi chỉ nói quá vì lý do. Đối với các Tin nhắn cũ được mã hóa bằng Khóa công khai cũ trước đó, vâng, anh ta cần sử dụng Khóa riêng cũ nhưng không phải tôi không thể tạo một Khóa mới để sử dụng cho Tin nhắn mới. Vì vậy, thực sự không có lý do để sử dụng Khóa công khai lỗi thời. Khóa riêng là một điều khác nhưng tôi chưa bao giờ gpg phàn nàn về việc sử dụng Khóa riêng đã lỗi thời cho Decription.
konqui

Câu trả lời:


12

Như @rob đề xuất trong các bình luận, libfaketime xử lý việc này tốt:

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

Câu trả lời cũ:

  1. Bắt đầu UML (chế độ người dùng linux)
  2. Đặt ngày trong UML thành phạm vi chấp nhận được.
  3. Mã hóa tin nhắn trong UML

1
Cũng có thể giả ngày bằng cách sử dụng libfaketime. Cùng một ý tưởng như câu trả lời, nhưng có thể dễ dàng hơn đối với một số người.
cướp

2
Nghiêm túc là không có tùy chọn - lực lượng, vì vậy chỉ cần một ngày hack thôi phải không? m (
mcantsin

3

Sử dụng --faked-system-timetùy chọn:

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

Tôi thích một tùy chọn sẽ buộc mã hóa thành một khóa hết hạn trong khi cũng ghi lại thời gian chính xác (đặc biệt là khi ký).


2

Đặt lại đồng hồ phần cứng và hệ thống:

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

Sau đó (tôi hy vọng bạn đã bật NTP), hãy sửa đồng hồ phần cứng của bạn bằng:

sudo hwclock --systohc

2
Quá quyết liệt. Thời gian nên được ghi đè chỉ cho gpg, không phải cho toàn bộ hệ thống.
Vi.

2
faketime '2012-12-24 08:15:42' gpg ...tốt hơn.
Vi.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.