Как заставить gpg2 использовать просроченный ключ?

2805
Vi.
$ gpg -ear XXXXXXX gpg: XXXXXXXX: skipped: unusable public key  $ gpg --debug-ignore-expiration -ear XXXXXXXX gpg: Invalid option "--debug-ignore-expiration" 

Как зашифровать? Обновления для ключа не доступны на серверах ключей. Сообщения должны быть видны, если у пользователя все еще есть этот просроченный ключ или он вообще не виден

Есть ли какая-нибудь --just-do-that-I-wantопция, которая позволит сделать это без изменения исходного кода GPG?

8
почему ты хочешь это сделать? По сути, это разрушает всю безопасность, о которой вы можете сказать, что GPG можно буквально просто отправить в виде открытого текста, если вы сделаете это. Я рекомендую вам просто попросить получателя обновить его открытый ключ konqui 6 лет назад 0
Использование ключа с истекшим сроком действия обеспечивает лучшую безопасность по сравнению с использованием ключа без ключа. Также может понадобиться расшифровать старое сообщение из архива, используя старый ключ с длительным сроком действия. Vi. 6 лет назад 0
Shure также возможно сломанное шифрование лучше, чем вообще отсутствие шифрования. Я просто преувеличиваю это из-за Причин. Для старых Сообщений, зашифрованных тогда старым Открытым Ключом, да, ему нужно использовать свой старый Закрытый ключ, но это не значит, что он не может создать новую пару ключей для использования в новых сообщениях. Так что на самом деле нет причин использовать устаревший открытый ключ. Секретный ключ - это еще одна вещь, но у меня никогда не было жалоб на использование устаревшего закрытого ключа для описания. konqui 6 лет назад 0

2 ответа на вопрос

6
Vi.

Как предложил @rob в комментариях, libfaketime хорошо справляется с этим:

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

Старый ответ:

  1. Запустите UML (пользовательский режим Linux)
  2. Установите дату внутри UML в допустимый диапазон.
  3. Зашифровать сообщение в UML
Можно также подделать дату с помощью libfaketime. Та же идея, что и в ответе, но для некоторых это может быть проще. rob 11 лет назад 1
там серьезно нет опции --force, так что просто взломать дату делает это? м ( mcantsin 7 лет назад 1
2
guest

Сброс аппаратных и системных часов:

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

После этого (надеюсь, у вас включен NTP) исправьте ваши аппаратные часы с помощью:

sudo hwclock --systohc 
Слишком радикально. Время должно быть переопределено только для gpg, а не для всей системы. Vi. 6 лет назад 0
`faketime '2012-12-24 08:15:42' gpg ...` лучше. Vi. 6 лет назад 0