क्या GPG में पहले से एन्क्रिप्टेड फ़ाइल में प्राप्तकर्ता को जोड़ना संभव है?


12

मान लें कि मैंने GPG का उपयोग करके एक (संभवतः बड़ी) फ़ाइल एन्क्रिप्ट की है; जैसे

gpg --recipient "Some Name" -o this_file.gpg --encrypt this_file.txt

क्या फ़ाइल को पहले डिक्रिप्ट किए बिना किसी अन्य प्राप्तकर्ता को जोड़ना संभव है, उसके बाद किसी अन्य एन्क्रिप्शन द्वारा?

gnupg 

आपने फ़ाइल को "कुछ नाम" की सार्वजनिक कुंजी के साथ एन्क्रिप्ट किया है। और यह एक और प्राप्तकर्ता के लिए क्या उपयोग करेगा?
ott--

6
@ott: यह काफी नहीं है कि यह कैसे काम करता है (AFAIK)। PGP फ़ाइल को एक सममित कुंजी के साथ प्राप्त करता है जो एक प्राप्तकर्ता सार्वजनिक कुंजी के साथ नहीं है। फिर यह प्रत्येक प्राप्तकर्ता की सार्वजनिक कुंजी का उपयोग करके उस सममित-कुंजी की कई प्रतियों को एन्क्रिप्ट करता है।
RedGrittyBrick

@RedGrittyBrick मैं pgp के बारे में नहीं जानता, लेकिन उसके लिए gpg का उपयोग करता --symmetricहै। इसके साथ --recipientवें प्राप्तकर्ता की सार्वजनिक कुंजी का उपयोग करता है। 1 से अधिक प्राप्तकर्ता हो सकते हैं, लेकिन यह एक कमांड में होना चाहिए, 2 अलग-अलग कमांड में नहीं।
ott--

3
@ott: मैंने पढ़ा है कि " किसी कमांड के माध्यम से किसी भी संख्या में कई प्राप्तकर्ताओं के लिए एक साथ एक फ़ाइल को एन्क्रिप्ट करना भी संभव हैgpg -e -r <name1> -r <name2> ... <file> " हालांकि मैंने खुद यह कोशिश नहीं की है। यह कई वर्षों पहले मैंने क्रिप्टोकरंसी के बारे में सीखा था, जो यह है कि संदेश पाठ को एन्क्रिप्ट करने के लिए तेजी से सममित एल्गोरिदम का उपयोग करना लगभग हमेशा अधिक कुशल होता है। केवल संदेश-कुंजी को धीमा असममित एन्क्रिप्शन का उपयोग करके एन्क्रिप्ट किया गया है।
RedGrittyBrick

जवाबों:


8

संक्षिप्त उत्तर: नहीं

सबसे पहले, ध्यान दें कि यदि आप प्राप्तकर्ताओं में से एक नहीं हैं, तो यह पूरी तरह से असंभव है। आपके पास फ़ाइल को डिक्रिप्ट करने की क्षमता भी नहीं है, बहुत कम एक प्राप्तकर्ता जोड़ें। भले ही आपने इसे दो सेकंड पहले एन्क्रिप्ट किया हो।

यदि आप एक प्राप्तकर्ता हैं, तो यह तकनीकी रूप से संभव है। फ़ाइल वास्तव में सत्र कुंजी के साथ एन्क्रिप्ट की गई है और सत्र कुंजी आपकी सार्वजनिक कुंजी के साथ एन्क्रिप्ट की गई है, इसलिए आप सिद्धांत रूप में सत्र कुंजी को डिक्रिप्ट कर सकते हैं और इसे अन्य व्यक्तियों की कुंजी में बदल सकते हैं, और फिर सब कुछ एक फ़ाइल में एक साथ पैकेज कर सकते हैं जैसे कि आप मूल रूप से दोनों लोगों को दस्तावेज़ एन्क्रिप्ट किया गया था।

हालाँकि, gpg में यह क्षमता नहीं है । निकटतम आप gpg के साथ मिल सकता है

  1. --show-session-keyसत्र कुंजी प्राप्त करने के लिए विकल्प का उपयोग करें (जो कि फ़ाइल को डिक्रिप्ट करने के लिए भी लगता है, इस मामले में बिंदु गायब है)
  2. उस सत्र कुंजी को किसी और की सार्वजनिक कुंजी में एन्क्रिप्ट करें (वास्तव में, यह एक नया सत्र कुंजी बनाता है और मूल सत्र को एन्क्रिप्ट करने के लिए उस सत्र कुंजी का उपयोग करता है)
  3. दोनों फाइलें भेजें।
  4. प्राप्तकर्ता सत्र कुंजी --override-session-keyको डिक्रिप्ट कर सकता है और मूल संदेश को डिक्रिप्ट करने के लिए उपयोग कर सकता है।

3

1) यह स्थिति इसीलिए है कि अपने आप को (साथ ही इच्छित प्राप्तकर्ताओं को) एक फ़ाइल एन्क्रिप्ट करना हमेशा एक अच्छा विचार है। RedGrittyBrick ऊपर वर्णन करने में सही है कि GPG और PGP कैसे काम करते हैं, जो ऊपर दिए गए नथांग के उत्तर में बहती है।

2) हालांकि, यदि आपके पास मूल फ़ाइल है, तो आप नए प्राप्तकर्ता को एक नई एन्क्रिप्ट की गई फ़ाइल बनाने के लिए सर्वश्रेष्ठ हैं।

मान लें कि आप सत्र के मुख्य मार्ग को नाथांग के सुझाव से नहीं जाना चाहते हैं, यदि आपने पहली बार में अपने आप को (# 1 में ऊपर) फ़ाइल एन्क्रिप्ट किया है, तो इसे डिक्रिप्ट करें और फिर ऊपर चरण # 2 का पालन करें।

यदि आपके पास न तो मूल है और न ही इसे अपने आप में एन्क्रिप्ट किया गया है, तो आप डेटा को वापस नहीं पा सकते हैं और इसे किसी और को एन्क्रिप्ट नहीं कर सकते हैं, इसके बिना पहले प्राप्तकर्ता आपको कॉपी वापस भेज देगा।


1
वास्तव में, यह हमेशा एक अच्छा विचार नहीं है। पीजीपी देखें : प्राप्तकर्ता के रूप में आपकी सार्वजनिक कुंजी शामिल है? कोई कम सुरक्षित? सूचना सुरक्षा ढेर एक्सचेंज पर और उसके खिलाफ कुछ तर्कों के लिए।
एक CVn

0

क्या फ़ाइल को पहले डिक्रिप्ट किए बिना किसी अन्य प्राप्तकर्ता को जोड़ना संभव है, उसके बाद किसी अन्य एन्क्रिप्शन द्वारा?

यह डिक्रिप्टिंग के बिना संभव नहीं है , लेकिन ऐसा लगता है कि यह बिना किसी फाइल को डिक्रिप्ट किए संभव होना चाहिए :

gpg -d this_file.gpg | gpg -e -r "Some Name" -r "Another Name" -o this_file.gpg

इसके अलावा ऐसा लगता है कि एक दूषित फ़ाइल में परिणाम हुआ है (कम से कम कभी-कभी) क्योंकि gpgएक साथ एक ही फ़ाइल को पढ़ना और लिखना दोनों हैं:

इसके बजाय, आप डिक्रिप्ट की गई फ़ाइल को प्रबंधित करने की आवश्यकता से बचने के लिए निम्नलिखित (एक स्क्रिप्ट में) कर सकते हैं:

gpg -d -o this_file.txt this_file.gpg

gpg -e \
    -r "Some Name" \
    -r "Another Name" \
    -o this_file.gpg \
    --batch --yes \
    this_file.txt

shred -u this_file.txt

shred-uविकल्प के साथ , सुरक्षित रूप से डेटा को अधिलेखित कर देता है और फिर आपके द्वारा निर्दिष्ट फ़ाइल को हटा देता है। srmमैक ओएस एक्स की तरह अन्य प्लेटफार्मों के लिए भी इसी तरह के कार्यक्रम मौजूद हैं।

या आप अपनी स्क्रिप्ट इस तरह से लिख सकते हैं ( dave_thompson_085 के सौजन्य से ) एक फाइल में डिक्रिप्टेड डेटा को संग्रहीत करने की आवश्यकता से बचने के लिए:

gpg -d this_file.gpg \
| gpg -e \
    -r "Some Name" \
    -r "Another Name" \
    -o this_file.gpg.new \
    --batch --yes

mv -f this_file.gpg.new this_file.gpg

2
यदि आपको अस्थायी रूप से एन्क्रिप्ट किया गया स्थान छोड़ना है तो आपको एक स्पष्ट अस्थायी फ़ाइल लिखने की आवश्यकता नहीं है : gpg -d file.gpg | gpg -e ... -o file.new; mv file.new file.gpgया उसका दर्पण mv file.gpg file.old; gpg -d file.old | gpg -e ... -o file.gpg। या (शायद भी) चतुराई से सिर्फ पुराने रखने inode :{ rm file.gpg; gpg -d /dev/fd/3; } 3<file.gpg | gpg -e ... -o file.gpg
dave_thompson_085

@ dave_thompson_085 दिलचस्प - धन्यवाद!
केनी एविट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.