सवाल एकाधिक सिस्टम में जीपीजी कुंजी का प्रबंधन कैसे करें?


मैं जीएनयूपीजी का उपयोग करने के लिए नया हूं और यह समझने की कोशिश कर रहा हूं कि इसका उपयोग कैसे किया जाए। मैंने समीक्षा की है गैर-तकनीकी लोगों के लिए जीपीजी / पीजीपी की स्पष्टीकरण को समझने में आसान, आसान?, लेकिन अधिकांश गाइड एक एकल मशीन परिप्रेक्ष्य के साथ पीजीपी की व्याख्या करते हैं।

मैं तीन कंप्यूटिंग उपकरणों पर जीएनयूपीजी का उपयोग करना चाहता हूं: एक लिनक्स पीसी, एक लिनक्स लैपटॉप, और एक एंड्रॉइड फोन।

मौलिक उपयोग केस किसी IMAP सेवा द्वारा प्रबंधित ईमेल को एन्क्रिप्ट / डिक्रिप्ट कर रहा है, इसलिए सभी उपकरणों को डिक्रिप्शन के लिए एक ही निजी कुंजी की आवश्यकता होती है।

मुझे लगता है कि मेरे विकल्प हैं:

  1. बस मेरी सभी चाबियों को प्रत्येक डिवाइस पर कीरिंग पर कॉपी करें और मुख्य रूप से सुरक्षा के लिए निजी कुंजी पासवर्ड पर भरोसा करें।

  2. मेरी पहचान का प्रतिनिधित्व करने के लिए एक मास्टर कुंजी (--gen-key के साथ) बनाएं, फिर ईमेल को एन्क्रिप्ट / डिक्रिप्ट करने और मास्टर कुंजी के साथ हस्ताक्षरित करने के लिए एक अलग डिस्पोजेबल कुंजी (फिर से --gen-key के साथ) बनाएं। पूर्व केवल मेरे पीसी पर रहता है, बाद वाला प्रत्येक डिवाइस को वितरित किया जाता है। जब तक मेरे मोबाइल डिवाइस से समझौता नहीं किया जाता है, तब डिस्पोजेबल कुंजी वैध बनी रहती है।

मैं अत्यधिक भयावह हो सकता हूं और इसे और अधिक जटिल बनाना चाहता हूं, लेकिन मुझे हास्य, कृपया। मैं अपने सभी अंडों को एक टोकरी में नहीं डालता में विश्वास करता हूं।

मास्टर कुंजी मेरी डिजिटल पहचान माना जाता है। उस पहचान के आस-पास विश्वास बनाने में बहुत सारे प्रयास किए जाएंगे, और लापरवाही से मेरी कुंजी खोने से मुझे अपने पारानोआ की असुविधा का सामना करना पड़ेगा और एक नई मास्टर कुंजी के आसपास विश्वास बनाना होगा (शायद यह उतना बुरा नहीं है जितना मुझे लगता है, लेकिन मैं इसके लिए नया हूं)

मैं अपने पीसी से अपने लैपटॉप या अपने फोन को खोने की अधिक संभावना है। यदि हानि == समझौता, तो मैं अपने मास्टर कुंजी-जोड़ी की तुलना में एक डिस्पोजेबल कुंजी-जोड़ी (जिसे मैं रद्द कर सकता हूं) खोना चाहता हूं। मैं हमेशा एक नई डिस्पोजेबल कुंजी पर अपने मास्टर कुंजी का विश्वास प्रदान कर सकता हूं।

वास्तव में लंबे सवाल के लिए खेद है। :-)

टी एल; डॉ

क्या पासवर्ड संग्रहित करने के लिए एक पासवर्ड पर्याप्त सुरक्षा है स्वामी कई डिवाइसों में निजी कुंजी?

विकल्प # 2 के लिए मेरी योजना संभव है? क्या मुझे कुछ गलत मिला या क्या इसे बेहतर किया जा सकता है?

यदि विकल्प # 2 एक बुरा विचार है, तो एकाधिक उपकरणों में एक उपयोगकर्ता के लिए GnuPG का उपयोग करते समय सर्वोत्तम प्रथाएं क्या होती हैं?


85
2017-08-25 23:55


मूल




जवाब:


खैर, यह थोड़ा शर्मनाक है। मैंने इस समस्या को हल करने की कोशिश कर रहे एक हफ्ते के दौरान घंटों बिताए हैं, और उत्तर उपकुंजियों के साथ झूठ बोल रहा है - जीएनयूपीजी मैनुअल और एफएक्यू पर एक विषय चमक रहा है।

शोध करते समय कि उपकुंजियां क्या हैं और इन्हें --gen-key के बजाय क्यों उपयोग किया जा सकता है, मैं इस मणि में ठोकर खाई: http://wiki.debian.org/subkeys

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

पेशेवरों:

  1. मास्टर कुंजी की सुरक्षा के लिए मुख्य रूप से पासवर्ड पर भरोसा नहीं करता है,

  2. अगर किसी भी सिस्टम से समझौता किया गया है, तो मास्टर कुंजी तत्काल उपलब्ध नहीं है (जब तक कि मैं मूर्खतापूर्वक अपने फ्लैश ड्राइव को प्लग इन नहीं करता, या एक समझौता सिस्टम को ड्राइव कहा जाता है)

  3. यह डेबियन विकास टीम द्वारा लागू एक अभ्यास है।

  4. जीएनयूपीजी की उपकुंजी सुविधा का उपयोग करता है। जो आपके कीरिंग पर ढीली चाबियों का गुच्छा होने से थोड़ा अधिक व्यवस्थित लगता है, हां?

डेबियन सबकी विकी से प्रासंगिक हिस्सा

  1. अपनी मौजूदा जीएनयूपीजी फाइलों ($ HOME / .gnupg) के बैकअप बनाएं। उन्हें सुरक्षित रखें। यदि निम्न चरणों के दौरान कुछ गलत हो जाता है, तो आपको किसी ज्ञात अच्छी जगह पर वापस जाने की आवश्यकता हो सकती है। (नोट: umask 077 का परिणाम बैकअप के लिए प्रतिबंधित अनुमतियों में होगा।)

    • umask 077; tar -cf $HOME/gnupg-backup.tar -C $HOME .gnupg
  2. हस्ताक्षर करने के लिए एक नई उपकुंजी बनाएँ।

    • अपनी कुंजी आईडी पाएं: gpg --list-keys yourname
    • gpg --edit-key YOURMASTERKEYID
    • पर gpg> संकेत: addkey
    • यह आपके पासफ्रेज के लिए पूछता है, इसे टाइप करें।
    • "आरएसए (केवल साइन)" कुंजी प्रकार चुनें।
    • 4096 (या 2048) बिट कुंजी आकार चुनना बुद्धिमान होगा।
    • एक समाप्ति तिथि चुनें (आप अपनी उपकुंजियों को मास्टर कुंजी से अधिक बार घुमा सकते हैं, या उन्हें बिना किसी समाप्ति के मास्टर मास्टर के जीवन के लिए रख सकते हैं)।
    • जीएनयूपीजी (अंततः) एक कुंजी बनायेगा, लेकिन ऐसा करने के लिए आपको पर्याप्त एन्ट्रॉपी प्राप्त करने के लिए इंतजार करना पड़ सकता है।
    • कुंजी सहेजें: save
  3. आप इसे दोहरा सकते हैं, और यदि आप चाहें तो "आरएसए (केवल एन्क्रिप्ट करें)" उप कुंजी भी बना सकते हैं।

  4. अब कॉपी करें $HOME/.gnupg अपने यूएसबी ड्राइव के लिए।

  5. यहाँ मुश्किल हिस्सा आता है। आपको निजी मास्टर कुंजी को हटाने की ज़रूरत है, और दुर्भाग्य से जीएनयूपीजी ऐसा करने का सुविधाजनक तरीका प्रदान नहीं करता है। हमें उपकुंजी को निर्यात करने, निजी कुंजी को हटाने और उपकुंजी को वापस आयात करने की आवश्यकता है।

    • उपकुंजियों को निर्यात करें: gpg --export-secret-subkeys YOURMASTERKEYID >secret-subkeys (निर्यात करने के लिए कौन सी उपकुंजी चुनने के लिए, प्रत्येक विस्मयादिबोधक चिह्न के साथ उपकुंजी आईडी निर्दिष्ट करें: gpg --export-secret-subkeys SUBKEYID! [SUBKEYID! ..])
    • अपने मास्टर गुप्त कुंजी को हटाएं: gpg --delete-secret-key YOURMASTERKEYID
    • उपकुंजियों को वापस आयात करें: gpg --import secret-subkeys
    • सत्यापित करो कि gpg -K एक दिखाता है sec# बस के बजाय sec आपकी निजी कुंजी के लिए। इसका मतलब है कि गुप्त कुंजी वास्तव में वहां नहीं है। (आउटपुट में एक डमी ओपनपीजीपी पैकेट की उपस्थिति भी देखें gpg --export-secret-key YOURMASTERKEYID | gpg --list-packets)।
    • वैकल्पिक रूप से, उपकुंजियों की रक्षा करने वाले पासफ्रेज को बदलें: gpg --edit-key YOURMASTERKEYID passwd। (ध्यान दें कि निजी मास्टर कुंजी सहित बैकअप पर निजी कुंजी सामग्री पुराने पासफ्रेज़ द्वारा संरक्षित रहेगी।)

आपका कंप्यूटर अब सामान्य उपयोग के लिए तैयार है।

जब आपको मास्टर कुंजी का उपयोग करने की आवश्यकता होती है, तो एन्क्रिप्टेड यूएसबी ड्राइव को माउंट करें, और GNUPGHOME पर्यावरण चर सेट करें:

export GNUPGHOME=/media/something
gpg -K

या उपयोग करें - कुछ कमांड लाइन तर्क:

gpg --home=/media/something -K

बाद वाले कमांड को अब अपनी निजी कुंजी सूचीबद्ध करनी चाहिए sec और नहीं sec#

सभी मशीनों के लिए प्रति मशीन बनाम एक एकल उपकुंजी एकाधिक उपकुंजी

डेबियन उपकुंजी विकी से उद्धरण। मूल रूप से टिप्पणियों में उल्लेख किया। [पैराफ्रेशिंग] और ज़ोर मेरी।

एक मशीन प्रति एक उपकुंजी रखने का लुत्फ उठा सकता है ताकि आपको उस मशीन की संभावित समझौता उपकुंजी का आदान-प्रदान करने की आवश्यकता हो। सभी मशीनों पर उपयोग की जाने वाली एक एकल उपकुंजी के मामले में, इसे सभी मशीनों पर आदान-प्रदान की आवश्यकता होती है [जब वह एकल उपकुंजी या समझौता होने का संदेह होता है]।

लेकिन यह केवल उपकुंजी पर हस्ताक्षर करने के लिए काम करता है। यदि आपके पास एकाधिक एन्क्रिप्शन उपकुंजी हैं, gpg केवल सबसे हालिया एन्क्रिप्शन उपकुंजी के लिए एन्क्रिप्ट करने के लिए कहा जाता है और सभी ज्ञात और निरस्त एन्क्रिप्शन उपकुंजियों के लिए नहीं।


49
2017-08-26 01:28



अच्छा क्यू एंड ए, लेकिन AFAIK अभी भी इस सेटअप के साथ एक समस्या है ... हस्ताक्षर करने के लिए यह बहुत अच्छा है, लेकिन एन्क्रिप्शन के लिए नहीं, अगर आप अपने अलग-अलग उपकरणों के बीच एक ही एन्क कुंजी साझा नहीं करना चाहते हैं, क्योंकि जब कोई आपको एन्क्रिप्टेड प्राप्त करता है संदेश, जीपीजी डिफ़ॉल्ट रूप से उपयोग नवीनतम नवीनतम एनक कुंजी उत्पन्न नहीं किया गया। यूआईडी (घर या काम, आदि) के आधार पर प्रेषकों को एक विशिष्ट एन्क उपकुंजी का उपयोग करने के लिए मजबूर करना संभव नहीं है। - KurzedMetal
शायद यह एक समस्या है। मेरी सबसे बड़ी चिंता ट्रस्ट के वेब को खो रही है जिसे मैं अपनी मास्टर कुंजी (जो केवल संकेत) के आसपास बनाता है। निश्चित रूप से एन्क्रिप्शन संदेशों को पढ़ने के लिए उपयोग किए जाने वाले सभी उपकरणों पर एन्क्रिप्शन उपकुंजी मौजूद होना चाहिए। अगर मेरी एन्क्रिप्शन कुंजी कभी समझौता की जाती है, तो पुनर्प्राप्ति प्रक्रिया में केवल खुद ही शामिल होता है; मेरे मास्टर साइनिंग कुंजी को खोने और नई कुंजी पर हस्ताक्षर करने के लिए ट्रस्ट के अपने वेब से पूछने / मनाने के विरोध में। मैं अपने वॉल्ट में एन्क्रिप्शन उपकुंजी को स्थानांतरित करने का इरादा नहीं रखता था। - Justin C


किसी ऐसे व्यक्ति के रूप में जो विफलता के एकल बिंदु पसंद नहीं करता है (मास्टर कुंजी और सहित ख़ास तौर पर पासवर्ड), यह वही तरीका है जो मैं करूँगा। यह डिवाइस को विश्वास के वेब के माध्यम से संचालित करने की अनुमति देता है, जबकि अभी भी विकेन्द्रीकृत पहचान की अनुमति देता है।

मुझे नहीं पता कि इसके लिए पहले से ही एक मौजूदा प्रणाली है, लेकिन मुझे लगता है कि यह शायद क्रॉन नौकरी और बैश की कुछ पंक्तियों के साथ एक साथ scrobbled हो सकता है।

इस प्रणाली में, आपके पास कीपैयर के दो वर्ग हैं: डिवाइस कीपैयर तथा टाइमफ्रेम कीपर्स। एक डिवाइस कीपैयर प्रत्येक डिवाइस पर उपयोगकर्ता के लिए जेनरेट किया जाता है, और उस डिवाइस पर अपने जीवनकाल के लिए रहता है। ए टाइमफ्रेम कीपैयर नियमित अंतराल पर एक केंद्रीय सर्वर द्वारा उत्पन्न होता है (मासिक, दैनिक, प्रति घंटा - इस पर निर्भर करता है कि आप कितना पागल होना चाहते हैं)। सार्वजनिक कुंजी को सार्वजनिक रूप से घोषित किया जाता है (सर्वर के पास स्वयं के साथ साइन इन करने के लिए अपना डिवाइस कीपैयर होता है), और निजी कुंजी को प्रत्येक डिवाइस की सार्वजनिक कुंजी से एन्क्रिप्ट किया जाता है जिसका अर्थ यह है कि इस कुंजी तक पहुंच है। (यह वितरण यथासंभव निजी होना चाहिए, उदाहरण के लिए। डिवाइस सीधे सर्वर से कनेक्ट होते हैं।)

संदेशों पर हस्ताक्षर करने के लिए, आप जिस डिवाइस से संदेश भेज रहे हैं उसकी डिवाइस कुंजी का उपयोग करेंगे। अगर कोई आपको एक संदेश भेजना चाहता है, तो वे इसे आपके वर्तमान सार्वजनिक टाइमफ्रेम कुंजी से साइन कर सकते हैं। (उनके पास घोषणाओं को बनाए रखने के लिए एक स्वचालित प्रणाली होनी चाहिए।) फिर आप किसी भी डिवाइस से अपना संदेश पढ़ सकते हैं।

पुराने एन्क्रिप्टेड संदेशों को पढ़ने के लिए, पुराने टाइमफ्रेम कीपर्स का उचित उपकरण के अनुसार प्रत्येक डिवाइस पर बैक अप लिया जाता है (टाइमफ्रेम-कीपैयर-जेनरेटिंग सर्वर सहित, यदि आप चाहें तो फिर से, पैरानोआ के स्तर के आधार पर), जहां आपके पास एक और सेट है पुराने कुंजियों की रक्षा करने वाले पासवर्ड-सुरक्षित कीपैयर की (हालांकि समय के साथ कई पासवर्ड आपको याद रखने में सहज महसूस करते हैं)।

यदि कोई डिवाइस चोरी हो जाता है या अन्यथा समझौता किया जाता है, तो आप अपनी पहचान सत्यापित करने वाले सार्वजनिक रूप से हस्ताक्षरित संदेश बनाने के लिए अपने सार्वजनिक रूप से विश्वसनीय डिवाइसों में से किसी एक का उपयोग कर सकते हैं (किसी भी तरह से, उदाहरण के लिए। यह नोट करते हुए कि आप सार्वजनिक बैठक में होंगे और / या एक भरोसेमंद मित्र होने पर आपको व्यक्तिगत रूप से सत्यापित किया जाता है) और समझौता किए गए डिवाइस कुंजी को रद्द कर दिया जाता है और किसी भी टाइमफ्रेम कुंजी तक पहुंच होती है। कुंजी को निरस्त करते समय, आप सर्वर की विश्वसनीय डिवाइसों (पासवर्ड और आपकी विश्वसनीय डिवाइस कुंजी के साथ) से चुराए गए डिवाइस को भी हटा देते हैं।

नव-घोषित डिवाइस कुंजियों पर भरोसा करने की नीति को मौजूदा ट्रस्ट नीतियों जैसे कुछ का पालन करना चाहिए- मेरा मानना ​​है कि एक उचित नीति जनरेटिंग सर्वर, मोबाइल डिवाइस और एक बड़ी और भारी डिवाइस पर भरोसा करना है, क्योंकि इसे चोरी करना / घुसपैठ करना मुश्किल है उपयोगकर्ता के फोन से पहले एक समेकित हेस्ट में एक उपयोगकर्ता का फोन, एक डेस्कटॉप पीसी, और वीपीएस।

यदि आपके सर्वर से समझौता किया गया है, तो आप इसे किसी भी अन्य समझौता डिवाइस (संभावित रूप से एक नई डिवाइस जोड़ने के लिए एक मजबूत नीति के साथ) के लिए वर्णित उसी प्रक्रिया द्वारा निरस्त कर दें, और एक पुनः सुरक्षित या पूरी तरह से नए सर्वर का उपयोग करें (एक के साथ नया डिवाइस कीपैयर) आगे बढ़ रहा है।


8
2017-08-02 00:33



रद्द करने वाला अनुभाग लिखित रूप में थोड़ा बादल है - डिवाइस को निरस्त करना किसी भी अन्य डिवाइस से घोषणा के साथ संभव होना चाहिए (इसलिए अगर कोई आपके लैपटॉप को चुरा लेता है और आपका फोन सीधे सर्वर से संपर्क नहीं कर सकता है तो विफल नहीं होना चाहिए), लेकिन संभव नहीं है चोर द्वारा किया जाना चाहिए (इसलिए उपकरणों को निरस्तीकरण के लिए पासवर्ड-सुरक्षित कुंजी होना चाहिए)। विवादित रिपोर्ट की स्थिति में, किसी भी तृतीय पक्ष द्वारा मैन्युअल सत्यापन किए जाने तक सभी कुंजियों को अस्थायी रूप से अविश्वासित किया जाना चाहिए। - Stuart P. Bentley
वास्तव में, सलाह दी जा सकती है कि नियमित रूप से अपडेट किए गए एक मजबूत सार्वजनिक पासवर्ड का उपयोग करके कुंजी को निरस्त करने के लिए एक और तंत्र है, इस प्रकार, आप बिना किसी आधार के कुंजी को निरस्त कर सकते हैं कोई भी डिवाइस (कहें कि आप केवल अपने फोन के साथ बाहर हैं और कोई इसे चुरा लेता है), जब तक आप पासवर्ड को गुप्त रखते हैं। - Stuart P. Bentley