एक्सपायर की की का उपयोग करने के लिए gpg2 को कैसे मजबूर करें?


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

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

एन्क्रिप्ट कैसे करें? Keyervers से उपलब्ध कुंजी के लिए कोई अद्यतन नहीं हैं। संदेशों को देखा जाना चाहिए कि उपयोगकर्ता के पास अभी भी वह समय-सीमा समाप्त कुंजी है या नहीं देखी गई है।

क्या कोई --just-do-that-I-wantविकल्प है जो GPG के स्रोत कोड को बदलने के बिना ऐसा करने की अनुमति देगा?


आप ऐसा क्यों करना चाहते हैं? यह मूल रूप से पूरी सुरक्षा को तोड़ देता है। थिंग जीपीजी के बारे में है कि अगर आप ऐसा करते हैं तो आप इसे स्पष्ट रूप से भेज सकते हैं। मैं आपको सलाह देता हूं कि आप प्राप्तकर्ता को इसकी सार्वजनिक कुंजी अपडेट करने के लिए
कहें

लंबे समय तक एक्सपायरी की का इस्तेमाल करने से बिना किसी चाबी के इस्तेमाल करने की तुलना में बेहतर सुरक्षा मिलती है। इसके अलावा किसी को पुरानी लंबी-अवधि की कुंजी का उपयोग करके संग्रह से पुराने संदेश को डिक्रिप्ट करना पड़ सकता है।
वि।

Shure भी संभवतः टूटे हुए एन्क्रिप्शन किसी एन्क्रिप्शन से बेहतर है। मैं सिर्फ कारण के कारण इसे खत्म कर दिया। पुरानी सार्वजनिक कुंजी के साथ एन्क्रिप्ट किए गए पुराने संदेशों के लिए, हाँ, उसे अपनी पुरानी निजी कुंजी का उपयोग करने की आवश्यकता है, लेकिन ऐसा नहीं है कि वह नए संदेश के लिए उपयोग करने के लिए एक नई कीपर नहीं बना सकता है। इसलिए एक पुरानी सार्वजनिक कुंजी का उपयोग करने का कोई कारण नहीं है। निजी कुंजी एक और बात है, लेकिन मैंने कभी भी डिक्रिप्शन के लिए एक पुरानी निजी कुंजी का उपयोग करने पर शिकायत नहीं की थी।
कोनक्वी

जवाबों:


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 प्रारंभ करें (उपयोगकर्ता मोड लिनक्स)
  2. स्वीकार्य सीमा तक UML के अंदर दिनांक निर्धारित करें।
  3. UML में संदेश एन्क्रिप्ट करें

1
भी libfaketime का उपयोग करके दिनांक नकली कर सकते हैं। उत्तर के रूप में एक ही विचार, लेकिन कुछ के लिए आसान हो सकता है।
लूट

2
गंभीरता से कोई भी लागू विकल्प नहीं है, इसलिए केवल एक तारीख हैक ही करता है? m (
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

बाद में (मुझे आशा है कि आपके पास एनटीपी सक्षम है) अपनी हार्डवेयर घड़ी को ठीक करें:

sudo hwclock --systohc

2
बहुत कठोर। समय केवल gpg के लिए ओवरराइड किया जाना चाहिए, पूरे सिस्टम के लिए नहीं।
वि।

2
faketime '2012-12-24 08:15:42' gpg ...बेहतर है।
वि।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.