Як змусити gpg2 використовувати ключ із минулим терміном?


14
$ 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?


чому ти хочеш це робити? Це, в основному, порушує всю безпеку Thing GPG - це ви можете буквально просто надіслати Cleartext, якщо ви це зробите. Я рекомендую вам просто попросити особу, яка
одержує

Використання ключа з простроченим терміном забезпечує кращу безпеку порівняно з тим, що не використовується жодного ключа. Також може знадобитися розшифрувати старе повідомлення з архіву за допомогою старого давно минулого ключа.
Ві.

Shure також можливо зламане шифрування краще, ніж взагалі ніяке шифрування. Я просто перебільшую це через причини. Для старих Повідомлень, зашифрованих тоді старим відкритим ключем, так, йому потрібно використовувати свій старий приватний ключ, але це не я, він не може створити нову Keypair, щоб використовувати для нових повідомлень. Тож насправді немає причин використовувати застарілий відкритий ключ. Приватний ключ - ще одна річ, але я ніколи не мав gpg скаржитися на використання застарілого приватного ключа для опису.
konqui

Відповіді:


12

Як @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

1
Також можна підробити дату, використовуючи libfaketime. Та сама ідея, що і відповідь, але може бути легшою для деяких.
грабувати

2
серйозно немає - force варіанту, так що просто злом на побачення робить це тільки? м (
mcantsin

3

Скористайтеся --faked-system-timeопцією:

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

Я вважаю за краще варіант, який змушує шифрувати ключ із минулим терміном, а також записувати правильний час (особливо при підписанні).


2

Скидання апаратного та системного годинника:

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

Після цього (сподіваюся, у вас включений NTP) виправте свій апаратний годинник за допомогою:

sudo hwclock --systohc

2
Надто драстично. Час слід перевищувати лише для gpg, а не для всієї системи.
Ві.

2
faketime '2012-12-24 08:15:42' gpg ...краще.
Ві.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.