GPG फ़ाइलों को डिक्रिप्ट करने के लिए निजी / गुप्त ASC कुंजी को कैसे निर्यात करें


88

पृष्ठभूमि: मेरे मालिक ने सार्वजनिक और निजी भागों के साथ मेरे लिए एक ASC कुंजी निर्यात करने की कोशिश की है, लेकिन जब भी मुझे फ़ाइल मिलती है तो निजी भाग कभी भी लोड नहीं होता है और यह किसी भी फाइल को डिक्रिप्ट नहीं करेगा।

हमने ASC कुंजी का उपयोग करके निर्यात करने की कोशिश की है:

  • विंडोज एप्लीकेशन क्लियोपेट्रा 2.1 (gpg4win में शामिल)
  • Windows अनुप्रयोग GNU गोपनीयता सहायक (gpg4win में शामिल)

            Error: "Decryption failed. Secret Key Not available." 
    

आप gpg फ़ाइलों को डिक्रिप्ट करने के लिए गुप्त या निजी asc कुंजी को ठीक से कैसे निर्यात करते हैं?

जवाबों:


185

आप GPG से कमांड-लाइन टूल के साथ निजी कुंजी निर्यात कर सकते हैं । यह विंडोज-शेल पर काम करता है। निम्न आदेश का उपयोग करें:

gpg --export-secret-keys

के साथ एक सामान्य निर्यात --exportमें कोई भी निजी कुंजी शामिल नहीं होगी, इसलिए आपको इसका उपयोग करना होगा --export-secret-keys

संपादित करें:

मेरी टिप्पणियों में दी गई जानकारी को समिट करने के लिए, यह वह कमांड है जो आपको आईडी 1234ABCD के साथ एक विशेष कुंजी को गुप्त secret.asc में निर्यात करने की अनुमति देता है:

gpg --export-secret-keys --armor 1234ABCD > secret.asc

आप निम्नलिखित कमांड का उपयोग करके आईडी पा सकते हैं। आईडी दूसरे कॉलम का दूसरा भाग है:

gpg --list-keys

उन सभी के बजाय सिर्फ 1 विशिष्ट गुप्त कुंजी निर्यात करने के लिए:

gpg --export-secret-keys keyIDNumber > exportedKeyFilename.asc

keyIDNumber वांछित कुंजी के लिए कुंजी आईडी की संख्या है जिसे आप निर्यात करने की कोशिश कर रहे हैं।


4
@ ब्रायन: यह कंसोल की कुंजी को डंप कर देगा। यदि आप इसे किसी फ़ाइल में संग्रहीत करना चाहते हैं, तो आप आउटपुट को एक मनमाने फ़ाइल नाम ("gpg --export-secret-keys> secret.asc") पर पुनर्निर्देशित कर सकते हैं।
डिमेंटो

5
@ ब्रायन: यह आपको ASCII में आउटपुट देता है न कि बाइनरी में। यदि आप इसे एक फ़ाइल में रखते हैं, तो यह वास्तव में मायने नहीं रखता है। लेकिन एक बार जब आप इसे किसी अन्य तरीके से पास करना चाहते हैं, तो ASCII संस्करण को संभालना बहुत आसान है (ईमेल में इसे इनलाइन भेजना)
Demento

8
हो सकता है कि आप अपनी गुप्त कुंजी किसी अन्य स्थान पर ले जाना चाहते हों। इस मामले में आपको निर्यात किए गए डेटा को एन्क्रिप्ट करना चाहिए: "gpg --export-secret-key keyIDNumber | gpg -c> एन्क्रिप्टेड" इसे "gpg -o अनएन्क्रिप्टेड एन्क्रिप्टेड" के साथ डिक्रिप्ट करें।
रॉकडबूट

2
GnuPG से निर्यात की गई कुंजी एन्क्रिप्टेड रहती हैं (यही कारण है कि आपको निजी कुंजी पासफ़्रेज़ दर्ज करने की आवश्यकता नहीं है), इसलिए वास्तव में इसे फिर से एन्क्रिप्ट करने की कोई आवश्यकता नहीं है।
फेरी बेंडर


32

उपरोक्त सभी उत्तर सही हैं, लेकिन एक महत्वपूर्ण कदम याद आ सकता है, आपको आयातित कुंजी को संपादित करने की आवश्यकता है और अंततः उस कुंजी पर "भरोसा करें"

gpg --edit-key (keyIDNumber)
gpg> trust

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

और उस कुंजी के रूप में आयातित निजी कुंजी को सक्षम करने के लिए 5 का चयन करें


18

डार्क औटर द्वारा उपचार देखें

https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

यदि साइट डाउन है तो आर्काइव.ऑर्ग बैकअप का संदर्भ लें:

https://web.archive.org/web/20170518155052/https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

जिसमें चाबियों को स्थानांतरित करने का एक उचित सुरक्षित तरीका शामिल है। आप बार-बार उपयोग के लिए नीचे दी गई खोल-स्क्रिप्ट में उस सिफारिश को डाल सकते हैं।

सबसे पहले उस KEYID को प्राप्त करें जिसे आप द्वारा दिखाए गए सूची से चाहते हैं

$ gpg -K

परिणामी सूची से कुंजी (सेक के बाद 8 हेक्साडेसिमल) को स्थानांतरित करने की आवश्यकता है।

फिर पहले खाते पर परीक्षण किए गए शेल scipts "export_pStreet_key" को संलग्न करें और अपना pubkey.gpg + keys.asc बनाएं। इसके बाद दूसरे खाते "import_pStreet_key" पर आह्वान करें। यहाँ उनकी सामग्री बिल्ली के साथ दिखाई गई है (कॉपी और पेस्ट सामग्री):

$ cat export_private_key 
gpg -K
echo "select private key"
read KEYID
gpg --output pubkey.gpg --export $KEYID
echo REMEMBER THE COMING PASS-PHRASE
gpg --output - --export-secret-key $KEYID | \
   cat pubkey.gpg - | \
   gpg --armor --output keys.asc --symmetric --cipher-algo AES256
ls -l pubkey.gpg keys.asc
####################  E X P O R T _ P R I V A T E _ K E Y  #####################

अब कुछ लोगों द्वारा ट्रान्सफर का अर्थ है "pubkey.gpg" (यदि आवश्यक हो) और दूसरे खाते में निजी "कीसेकैश" और नीचे दिखाए गए प्रोग्राम को एन्वोक करें।

$ cat import_private_key 
gpg --no-use-agent --output - keys.asc | gpg --import
###################  I M P O R T _ P R I V A T E _ K E Y  ######################

ओटर की भावना में "और वह, होना चाहिए, वह"।


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

विकल्प --no-use-agentgpg संस्करण 2 में अप्रचलित है।
जोश हबडास

9

मुझे लगता है कि आपने अभी तक निजी कुंजी को आयात नहीं किया था क्योंकि संदेश की त्रुटि में कहा गया था, gnupg से सार्वजनिक / निजी कुंजी आयात करने के लिए:

gpg --import mypub_key
gpg --allow-secret-key-import --import myprv_key

मैं एक कंप्यूटर से निर्यात करने के बारे में पूछ रहा था जो काम करता है ... आप केवल कुंजी को आयात कर सकते हैं यदि इसके स्थानीय सर्वर पर।
ब्रायन मैक्कार्थी

@ ब्रायन मैकार्थी: आप क्या कहना चाह रहे हैं?
SIFE

क्या हमें वास्तव में सार्वजनिक कुंजी को आयात करने की आवश्यकता है यदि निजी पहले से ही आयात किया गया है? जैसा कि मैं समझता हूं, एक सार्वजनिक कुंजी एक निजी से कुछ भी उत्पन्न हो सकती है।
फ़रहान

@farhany मुझे लगता है कि हाँ, क्योंकि जब आप अपने संदेश पर हस्ताक्षर करेंगे, तो आपको इसकी आवश्यकता होगी।
SIFE

6

यह मेरे लिए काम कर रहा है:

   gpg -a --export-secret-keys > exportedKeyFilename.asc 

जब तक आप .asc एक्सटेंशन पर रहते हैं, तब तक आप किसी भी नाम से keyfilename.asc नाम रख सकते हैं।
यह कमांड एक उपयोगकर्ता के कंप्यूटर पर keyfilename.asc के सभी गुप्त-कुंजी को कॉपी करता है, जहां कमांड को बुलाया गया था।

उन सभी के बजाय सिर्फ 1 विशिष्ट गुप्त कुंजी निर्यात करने के लिए:

   gpg -a --export-secret-keys keyIDNumber > exportedKeyFilename.asc

keyIDNumber वांछित कुंजी के लिए कुंजी आईडी की संख्या है जिसे आप निर्यात करने की कोशिश कर रहे हैं।


1
आप सभी उपलब्ध कुंजियों को "--सूची-कुंजियों" के साथ सूचीबद्ध कर सकते हैं। दूसरे कॉलम में "2048g / 1234ABCD" जैसी आईडी होगी। वांछित कुंजी ढूंढें और इसे "gpg --export-secret-keys 1234ABCD> secret.asc" के साथ निर्यात करें, निश्चित रूप से सही आईडी के साथ 1234ABCD बदल रहा है। आप "-a" ध्वज भी जोड़ सकते हैं। यह ASCII वर्णों के साथ आउटपुट लिखता है, बस अगर बाइनरी आउटपुट परेशानी पैदा कर रहा है।
हेमंतो

@ डिमेंटो, अतिरिक्त प्रतिक्रिया के लिए धन्यवाद ... बीमार जवाब में यह जोड़ें
ब्रायन मैक्कार्थी

2
अगर आपको वास्तव में asc चाहिए तो आपको अभी भी a -a की जरूरत है
RichieHH

फिर आप उन्हें दूसरे कंप्यूटर पर कैसे आयात करते हैं?
नटिम

@Natim मैं कल्पना करता हूं कि आप exportedKeyFilename.ascदूसरे कंप्यूटर पर ले जाएं और फिर फ़ाइल के gpg --allow-secret-key-import --import exportedKeyFilename.ascसाथ निर्देशिका में करें .asc। देखें: unix.stackexchange.com/questions/184947/…
Brixtsyorfuzthrāx

5

@Wolfram J के उत्तर के समान, यहाँ पासफ़्रेज़ के साथ अपनी निजी कुंजी को एन्क्रिप्ट करने की विधि है :

gpg --output - --armor --export $KEYID | \
    gpg --output private_key.asc --armor --symmetric --cipher-algo AES256

और डिक्रिप्ट करने के लिए एक इसी विधि:

gpg private_key.asc

5

1. एक गुप्त कुंजी का निर्यात करें (यह वही है जो आपके बॉस को आपके लिए करना चाहिए)

gpg --export-secret-keys yourKeyName > privateKey.asc

2.Import गुप्त कुंजी (अपने निजी आयात करें)

gpg --import privateKey.asc

3. अभी तक नहीं किया गया है, फिर भी आपको अंततः एक कुंजी पर भरोसा करने की आवश्यकता है। आपको यह सुनिश्चित करने की आवश्यकता होगी कि आप अंततः एक कुंजी पर भी भरोसा करते हैं।

gpg --edit-key yourKeyName

भरोसा दर्ज करें, 5, y, और फिर छोड़ दिया

स्रोत: https://medium.com/@GalarnykMichael/public-key-asymmetric-cryptography-using-gpg-5a8d914c9bca

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