मैं GPG में RSA SSH कुंजी को _primary_ निजी कुंजी के रूप में कैसे आयात करूं?


16

मेरे पास वर्तमान में एक SSH कुंजी है जिसे मैंने कुछ समय के लिए उपयोग किया है और मैं एक नए कीरिंग के साथ GnuPG का उपयोग शुरू करना चाहता हूं। हालाँकि, यह देखते हुए कि मैंने उम्र के लिए अपनी कुंजी का उपयोग किया है, मैं अभी भी GPG में मुख्य / प्राथमिक कुंजी के रूप में उस कुंजी का उपयोग करना चाहूंगा। मैंने इन निर्देशों के माध्यम से कुंजी आयात करने की कोशिश की है ।

लेकिन, मैं एक "उपकुंजी" के रूप में माना जाता हूं। इसके अलावा, अगर मैं इसे मानक GPG कुंजी बनाए बिना आयात करने की कोशिश करता हूं, तो GPG इस उपकुंजी को नहीं देख सकता है। (मैं मान रहा हूं कि उपकुंजी को पहले मुख्य कुंजी द्वारा हस्ताक्षरित करने की आवश्यकता है।)

मैं इस कुंजी को secring.gpg के भीतर मुख्य कुंजी के रूप में कैसे उपयोग करूं?


" _Primary_ Private key " का क्या अर्थ है ?
MadHatter

जवाबों:


16

सरल उत्तर है: आप नहीं।

SSH चाबियाँ और GnuPG (वास्तव में, OpenPGP) कुंजी पूरी तरह से अलग हैं, भले ही दोनों प्रोटोकॉल RSA कुंजी जोड़े का उपयोग कर सकते हैं।

और इसके अलावा, आप इसे क्यों करना चाहेंगे? यहां तक ​​कि अगर आप अपनी पीजीपी कुंजी बनाने के लिए उसी महत्वपूर्ण सामग्री का उपयोग करने के लिए थे, तब भी आपको अपनी कुंजी को पीजीपी कुंजी के रूप में वितरित करने की आवश्यकता होगी। आप संभवतः अपने SSH सार्वजनिक कुंजी को उन लोगों के साथ वितरित नहीं कर रहे हैं जिनके साथ आप मेल खाते हैं, इसलिए एक महत्वपूर्ण वितरण बिंदु से कोई अंतर नहीं है: उन्हें आपसे सार्वजनिक कुंजी प्राप्त करने की आवश्यकता होगी। और यहां तक ​​कि अगर आप अपनी SSH सार्वजनिक कुंजी अन्य लोगों को वितरित कर रहे हैं, तो भी उन्हें अपने OpenPGP कार्यान्वयन में आयात करने में सक्षम होने के लिए कुछ अतिरिक्त कदम उठाने की आवश्यकता होगी, जो आसान हो सकता है या नहीं।

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

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

बिना किसी प्रोटोकॉल को विस्तार से देखे, मैं कल्पना करता हूं कि दोनों में समान कुंजी सामग्री का उपयोग किया जा रहा है।

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


यदि आपके गुप्त कीरिंग पर कई कुंजियाँ हैं और यह निर्दिष्ट करना चाहते हैं कि कौन सा डिफ़ॉल्ट रूप से उपयोग किया जाना चाहिए, default-keyऔर संभवतः default-recipient{,-self}अपने ~ / .gnupg / gnupg.conf में निर्देशों का उपयोग करें ।


1
मैं इस जवाब से सहमत हूं। हालांकि एक ही महत्वपूर्ण सामग्री का उपयोग नहीं करने का एक और कारण है। सुरक्षा कारणों से हस्ताक्षर की व्याख्या करने का केवल एक तरीका होना चाहिए। क्या एक ही हस्ताक्षर की दो अलग-अलग तरीकों से व्याख्या की जा सकती है, यह एक भेद्यता होगी। यहां तक ​​कि अगर ssh और gpg दोनों अपने आप से सुरक्षित हैं, तो एक विरोधी आपको एक संदेश के साथ हस्ताक्षर करने में धोखा दे सकता है और फिर हस्ताक्षर को दूसरे कार्यक्रम में ले जा सकता है, जहां इसका एक अलग अर्थ हो सकता है।
18

@kasperd अच्छा बिंदु। मैंने जवाब में संशोधन किया; अब आप इसके बारे में कैसा महसूस करते हैं?
एक CVn

यह अच्छा लगता है।
कैस्पर

1
मुझे लगता है कि यह उत्तर पूरी तरह से सही नहीं है: बंदरों के साथ एक यूसेफ है जहां आप अपनी निजी ओपनपीजीपी कुंजी में प्रमाणीकरण-केवल उपकुंजी के रूप में मौजूदा ओपनएसएसएच कुंजी चाहते हैं। कम से कम मैं इसे इस तरह इस्तेमाल करना चाहूंगा।
15:13 बजे user134450

ये चाबियां बिल्कुल अलग नहीं हैं; उनकी मेटाडेटा है
फू

5

आप SSH-Key को मंकीस्फेयर प्रोजेक्टpem2openpgp से टूल के साथ OpenPGP कुंजी में बदल सकते हैं । यह कुंजी तब gnupg द्वारा एक नियमित निजी / सार्वजनिक कुंजी जोड़ी के रूप में आयात की जा सकती है। जैसा कि अन्य उत्तर में उल्लेख किया गया है, यह आमतौर पर एक अच्छा विचार नहीं है क्योंकि ssh के पास प्रमाणपत्रों की कोई अवधारणा नहीं है, इसलिए आप प्रभावी रूप से एक मौजूदा कुंजी की क्षमता जोड़ रहे हैं जो पहले नहीं हो सकती थी। यह आमतौर पर क्रिप्टोग्राफी में एक नो-गो है।

मैंने इसे वैसे ही अपनी ssh कीज़ में से एक के साथ किया था, लेकिन मैंने एक उपकुंजी के रूप में अपनी अन्य OpenPGP कुंजी में मुख्य जोड़ी को जोड़ा, जिसमें केवल एक ही क्षमता ध्वज है: प्रमाणीकरण। यह ध्वज इस तरह की स्थितियों के लिए है, जहाँ आप किसी कुंजी जोड़ी ( gnupg के लिए अर्थ --encryptऔर --signविकल्प) के साथ कुछ भी साइन या एन्क्रिप्ट नहीं करना चाहते हैं, लेकिन आप इसे OpenSSH और gnupg- एजेंट के साथ प्रमाणीकरण के लिए अपने की-बॉक्स में रखना चाहते हैं।

अधिक जानकारी के लिए बंदर के दस्तावेज़ देखें।


2

Gpg में आयात करने के लिए नियमित PKCS- प्रारूप कुंजी को परिवर्तित करने के अच्छे कारण हो सकते हैं।

उदाहरण के लिए, यदि आप इसे स्मार्ट कार्ड पर रखना चाहते हैं। Gpg अपने कार्ड-सूचना और कार्ड-एडिट कमांड के साथ सुविधाएं प्रदान करता है, इस उद्देश्य के लिए बहुत सहायक हैं, तो इसे एक उपकरण के रूप में उपयोग क्यों न करें? केवल एक बाधा पर आने की जरूरत है ... वास्तव में: मानक PKCS # 8 प्रारूप (या "कच्चे" RSA PKCS # 1 प्रारूप) से कुंजी को आयात करना आगे की प्रक्रिया के लिए gpg कुंजी स्टोर में।

तो - अनुमोदित उत्तर पर मेरी आपत्ति पर ध्यान दें! :)

इस तरह के प्रश्न का वास्तव में उपयोगी उत्तर यहां पाया जाता है: /unix/276317/how-can-i-import-a-key-in-pem-format-not-openpgpint-into -gpg


1

इसका उपयोग Ubuntu 16.04 या Windows WSL पर करें।

sudo apt install -y monkeysphere
cat key.pem | PEM2OPENPGP_USAGE_FLAGS=authenticate pem2openpgp "Key <key@example.com>" > key.pgp

आयात कार्ड। विंडोज या लिनक्स पर किया जा सकता है।

gpg --import key.gpg

कार्ड पर ले जाएं

प्रमुख हस्ताक्षर पहचानकर्ता का पता लगाएं।

gpg --list-key

कार्ड के लिए प्रमाणीकरण कुंजी ले जाएँ

gpg --edit-key FFFFFFFFFFF
keytocard

प्रमाणीकरण स्लॉट के लिए एक नंबर का चयन करें।

आप यहाँ कर रहे हैं।

यदि आप कार्ड का उपयोग कर रहे हैं, तो जीपीजी कीचेन से कुंजी को हटाना याद रखें। ऊपर से मुख्य पहचानकर्ता का उपयोग करें।

gpg --delete-secret-key FFFFFFFFFFF

विविध

जरूरत नहीं है, लेकिन पाठ आधारित pgp प्रारूप में एक कुंजी प्राप्त करने के लिए उपयोगी हो सकता है।

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